Como confirmar qual arquivo PHP está sendo executado no Apache?

0

Eu tenho uma situação que meu VPS ficou sem CPU por causa do meu site. Como confirmar qual arquivo PHP está sendo executado pelo Apache? Então eu posso resolver esse problema.

Eu tentei os comandos de lsof -p , ps -f , strace -p , mas ninguém me ajuda, porque todos os arquivos são do apache, como /usr/local/zend/apache2/bin/httpd , /usr/local/zend/apache2/modules/mod_unique_id.so .

    
por prince 14.12.2015 / 12:54

2 respostas

0

Use sudo somente se necessário. Liste todos os processos e, em seguida, informe grep para gerar apenas as linhas com a palavra php .

sudo ps aux | grep php

Leia a saída de acordo com o seguinte cabeçalho

USER       PID  %CPU %MEM  VSZ RSS     TTY   STAT START   TIME COMMAND
    
por 14.12.2015 / 19:30
0

Se você está tentando obter o caminho completo para o módulo PHP Apache em execução, faça isso.

O arquivo PHP usado pelo Apache deve ser nomeado libphp5.so . Então você pode executar este comando lsof via sudo :

sudo lsof | grep libphp5.so

Que deve retornar uma pilha inteira de resultados com praticamente todos eles mostrando o caminho completo para libphp5.so , que deve ser algo assim se você estiver em um sistema Ubuntu / Debian:

/usr/lib/apache2/modules/libphp5.so

Se você estiver tentando monitorar seu servidor Apache para descobrir qual arquivo pode estar sendo bloqueado, faça isso.

Dito isso, não ficou claro para minha pergunta o que você quer dizer com “Como confirmar qual arquivo PHP está sendo executado no Apache?” desde a releitura que me faz pensar que talvez você esteja tentando descobrir qual script PHP está sufocando. servidor e não o módulo PHP que o Apache está carregando? Porque o módulo PHP real que o Apache carrega simples é apenas o analisador PHP que o Apache usa. Mas um script PHP que você está executando através dessa configuração é uma coisa totalmente diferente.

O problema é que a maneira como o Apache trabalha é o conteúdo / os arquivos são analisados sob demanda. Portanto, você precisa executar uma ferramenta que monitore as solicitações do Apache em tempo real para obter as informações que você está procurando nesse caso. Existem algumas maneiras de fazer isso a partir da linha de comando.

Usando o Apache Top para monitorar um servidor web Apache.

Primeiro, você pode instalar e executar o Apache Top , que é semelhante ao padrão Linux / Unix top mas para processos do Apache. Por exemplo, aqui está uma maneira simples / agradável de monitorar os arquivos de log de um servidor da Web em tempo real com o Apache Top:

apachetop -r 2 -f /var/log/apache2/access.log

O -r 2 atualizará a saída a cada 2 segundos e o -f /var/log/apache2/access.log informará apache-top a relatar informações do log Apache fornecido. Nesse exemplo, ele está carregando o arquivo de log padrão do Apache de uma configuração do Ubuntu / Debian, mas você deve alterar esse caminho de arquivo completo para corresponder ao local real do arquivo de log do Apache.

Usando ELinks para monitorar um servidor web Apache.

Outro método que uso para monitorar o Apache em um servidor é usar ELinks e o URL de status padrão do Apache assim:

elinks http://localhost/server-status?refresh=1

ELinks é basicamente apenas um navegador da Web baseado em texto. Então, se você executar isso a partir da linha de comando, ele apenas carregará o URL passado para ele e se você perceber que o URL inclui o parâmetro refresh=1 , que basicamente diz ao server-status para atualizar a si mesmo a cada segundo.

    
por 14.12.2015 / 20:14