Entorno
Experience Manager 6.5
Problema/Síntomas
Adobe Experience Manager (AEM) request.log
contiene información útil como, por ejemplo, el tiempo de respuesta, para analizar los problemas de rendimiento. A continuación se muestra una lista de ejemplos de análisis que utilizan comandos Linux (incluidos algunos comandos externos).
Tabla de contenido:
Introducción El formato de request.log
Pasos de preparación
Ejemplos de análisis
Conclusión
Introducción
El formato de request.log
AEM 6.5 genera request.log en el siguiente formato de forma predeterminada. Debido a una limitación del sistema, las líneas de comandos de este artículo se muestran como imágenes en lugar de texto sin formato.
Ejemplo de request.log:
En este artículo, me refiero a una línea con "-" como "registro de solicitud". Una línea con "-" es un "registro de respuesta".
Registro de solicitud Cuando AEM recibe una solicitud, se registra un registro de solicitud. Contiene la fecha y la hora de recepción, el ID de solicitud, el método de solicitud y la dirección URL.
Registro de respuestas Cuando AEM responde a una solicitud, se registra un registro de respuestas. Contiene la fecha y la hora de respuesta, el ID de solicitud, el código de estado, el Tipo de contenido y el tiempo de respuesta (en milisegundos).
Consulte también el manual correspondiente: https://experienceleague.adobe.com/docs/experience-manager-65/deploying/configuring/monitoring-and-maintaining.html?lang=es#interpreting-the-request-log
Pasos de preparación:
Paso 1. Limpieza de datos
Antes de sumergirse en el análisis de request.log, es importante estandarizar los registros de registro.
El primer comando sed elimina un espacio adicional en Content-Type de registros de respuesta para evitar una separación de campos incorrecta con el espacio en blanco. El comando ruby convierte el formato de fecha a ISO 8601. El comando ruby también separa la fecha y la hora con espacio en blanco en lugar de dos puntos.
Paso 2. Hora de reinicio
Al reiniciar AEM y una instalación de Service Pack se restablece el ID de solicitud de request.log. Los registros de solicitud con ID de solicitud = 0 indican que podría haber este tipo de operaciones.
En el ejemplo anterior, los ID de solicitud se restablecieron a 0 a las 13:08:49 y 13:26:13.
Paso 3. Número de accesos por hora
Cuente el número de accesos por hora y el intervalo de tiempo de request.log.
Paso 4. Máximo procesamiento simultáneo
El número de procesamiento simultáneo ayuda a adivinar la carga del servidor de AEM.
De forma predeterminada, el número máximo de conexiones simultáneas para Jetty en AEM está establecido en 200. Se produce un retraso en la liberación del socket después de completar la respuesta. Cuando el número de procesos simultáneos supera los 170 aproximadamente, no puede aceptar nuevas solicitudes.
Paso 5. Dividir un archivo de registro
El ID de solicitud de request.log se restablece cuando se reinicia AEM o se instala un Service Pack. Debido a este comportamiento, el análisis puede ser incorrecto cuando un request.log contiene estas operaciones. Para realizar un análisis preciso y reducir el tamaño de archivo que se gestiona a la vez, divida el archivo request.log usando registros de solicitud con el ID de solicitud = 0.
Paso 6. Combinación de registros de solicitud y registros de respuesta
La combinación de registros de solicitud y respuesta por ID de solicitud facilita la identificación cuando se inician problemas de rendimiento. Utilizaré este archivo de registro combinado en los ejemplos posteriores.
El último comando sed agrega una respuesta ficticia a los registros de solicitud que no tienen un registro de respuesta correspondiente. También puede haber registros de respuesta sin registros de solicitud. Pero son ignorables pues normalmente no son un tema de investigación.
El archivo de registro combinado debe tener este aspecto:
Ejemplos de análisis
Ejemplo 1. Los accesos más intensos
Ordene el archivo de registro combinado por tiempo de respuesta en orden descendente, incluidos los accesos sin respuesta.
Ejemplo 2. Accede a la respuesta que falta
Extraer obtiene acceso sin sus registros de respuesta correspondientes usando el tiempo de respuesta ficticio.
Si el tiempo de recepción de accesos sin respuesta está correlacionado con un aumento en la carga del servidor, estos accesos pueden haber desencadenado problemas de rendimiento.
Ejemplo 3. Acceso lento
Extraer accesos que tardaron más de 10 segundos.
Cuando el número de visitas sea demasiado alto, reemplace 0-9{5} con 0-9{6} en el comando grep para reducir a accesos que tardaron más de 100 segundos.
Ejemplo 4. Datos de series temporales del tiempo de respuesta
Para crear gráficos, resulta útil extraer únicamente la marca de tiempo y el tiempo de respuesta de los datos.
Omitir los accesos que respondieron inmediatamente hace que los datos sean más eficientes. El siguiente ejemplo extrae el acceso que tardó más de un segundo.
Ejemplo 5. Mínimo, media (media), mediana, tiempo de respuesta máximo
El ejemplo anterior utiliza el comando datamash (https://www.gnu.org/software/datamash/) para el procesamiento estadístico. Si el registro contiene accesos sin respuesta, el valor ficticio influirá en el resultado.
Ejemplo 6. Número de accesos por periodo
Cuente el número de accesos por diez minutos. El resultado ayuda a determinar si el tráfico grande provocó un problema de rendimiento.
El siguiente ejemplo reduce los datos a solicitudes de POST solamente. Un caso de uso típico es determinar si hay una concentración de creación o replicación de contenido en el nivel de publicación.
Ejemplo 7. Número de estados de respuesta por periodo
Cree una tabla del número de cada estado de respuesta por diez minutos con el comando datamash.
Ejemplo 8. Direcciones URL más frecuentes
Imprima las tres URL más visitadas a las que se accedió con mayor frecuencia cada diez minutos.
Ejemplo 9. access.log registra un registro request.log
Busque en access.log registros que correspondan a un ID de solicitud determinado.
Si se produjeron varios accesos a la misma dirección URL al mismo tiempo, el resultado muestra varios registros access.log para un único ID de solicitud.
Conclusión
Espero que los ejemplos de este artículo le ayuden a analizar sus problemas de rendimiento.
Los ejemplos enumerados han sido probados en CentOS 7.5 y Ubuntu 22.04LTS, pero es posible que no funcionen según lo esperado en función de su entorno, como versiones diferentes o variaciones de los comandos. Por favor, ajústelas a los comandos instalados en su entorno.