2010-10-07 20 views
11

Si una página tarda más de un par de segundos en procesarse, me gustaría que Apache la registre en alguna parte. es posible? Tengo muchos sitios, por lo que estaba buscando una forma automática de hacerlo en lugar de un código propietario para cada sitio.¿Hay alguna manera de que Apache log logre slow requests?

Respuesta

21

Eche un vistazo a http://httpd.apache.org/docs/2.2/mod/mod_log_config.html. Puede configurar un registro personalizado que incluya el tiempo necesario para atender la solicitud.

Por ejemplo:

LogFormat "%h %l %u %t \"%r\" %>s %b %D" common-time 

añadiría el tiempo en microsegundos que se tardó en atender la solicitud como el último campo de su archivo de registro.

Se podría añadir que la línea a su httpd.conf, a continuación, en cada host virtual donde desea usarlo, agregue esta línea:

CustomLog logs/access_log_time common-time 

También puede crear un nuevo LogFormat que contiene sólo exactamente lo que desee, tal como esto:

LogFormat "\"%r\" %D" measure-time 

En su host virtual, puede tener múltiples registros, lo que podría tener:

CustomLog logs/access_log common 
CustomLog logs/access_log_time measure-time 

Dicho todo esto, hay una gran advertencia . Esto solo medirá el tiempo que le lleva al servidor atender la página. Es no incluir el tiempo que lleva ejecutar cualquier javascript en el navegador. Si necesita medir el tiempo de ejecución de javascript, necesitará usar una herramienta como firebug.

Una vez que tenga el registro, puede usar algo como apachelog para analizar el archivo de registro y obtener solo las solicitudes que tomaron más tiempo que el umbral que desea usar.

No estoy seguro si es posible registrar solo las solicitudes largas y sin embargo el paso de análisis sintáctico. Podría ser, pero tengo la sensación de que requeriría una gran cantidad de trabajo.

+0

¿Hay alguna consecuencia de usar esto en el archivo de registro? Por ejemplo, ¿hay una sobrecarga adicional en el cálculo del tiempo de respuesta antes de escupir una línea de registro? – laughingbovine

+1

Puede haber gastos generales, pero creo que debe tener un tráfico bastante importante antes de que tenga algún tipo de impacto notable en el rendimiento de su sitio/servidor. Sugiero usar [ab] (http://httpd.apache.org/docs/2.2/programs/ab.html) para probar antes y después de implementar este cambio para que tenga una idea de cómo funcionará para usted. – bradym

+5

¿hay alguna manera de decir, solo inicie sesión si el tiempo de medida es> 1 segundo? –

Cuestiones relacionadas