Como posso monitorar o uso de recursos php com o comando top?

1

Existe uma pergunta que é semelhante ao que eu quero saber aqui na falha do servidor:

Hoje recebi uma captura de tela de um de meus clientes. Ele não tinha ideia do que significava, então ele me enviou para explicar isso a ele. A imagem foi enviada pelo seu provedor de hospedagem. O site do meu cliente está lento, e eu acho que ele perguntou aos caras de hospedagem o porquê, então eles enviaram essa imagem para ele. A imagem parece ser uma captura de tela do comando principal e mostra que um arquivo ocupa 90% da CPU. Acho isso muito interessante e adoraria saber como fazer isso sozinho.

Como eu disse, a captura de tela parece ser o principal comando, mas quando corro o topo e coloco o servidor ocupado, não obtenho o mesmo tipo de resultado. Eu me certifico de que o script que eu executo consome alguma CPU com um loop infinito, mas tudo que consigo é o apache2 como o Comando que está usando a CPU, enquanto a captura de tela mostra:

/usr/bin/php /path/to/index.php

Esta é a aparência da captura de tela:

PID  USER     PR NI VIRT RES  SHR  S   %CPU %MEM TIME+    COMMAND
1234 username 16 -2 134m 26m  7528 R   98   0.2  00:00:50 /usr/bin/php /path/to/file.php

E o meu parece assim:

PID   USER     PR NI VIRT  RES  SHR  S   %CPU  %MEM TIME+    COMMAND
19632 www-data 20 0  44432 18m  3608 S   27.1  0.9  00:00:82 apache2

Observe como o deles mostra / usr / bin / php e o caminho para o arquivo que está abraçando a CPU, mas o meu mostra apenas o apache2, que realmente não me diz nada útil.

Eu sempre quis fazer esse tipo de coisa e descobrir qual arquivo está usando a CPU, agora, minha pergunta é: como eles fazem isso com o topo? Eu sei que posso usar um profiler, e na verdade, a pergunta que eu gostei acima tem duas boas sugestões, mas estou curioso para saber como eles fazem isso com o topo.

Obrigado antecipadamente.

    
por Buzu 16.02.2012 / 10:23

1 resposta

1

A diferença entre seus dois sistemas é aparentemente que no PHP do seu cliente é executado como um executável CGI (que é uma opção comum com provedores de hospedagem) e no seu sistema, ele é executado como um módulo do Apache. CGI significa que um programa separado é iniciado sempre que um script PHP precisa ser executado, o que é listado na saída superior. Executá-lo como um módulo do Apache, por outro lado, significa que o interpretador do PHP é apenas uma sub-rotina do Apache sem seu próprio processo e não pode ser listado na parte superior.

Para descobrir informações semelhantes, como no caso CGI, você pode tentar usar o ApacheTop .

    
por 16.02.2012 / 11:08