Como diagnosticar os tempos de execução do servidor PHP para reduzi-los?

1

Estou executando um servidor de API no Amazon EC2 desenvolvido com PHP e estou tentando ajustar o desempenho com o objetivo de reduzir os tempos de resposta. Atualmente estou testando o desempenho do código PHP internamente obtendo o tempo em milissegundos no início de uma solicitação e, em seguida, obtendo os milissegundos no final da solicitação antes de finalizar o script. Depois de implementar o memcache e alguns outros truques, recebi a maioria dos pedidos relatando um tempo de execução de 10 a 20ms dentro do meu código PHP. No entanto, quando vejo as solicitações de rede nas Ferramentas do desenvolvedor do Chrome, ainda vejo solicitações que atingem meus scripts PHP, que aparecem como:

Sending 0ms
Waiting 145ms
Receiving 1ms

Isso se compara aos pedidos de arquivos estáticos, que geralmente são mais do tipo:

Sending 0ms
Waiting 15ms
Receiving 1ms

Então, tudo que sei é que quando executo meu script PHP e testo o tempo de execução dentro do script, são necessários apenas 10-20ms para executar o meu script. Neste ponto, eu cuidei do pouco que era fazer meu código PHP rodar muito rápido, mas estou tentando descobrir como tornar o resto do fluxo fora da execução do meu script mais rápido.

Então, minha pergunta é como determinar de onde vêm os 120ms extras, já que está fora do fluxo do meu próprio código? É o tempo gasto pelo Apache para configurar um processo PHP? É o tempo gasto pelo interpretador PHP analisando os arquivos PHP? É o tempo gasto pelo processo do PHP entregando a resposta do meu script de volta ao Apache? Como descubro como esses 120ms de tempo extra são distribuídos com o objetivo de reduzi-lo?

    
por Nathan Peck 13.11.2012 / 18:03

1 resposta

1

Bem, você tem a maneira difícil, não-tão-difícil e fácil de fazer isso.

A maneira difícil

Use o microtime () para criar um perfil manualmente para ver o que leva mais tempo. Fácil de implementar para um projeto menor, mas que realmente fica pesado.

A maneira não tão difícil quanto

Configure um depurador PHP para fazer isso por você. O Xdebug é provavelmente o melhor, mas existem muitas opções por aí.

Ele é configurado como uma extensão do PHP para que ele automaticamente crie um perfil do seu código para você e que você saiba o que está levando uma grande quantidade de tempo.

Isso provavelmente ainda levará um bom tempo para você configurar, e é tudo menos direto.

A maneira fácil

Confira New Relic . Você instala uma extensão PHP e configura uma conta em seu servidor, e automaticamente ele irá criar um perfil para você.

Sua versão pro, que é bastante cara, oferece uma tonelada de dados para descobrir o que está ocupando o tempo em um script PHP. A versão gratuita dá uma ideia básica do que está acontecendo.

Eu estava cético no começo, mas estou muito feliz com o nível de dados que eles fornecem.

Além disso, eles têm uma avaliação gratuita de 15 dias do Pro.

* Eu não sou afiliado da New Relic.

    
por 13.11.2012 / 19:42