Apache: veja qual página/host virtual está matando meu servidor

Apache: veja qual página/host virtual está matando meu servidor

Não consigo colocar meu servidor web online novamente. O servidor continua destruindo e sou forçado a desligá-lo para reinicializar.

Estou em um host compartilhado, então é ainda mais difícil encontrar o culpado.

Como posso descobrir qual página específica (ou, pelo menos, qual host virtual) está enlouquecendo com o uso da CPU?

Estou no CentOS com um Apahce+MySQL+PHP bastante padrão.

Obrigado!

Responder1

Provavelmente a melhor ideia é instalar o apachetop.https://code.google.com/p/apachetop/, você também pode usar o status do servidor Apache, mas o apachetop o tornará muito mais legível.

Responder2

Uma página realmente não tem nada a ver com esse problema.

O comando a seguir deve gerar uma lista de pids para httpd classificados por porcentagem de CPU com o diretório de trabalho atual em que o trabalhador httpd está.

É claro que isso pressupõe que o httpd seja o culpado.

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

Recebo uma saída semelhante 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: /

Isso funciona porque o Apache mudará os diretórios para a raiz do documento dos hosts virtuais antes de realizar qualquer trabalho dentro do host virtual. Portanto, qualquer host virtual que tenha essa raiz de documento é o culpado.

Se você tiver mais de um host virtual usando a mesma raiz de documento, precisará investigar ambos os vhosts para ver o que eles estão fazendo.

Como não tenho trabalhadores do Apache ocupando tempo de CPU, todos eles são 0,0 e, portanto, nenhum pedido está ocorrendo.

Se o problema for realmente uma consulta SQL, não espere que isso mostre nada.

informação relacionada