Apache: ver qué página/host virtual está matando mi servidor

Apache: ver qué página/host virtual está matando mi servidor

No puedo volver a poner en línea mi servidor web. El servidor sigue fallando y me veo obligado a reiniciarlo.

Estoy en un servidor compartido, por lo que es aún más difícil encontrar al culpable.

¿Cómo puedo encontrar qué página específica (o, al menos, qué host virtual) está enloqueciendo con el uso de la CPU?

Estoy en CentOS con Apahce+MySQL+PHP bastante estándar.

¡Gracias!

Respuesta1

Probablemente la mejor idea sea instalar apachetop.https://code.google.com/p/apachetop/, también puedes usar el estado del servidor de Apache, pero apachetop lo hará mucho más legible.

Respuesta2

Una página realmente no tiene nada que ver con este problema.

El siguiente comando debería generar una lista de pids para httpd ordenados por porcentaje de CPU con el directorio de trabajo actual en el que se encuentra el trabajador httpd.

Por supuesto, esto supone que httpd es el culpable.

IFS=" "; ps -A ho pcpu,comm,pid | grep httpd | sort -k1n \
while read pcpu comm pid; do \
    echo -n "${pcpu"}: "l pwdx "${pid}"; 
done

Obtengo un resultado similar a;

0.0: 1850: /
0.0: 1852: /
0.0: 1854: /
0.0: 1853: /
0.0: 1855: /
0.0: 1856: /
0.0: 1857: /
0.0: 1858: /

Esto funciona porque Apache cambiará los directorios a la raíz del documento del host virtual antes de realizar cualquier trabajo dentro del host virtual. Entonces, cualquier host virtual que tenga esa raíz de documento es el culpable.

Si tiene más de un host virtual que utiliza la misma raíz de documento, deberá investigar ambos hosts virtuales para ver qué están haciendo.

Como no tengo trabajadores de Apache que consuman tiempo de CPU, todos ellos son 0.0 y, por lo tanto, no se realizan pedidos.

Si el problema es en realidad una consulta SQL, no espere que esto muestre nada.

información relacionada