Atopar o asasino do rendemento
A optimización do rendemento dos servizos en liña é unha tarefa case supersticiosa. Un grupo de programadores enfrontouse a moito código incomprensible e adiviñaron se a outra parte estaba a usar toda a CPU. Pasa moito tempo gravando rexistros, mirando a través de rexistros masivos día e noite, intentando atopar o asasino do rendemento.
Non obstante, usando fibjs, isto será doado. Porque fibjs ten un poderoso soporte de CPU e perfilador de memoria, e é moi cómodo de usar.
rexistro
Iniciar o perfilador da CPU en fibjs é moi sinxelo, só tes que engadir opcións ao iniciar --prof
. O intervalo de rexistro predeterminado é de 1000 ms. A medida que a optimización se afonda, terás que analizar os rexistros con maior precisión. Neste caso, podes usar para --prof-interval
establecer o intervalo. O seguinte exemplo rexistra o rexistro de traballo fibjs cada 10 ms.
1fibjs --prof --prof-interval=10 main.js
Procesando rexistros
Despois de que a operación remate normalmente, ou de usar ctrl_c para finalizar o proceso, xerarase un ficheiro de rexistro no directorio actual. O nome do ficheiro é fibjs-xxxx.log
. Neste momento, pode usar --prof-process
para procesar o rexistro xerado:
1fibjs --prof-process fibjs-xxxx.log prof.svg
Despois de completar a operación, use o navegador para abrir prof.svg para ver o gráfico de chamas deste rexistro: pode facer clic para ver a imaxe a tamaño completo. Na imaxe a tamaño completo, pode usar o rato para ver máis detalles. información: prof. svg .
Interpretación do diagrama de chama
No gráfico de chama xerado, cada bloque de cores representa un punto de gravación. Canto máis longo sexa o bloque de cores, máis veces se rexistra; cada liña representa unha capa de pila de chamadas e cantas máis capas, máis capas se chaman; chamadas A pila colócase boca abaixo. Canto máis baixo sexa o bloque de cores, máis orixinal será a función.
Hai dous tipos de bloques de cores, un é vermello e outro azul. No perfilador fibjs, o vermello representa operacións JavaScript e o azul representa operacións io ou operacións nativas. Dependendo do problema que necesites resolver, as áreas nas que debes centrarte variarán. Por exemplo, se necesitas resolver o problema do uso elevado da CPU, debes prestar atención aos bloques de cor vermella.Se a túa aplicación ten un uso baixo da CPU pero unha resposta lenta, debes prestar atención aos bloques de cor azul. Canto maior sexa o bloque de cores preto da parte superior, máis atención e optimización precisa.