Comparación de sesiones de creación de perfiles en XHProf Admin

El artículo habla sobre una herramienta conveniente para comparar sesiones para perfilar código PHP, lo que hizo posible encontrar rápidamente cuellos de botella en el proyecto en CMS Bitrix.


Desde lejos


En julio, Bitrix se actualizó a la última versión en ese momento ... Y la velocidad de carga de la página se redujo: en algún lugar en un 20%, en algún lugar en un 300 +%. Especialmente en las etapas de pedido del cliente.


Los números son impresionantes y tristes. ¿Por qué actualizado?


N | Sólido


Es decir existía el riesgo de que si no actualizábamos, tendríamos que resolver dos problemas a la vez: actualizar Bitrix y actualizar nuestra base de código a PHP> 7.1.


Motivo de los frenos.


La razón de los frenos más grandes, como resultó, es la nueva lógica de código para trabajar con perfiles de entrega. Según el código, lo hicieron más correctamente, o algo así: los envíos aparecieron como entidades separadas. Ahora el pedido se puede enviar en varios envíos (con sus propias características en términos de costo, método de entrega y composición de los bienes).


Sin embargo, ahora el perfil de entrega es una entrada separada en la base de datos con sus limitaciones del núcleo de Bitrix, que aparecerá cada vez que necesite verificar la posibilidad de mostrar este perfil al realizar un pedido.


En general, el artículo se centrará no en qué se rehizo exactamente para hacer frente a los frenos, sino en una herramienta que hizo posible encontrar rápidamente cuellos de botella en el código y corregirlos.


XHProf Admin


A nuestra disposición estaba un popular perfilador de Facebook: XHProf. Las desventajas que inhiben el funcionamiento de la herramienta se relacionan con su GUI:


  • Falta de navegación clara entre sesiones de creación de perfiles
  • Incapacidad para comparar más de dos sesiones simultáneamente fuera del mismo espacio de nombres.
  • No puede hacer comentarios sobre ellos en la lista de sesiones. Después de la décima sesión, ya olvidas con qué cambios están relacionados los resultados de perfiles anteriores.

Como resultado, mirando las FUENTES de la GUI nativa de XHProf y, un poco horrorizado, se escribió una nueva GUI para cubrir las desventajas anteriores.


Instalación


Enlace al proyecto


No describiré cómo instalar XHProf y el perfil, hay al menos algunos buenos tutoriales en Habré.


Para instalar XHProf Admin, coloque la carpeta xhprof_admin en la carpeta xhprof_html del XHProf nativo. O clone todo el proyecto (ya contiene XHProf y la nueva GUI).


Luego abra la página <Ruta de acceso a xhprof> / xhprof_html / xhprof_admin /
Si la asignación está habilitada, como se recomienda en la documentación, debe abrir <Ruta de acceso a xhprof> / xhprof_admin /


Página de inicio


N


Contiene:


  • Listar todas las sesiones de creación de perfiles ordenadas por fecha
  • Campos de comentario de sesión
  • Grajillas con las que puede seleccionar sesiones para eliminar, comparar, agregar
  • Enlace a un nuevo informe
  • Enlaces a informes nativos y callgraph
  • Campos de ponderación de sesión para diferencia y agregado
  • Un campo que especifica la secuencia en la que se mostrarán las sesiones en modo Comparar y también en modo Dif.
  • Botones:
    • Comparar: compara las sesiones seleccionadas (nuevo informe)
    • Diff: un informe estándar para comparar sesiones en un espacio de nombres
    • Agregado: informe estándar con agregación de sesión en un espacio de nombres
    • Guardar comentarios personalizados: guarda el comentario para la sesión (en un archivo separado)
    • Eliminar ejecuciones seleccionadas: elimina archivos de sesión y archivos de comentarios
    • Enlace a la página de listado de sesión nativa

Ver el informe original, las ejecuciones de diferencias, las ejecuciones de agregados, ver el gráfico de llamada - características nativas de la GUI XHProf - No las describiré. Solo puedo decir que XHProf Admin le permite navegar cómodamente hasta ellos, en lugar de compilar enlaces manualmente.


Comparar carreras


N | Sólido


Un nuevo informe que le permite evaluar rápidamente el crecimiento o la regresión en la productividad.
Para usarlo, en la página principal:


  • Seleccione las sesiones que queremos comparar.
  • Establecemos el campo de clasificación "Ordenar" para determinar el orden en que se muestran las sesiones: cuanto menor sea el valor del campo, antes se mostrará la sesión. La primera sesión se tomará como la base; todas las sesiones posteriores se compararán con ella.
  • Si queremos mostrar los valores promedio de las métricas, marque "mostrar promedio".
  • Haz clic en "Comparar".
    N | Sólido

El informe no muestra el% que la función "ocupa" para cada métrica para no saturar la página, pero muestra valores absolutos. Si hay una diferencia de más del 1% en la métrica para la función que se perfila entre la sesión base y la siguiente, esto se muestra claramente: el verde indica mejoría, el rojo indica regresión.


Por defecto:


  • El informe muestra las primeras 100 funciones. Si necesita más, haga clic en "mostrar todo".
  • Los datos se ordenan por "Incl. Wall Time (microsec) ", pero puede hacer clic en cualquier métrica y ordenar por ella.

Para excluir una sesión del informe, haga clic en "excluir".


La clasificación por cada métrica está disponible; solo haga clic en el encabezado de la columna.


Para mostrar los valores promedio de todas las sesiones seleccionadas, haga clic en "Mostrar valores promedio".


Para profundizar en una función, puede hacer clic en una celda en la intersección de la función y la métrica con la sesión que se muestra.


N | Sólido


Ejemplo de uso


  1. Comenzamos el perfilador en el código fuente. Abrimos la lista de sesiones y le agregamos un comentario.
  2. Comenzamos el perfilador en el código mejorado. También agregó un comentario.
  3. Hice el artículo 2 varias veces.
  4. Luego abrimos la lista de sesiones de creación de perfiles, seleccionamos secuencialmente todas las sesiones y hacemos clic en Comparar.
  5. Nos fijamos en los cambios.
  6. Decidieron qué más acelerar.

XHProf Admin se usa convenientemente para identificar funciones pesadas de uso común que realiza un solo usuario. Por ejemplo, en Bitrix, al realizar un pedido al pasar de una etapa a otra (entrega, pago, contactos, etc.) cada vez que se invocan varias funciones para controlar la integridad de la cesta, etc. Estas etapas se perfilan por separado y luego se muestran juntas en el informe Comparar Los resultados de estas funciones se pueden almacenar en caché, acelerando significativamente el tiempo de transición de etapa a etapa.


Resumen


Como resultado, nivelamos la caída de velocidad en las etapas de hacer un pedido al actualizar Bitrix, analizando simultáneamente otras secciones del sitio y acelerándolas.
De vez en cuando usamos XHProf Admin en proyectos como una GUI más intuitiva.
Enlace de documentación a XHProf Admin: ir


Quien esté interesado en el tema de optimización de código y herramientas para esto, escriba en los comentarios.

Source: https://habr.com/ru/post/478858/


All Articles