NodeJS -Mettre en place un profileur NodeJS
23 janv. 2018
Suite à des explosions de CPU sur mon serveur NodeJS j'ai mis en place un profileur pour analyser le problème.
Pour cela il n'y a pas besoin d'installer de librairie, le profiler est intégré à NodeJS depuis la version 5.10.1.
Un fichier de log sera crée dans le dossier où est placé server.js avec comme nom isolate-xxxxx-v8.log où xxxxx est un numéro généré.
Pour visualiser les logs il faut utiliser l'outil prof-process fourni par NodeJS afin d'analyser ce fichier.
Dans ce fichier il y a un [Summary] et on obtient ce genre de résumé :
On se rend compte que C++ à un problème (normal je vous explique après), il faut se reporter à cette section et en haut de la pile on trouve l'origine problème.
Ce champ C++ correspond aux temps que passe NodeJS à transformer le JS en C++.
En effet NodeJS utilise le moteur V8 écrit par Google pour Chrome, faisant ainsi de la compilation JIT (Just In Time). C'est à dire qu'il génère un bytecode qui sera appelé par le programme lors de l'execution. Pour plus d'info allez voir le wiki
Attention si vous laissez le profiler tourner longtemps, le fichier va grossir jusqu'à remplir votre disque...
blog comments powered by Disqus
Pour cela il n'y a pas besoin d'installer de librairie, le profiler est intégré à NodeJS depuis la version 5.10.1.
Un fichier de log sera crée dans le dossier où est placé server.js avec comme nom isolate-xxxxx-v8.log où xxxxx est un numéro généré.
Pour visualiser les logs il faut utiliser l'outil prof-process fourni par NodeJS afin d'analyser ce fichier.
Dans ce fichier il y a un [Summary] et on obtient ce genre de résumé :
On se rend compte que C++ à un problème (normal je vous explique après), il faut se reporter à cette section et en haut de la pile on trouve l'origine problème.
Ce champ C++ correspond aux temps que passe NodeJS à transformer le JS en C++.
En effet NodeJS utilise le moteur V8 écrit par Google pour Chrome, faisant ainsi de la compilation JIT (Just In Time). C'est à dire qu'il génère un bytecode qui sera appelé par le programme lors de l'execution. Pour plus d'info allez voir le wiki
Attention si vous laissez le profiler tourner longtemps, le fichier va grossir jusqu'à remplir votre disque...