Guía de desarrollo de la guía

Descubre el asesino de rendimiento

Optimizar el rendimiento de los servicios en línea es un trabajo casi supersticioso. Un grupo de programadores se enfrentó a un montón de código ininteligible y adivinaron entre sí si la otra parte había utilizado la CPU. Pase mucho tiempo grabando registros, revise los registros masivos día y noche, tratando de encontrar asesinos de rendimiento.

Con fibjs, sin embargo, todo esto se volverá simple. Debido a que fibjs tiene un potente soporte de perfil de CPU y memoria, y es muy fácil de usar.

Registro de registro

El inicio de fibjs cpu profiler es muy simple, puede agregar la opción --prof al inicio. El intervalo de registro predeterminado es de 1000 ms. A medida que avanza la optimización, deberá analizar los registros con mayor precisión. En este momento, puede usar --prof-interval establecer el intervalo. El siguiente ejemplo registra el registro de trabajo de fibjs cada 10 ms.

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

Procesando registros

Después de que la operación finaliza normalmente o el proceso finaliza con ctrl_c, se generará un archivo de registro en el directorio actual con el nombre de archivo fibjs-xxxx.log . En este momento, puede usar --prof-process procesar el registro generado:

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

Al final de la operación, abra prof.svg con un navegador para ver el gráfico de llama de este registro: prof Puede hacer clic para ver la imagen a tamaño completo En la imagen a tamaño completo, puede usar el mouse para ver información más detallada: prof.svg .

Interpretación de la carta de llamas

El gráfico de llama generado, cada bloque de color, representa un punto de grabación, cuanto más largo sea el bloque de color, más veces se registra; cada línea representa una pila de llamadas, cuanto mayor sea el número de capas, mayor será el número de llamadas; La pila se coloca al revés. Cuanto más bajo sea el bloque de color, mayor será la función original.

Hay dos tipos de bloques de color, uno es rojo y el otro es azul. En el generador de perfiles de fibjs, el rojo representa operaciones de JavaScript y el azul representa operaciones io u operaciones nativas. Dependiendo del problema que necesite resolver, las áreas en las que debe enfocarse serán diferentes. Por ejemplo, si necesita resolver el problema del uso elevado de la CPU, debe prestar atención a los bloques de color rojo. Si su aplicación no tiene un uso elevado de la CPU, pero la respuesta es lenta, debe prestar atención a los bloques de color azul. Cuanto más grande sea el parche de color cerca de la parte superior, más importante es enfocar y optimizar.