IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

NodeJS Discussion :

Analyse d'un fichier core pour débugger le plantage du serveur nodejs


Sujet :

NodeJS

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2017
    Messages : 9
    Points : 8
    Points
    8
    Par défaut Analyse d'un fichier core pour débugger le plantage du serveur nodejs
    Bonjour

    j'utilise une application web qui se connecte à un serveur de websocket lequel se connecte à un socket envoyant des données à l'application.
    lorsque le volume de ces données dépasse un certain seuil le serveur s'arrête avec un message du type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <error>
    FROM
    ./wsgateway.sh: line 5: 26573 Trace/breakpoint trap   (core dumped) node --abort-on-uncaught-exception wsgateway.js
    en lancant la commande gdb sur le fichier core généré j'obtiens les informations suivantes (soit gdb core.26573) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    GNU gdb (GDB) Red Hat Enterprise Linux (7.2-90.el6)
    Copyright (C) 2010 Free Software Foundation, Inc.
    License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
    This is free software: you are free to change and redistribute it.
    There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
    and "show warranty" for details.
    This GDB was configured as "x86_64-redhat-linux-gnu".
    For bug reporting instructions, please see:
    <http://www.gnu.org/software/gdb/bugs/>...
    Missing separate debuginfo for the main executable file
    Try: yum --enablerepo='*-debug*' install /usr/lib/debug/.build-id/b8/192db8bcb204bad5c24a8ccca2ef934f1322cd
    [New Thread 26573]
    [New Thread 26574]
    [New Thread 26576]
    [New Thread 26577]
    [New Thread 26578]
    [New Thread 26579]
    Core was generated by `node --abort-on-uncaught-exception wsgateway.js'.
    Program terminated with signal 5, Trace/breakpoint trap.
    #0  0x0000000000826fce in ?? ()
    "/opt/MTRGcats/bin/core.26573" is a core file.
    Please specify an executable to debug.
    (gdb)
    j'ai essayé, sans succès, de faire le "yum --enablerepo='*-debug*' install /usr/lib/debug/.build-id/b8/192db8bcb204bad5c24a8ccca2ef934f1322cd"

    comment puis-je analyser le fichier core pour diagnostiquer le problème ?

    merci d'avance

    Jean-Marie

  2. #2
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2017
    Messages : 9
    Points : 8
    Points
    8
    Par défaut Maximum call stack size exceeded
    au lieu de nous focaliser sur le fichier core nous avons fait des tests en utilisant l'option debug soit :

    node debug wsgateway.js

    une autre erreur s'est alors produite :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    < /usr/lib/node_modules/socket.io/node_modules/engine.io/lib/socket.js:117
    < Socket.prototype.onError = function (err) {                       ^
    < RangeError: 
    < Maximum call stack size exceeded
    program terminated
    nous en avons déduit que l'application web cliente ne traite pas suffisamment rapidement les données provenant du websocket
    en conséquence nodejs doit sûrement "empiler" les données à transmettre jusqu'à dépasser une limite (par défaut stack_size = 984 kBytes)

    nous avons étudié pour l'instant 2 solutions pour résoudre ce problème:
    1- augmenter stack_size (en option au lancement de l'application serveur) mais il semble qu'il ne faille pas dépasser une certaine limite...
    2- temporiser l'envoi des données au client avec un setTimeout
    ainsi à chaque donnée reçue du socket TCP/IP, cette donnée est retransmise au client par le websocket avec un setTimeout de 500 ms par exemple.
    pour l'instant l'erreur "Maximum call stack size exceeded" ne s'est pas reproduite

    mais dans le cas de la solution 2 reste à vérifier que les événements sont bien traités séquentiellement

    s'il y a une autre solution nous sommes preneurs

    Jean-Marie

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2017
    Messages : 9
    Points : 8
    Points
    8
    Par défaut Maximum call stack size exceeded
    finalement le problème a été résolu en installant une version récente de nodejs (la 8)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] Créer un fichier csv pour l'envoyer sur un serveur FTP
    Par shaun_the_sheep dans le forum C#
    Réponses: 8
    Dernier message: 18/11/2015, 16h13
  2. [XML] Analyse du fichier complet pour avoir un tableau
    Par kenji33 dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 16/05/2010, 09h12
  3. Plusieurs fichiers physiques pour un seul dans l'analyse
    Par Gaetch dans le forum HyperFileSQL
    Réponses: 1
    Dernier message: 18/09/2008, 02h33
  4. [Oracle 8i/Fichier de log] - fichier log pour analyse erreur
    Par shaun_the_sheep dans le forum Oracle
    Réponses: 4
    Dernier message: 25/01/2005, 19h06
  5. [débutant]ou mettre un fichier java pour une appli jsp?
    Par zozolh2 dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 11/05/2004, 15h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo