Guía de desarrollo de guías

Encuentra al asesino del 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 el otro lado estaba usando toda la CPU. Dedique mucho tiempo a grabar registros, hojear los registros masivos día y noche, tratando de encontrar el asesino del rendimiento.

Sin embargo, con fibjs, todo esto se simplificará. Porque fibjs tiene un potente soporte de perfilador de memoria y cpu, y es muy conveniente de usar.

Iniciar sesión

Fibjs es extremadamente simple para iniciar el generador de perfiles de la CPU, simplemente agregue la opción --prof al iniciar. El intervalo de registro predeterminado es 1000ms. Con la profundización de la optimización, deberá analizar los registros con mayor precisión. En este momento, puede utilizar --prof-interval establecer el intervalo. En el siguiente ejemplo, el registro de trabajo de fibjs se registra cada 10 ms.

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

Registro de procesamiento

Después de que la operación finalice normalmente, o el proceso finalice 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

Después de ejecutarlo, abra prof.svg con un navegador para ver el diagrama de llama 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 registro. Cuanto más largo es el bloque de color, más veces se ha registrado, cada fila representa una capa de pila de llamadas, y cuantas más capas, más capas se llaman; La ubicació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 color, uno es rojo y el otro es azul. En el generador de perfiles de fibjs, el rojo representa las operaciones de JavaScript y el azul representa las operaciones de io u operaciones nativas. Dependiendo del problema que necesite resolver, el área en la que debe concentrarse será diferente. Por ejemplo, si necesita resolver el problema de la alta ocupación de cpu, debe prestar atención al bloque de color rojo en este momento; y si su aplicación tiene una baja ocupación de 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 debe preocuparse y optimizarse.