Guide de développement de guide

Trouvez le tueur de performances

L'optimisation des performances des services en ligne est presque superstitieuse. Un groupe de programmeurs a été confronté à une grande quantité de code incompréhensible et a deviné si l'autre partie utilisait tout le processeur. Passez beaucoup de temps à enregistrer des journaux, à parcourir les journaux massifs jour et nuit, à essayer de trouver le tueur de performances.

Cependant, avec fibjs, tout cela deviendra plus simple. Parce que fibjs a un puissant support de processeur et de profileur de mémoire, et qu'il est très pratique à utiliser.

Journal

Fibjs est extrêmement simple pour démarrer le profileur cpu, il suffit d'ajouter l'option --prof au démarrage. L'intervalle de journalisation par défaut est de 1 000 ms. Avec l'approfondissement de l'optimisation, vous devrez analyser les journaux avec une plus grande précision. À ce --prof-interval , vous pouvez utiliser --prof-interval définir l'intervalle. L'exemple suivant enregistre le journal de travail de fibjs toutes les 10 ms.

1
fibjs --prof --prof-interval=10 main.js

Journal de traitement

Une fois l'opération terminée normalement ou le processus terminé avec ctrl_c, un fichier journal sera généré dans le répertoire actuel, le nom du fichier est fibjs-xxxx.log , à ce fibjs-xxxx.log , vous pouvez utiliser --prof-process traiter le journal généré:

1
fibjs --prof-process fibjs-xxxx.log prof.svg

A la fin de l'opération, ouvrez prof.svg avec un navigateur pour visualiser le diagramme de flamme de ce journal: prof Vous pouvez cliquer pour afficher l'image en taille réelle. Dans l'image en taille réelle, vous pouvez utiliser la souris pour afficher des informations plus détaillées: prof.svg .

Interprétation du diagramme de flamme

Dans le graphique de flamme généré, chaque bloc de couleur représente un point d'enregistrement. Plus le bloc de couleur est long, plus il a été enregistré, chaque ligne représente une couche de pile d'appels, et plus il y a de couches, plus de couches sont appelées; Le placement de la pile est inversé, plus le bloc de couleur est bas, plus la fonction d'origine est importante.

Il existe deux types de blocs de couleur, l'un est rouge et l'autre est bleu. Dans le profileur de fibjs, le rouge représente les opérations JavaScript et le bleu les opérations io ou les opérations natives. Selon le problème que vous devez résoudre, le domaine sur lequel vous devez vous concentrer sera différent. Par exemple, si vous devez résoudre le problème de l'occupation élevée du processeur, vous devez faire attention au bloc de couleur rouge à ce stade; et si votre application, l'occupation du processeur n'est pas élevée, mais la réponse est lente, vous devez faire attention au bloc de couleur bleu. Plus le bloc de couleur près du haut est grand, plus il doit être concerné et optimisé.