Encontre o script PHP em execução em cada processo HTTPD

7

Eu gostaria de saber uma maneira de inspecionar processos HTTPD para descobrir qual script PHP está sendo executado neles.

Eu já fiz um "netstat" e descobri que alguns processos mantinham soquetes DB e Network por muito tempo e agora eu quero saber quais scripts estão causando isso.

Btw, estou usando o Linux.

    
por LatinSuD 17.01.2012 / 10:08

2 respostas

12

Você precisa ter o módulo do Apache mod_status ativado (Apache principal do CentOs O arquivo de configuração está localizado em /etc/httpd/conf/httpd.conf)

LoadModule status_module modules/mod_status.so

com a opção ExtendedStatus on (isso deve ser definido em o mesmo arquivo de configuração acima)

# ExtendedStatus controls whether Apache will generate "full" status
# information (ExtendedStatus On) or just basic information (ExtendedStatus
# Off) when the "server-status" handler is called. The default is Off.
#
ExtendedStatus On

e alguns direitos de acesso definidos para esse (substitua abaixo XXX.XXX.XXX.XXX pelo seu IP - isso deve ser encontrado no mesmo arquivo de configuração acima)

# Allow server status reports generated by mod_status,
# with the URL of http://servername/server-status
# Change the ".example.com" to match your domain to enable.
#
<Location /server-status>
    SetHandler server-status
    Order deny,allow
    Deny from all
    Allow from localhost 127.0.0.1 XXX.XXX.XXX.XXX
</Location>

Finalmente, você verá o que cada processo HTTPD está fazendo acessando o link

Isso mostrará os pids e URLs que estão sendo processados atualmente na forma apresentada aqui .

    
por 17.01.2012 / 10:37
6

O mod_status sugerido é uma ótima alternativa para ver qual processo está fazendo o que, no momento, você o ativa (e geralmente adiciona instruções Permitir para permitir visualizá-lo a partir do intervalo de IPs a partir do qual você acessa o servidor). http://site.name/server-status e obtenha resultados agradáveis. Um exemplo pode ser visto no próprio site da Apaches: link

Outra ferramenta útil para ver o que está acontecendo com um processo é lsof , se você tiver um PID conhecido que "trava", pode digitar lsof -p <pid> para ver o que está acontecendo com esse. Para corresponder a todos os processos, você pode digitar algo como lsof -c apache ou lsof -c httpd . É uma ferramenta muito versátil, com muitas opções para o que você quer ver.

Finalmente, você tem strace que pode anexar a processos em execução para ver o que eles estão fazendo no momento com as chamadas do sistema, etc. strace -p <pid> , por exemplo. Atenção, isso PODE, às vezes, interromper o processo de execução, então fique atento e reinicie se necessário.

lsof (8) man page: link
strace (1) man página: link

    
por 17.01.2012 / 11:27