Identificando o gargalo

1

Então eu tenho nginx e php-fpm em um servidor de nuvem. Usando o benchmark do apache com estas configurações:

ab -n 300 -c 5 http://example.com/

Portanto, o servidor de nuvem (do rackspace) era de 256MB. Fiz o htop enquanto o benchmark do apache estava indo, então pude ver os recursos do servidor.

Todos os quatro processadores (que eu tenho apenas uma parte de quatro processadores individuais no rackspace? Não tenho certeza de quanto eu tenho acesso) estão em 100% (ou 98% ou algo assim) o tempo todo o benchmark do apache está sendo executado.

Atualmente recebo 15 solicitações por segundo. Meu primeiro pensamento foi para redimensionar o servidor (eu mudei para o 512mb um, por isso deve ter o dobro do que tudo.). Ainda assim, as solicitações por segundo eram exatamente as mesmas e o uso do processador estava em / quase 100% o tempo todo.

Então eu tentei alterar o php-fpm para ter 20 processos estáticos (em vez de 10). Isso rendeu os mesmos resultados de antes.

Qual poderia ser o gargalo?

Minha aplicação geral (escrita em php) nesta página específica apenas conecta a um banco de dados e obtém uma lista de produtos. Em seguida, apenas lista-os em uma tabela. Não é um monte de complicar consultas (embora existam alguns)

Então talvez seja relacionado ao banco de dados?

    
por Matthew 17.09.2010 / 18:37

3 respostas

1

A melhor maneira de fazer isto é instalar um profiler de código, como o XDebug . Instale o XDebug e, em seguida, ative o profiler. Ele gerará um relatório que você pode inspecionar rapidamente e descobrir exatamente quais partes do código estão ocupando o maior tempo de processamento e uso de memória. Você pode identificar essas áreas em seu código para otimizar.

    
por 17.09.2010 / 19:26
0

Você pode fornecer mais algumas informações sobre o que o código PHP está realmente fazendo?

    
por 17.09.2010 / 18:42
0

Você pode rodar "top" e ver quais processos (nginx, php-fpm ou mysql) realmente comem CPU. Isso indicaria o gargalo. Para facilitar a interpretação dos resultados, defina temporariamente o número de processos php-fpm para 4. Por exemplo, se você obtiver 4 processos php-fpm, cada um consumindo 90% da CPU, 5% em nginx e 20% em mysql, em seus scripts PHP é o gargalo. E se os processos php-fpm são mais ociosos e o mysql consome muita CPU, então o banco de dados é o gargalo, pense em adicionar um índice ou dois.

    
por 26.09.2010 / 17:51