Guía de desarrollo de la guía

Encuentra al asesino de rendimiento

La optimización del rendimiento de los servicios en línea es casi supersticiosa. Un grupo de programadores se enfrentó a una gran cantidad de código incomprensible y adivinó si la otra parte estaba usando toda la CPU. Pase mucho tiempo grabando registros, hojeando los registros masivos día y noche, tratando de encontrar al asesino de rendimiento.

Sin embargo, con fibjs, todo esto se volverá más simple. Debido a que fibjs tiene un potente soporte de perfil de CPU y memoria, y es muy conveniente de usar.

Iniciar sesión

Fibjs es extremadamente simple para iniciar el perfilador de la CPU, solo agregue la opción --prof al iniciar. El intervalo de registro predeterminado es de 1000 ms. Con la profundización de 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 registro

Después de que la operación finaliza normalmente, o el proceso se termina con ctrl_c, se generará un archivo de registro en el directorio actual, el nombre del archivo es 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 diagrama de llamas de este registro: profe 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 del diagrama de llama

En 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 ha grabado; cada fila representa una capa de pila de llamadas, y cuantas más capas, más capas se llaman; La colocación de la pila se invierte, cuanto más bajo es el bloque de color, mayor es la función original.

Hay dos tipos de bloques de colores, 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, el área en la que debe enfocarse será diferente. Por ejemplo, si necesita resolver el problema de la alta ocupación de la CPU, debe prestar atención al bloque de color rojo en este momento; y si su aplicación tiene una baja ocupación de la CPU, pero la respuesta es lenta, debe prestar atención al bloque de color azul. Cuanto más grande sea el bloque de color cerca de la parte superior, más importante será preocuparse y optimizarse.