Latência, Nginx e PHP-FPM

1

Eu tenho um serviço web PHP dinâmico de alta carga que eu mudei recentemente do Apache2 para Nginx e PHP-FPM. Estou descobrindo que a latência média de solicitações aumentou de 0,5s para 1s desde a mudança.

Não tenho certeza de onde está o gargalo no sistema, esperava diminuir a latência média, sei que minhas máquinas não são:

  • limitado pela CPU
  • limitado pela capacidade de memória
  • limitado por disco IO
  • limitado pela rede IO

O Nginx está encaminhando os pedidos para o PHP-FPM através de um único soquete unix.

  • É possível que o gargalo seja a largura de banda da memória?
  • Existe alguma maneira de monitorar o status do soquete unix?
  • Seria melhor ter um pool de soquetes unix e balancear a carga entre eles?

Aqui está parte do meu arquivo nginx.conf:

worker_processes 2; # one for each processor
worker_rlimit_nofile 65536;
...
fastcgi_buffers 256 16k;
fastcgi_buffer_size 32k;
fastcgi_max_temp_file_size 0;
proxy_buffer_size 32k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 32k;

e meu php-fpm.conf

listen = /var/run/php5-fpm.sock
listen.backlog = 2048
pm = static
pm.max_children = 64

Alguma coisa se destaca como sendo extravagante ou falha?

    
por sungiant 06.06.2013 / 15:17

1 resposta

1

Usar um único soquete deve ser bom.

Algumas coisas para verificar:

  1. Qual é o número máximo de manipuladores de arquivo por processo? ulimit -n Você pode se beneficiar ao aumentar isso.

  2. Habilite o registro em log em php-fpm para ver quanto tempo as solicitações estão levando de acordo com isso. No pool.d / www.conf:

    access.format = %R - %u %t "%m %r%Q%q" %s %f %{mili}d %{kilo}M %C%%

  3. Use o módulo de status para ver o que está acontecendo dentro do nginx: link

por 08.06.2013 / 01:03