延迟,Nginx和PHP-FPM

我有一个高负载的dynamicPHP Web服务,我最近从Apache2转移到Nginx和PHP-FPM。 我发现自移动以来平均请求延迟从0.5秒增加到了1秒。

我不确定系统的瓶颈在哪里,我一直希望能够减less平均延迟,我知道我的机器不是:

  • 受CPU限制
  • 受内存容量限制
  • 受磁盘IO的限制
  • 受networkingIO限制

Nginx通过一个unix套接字将请求转发到PHP-FPM。

  • 内存带宽可能是瓶颈吗?
  • 反正有监视unix套接字的状态吗?
  • 有一个unix套接字池和它们之间的负载平衡是更好吗?

这是我的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; 

和我的php-fpm.conf

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

有什么突出的东西是奇怪的还是错的?

使用一个单一的sockets应该没问题。

几件事情来检查:

  1. 每个进程的最大文件句柄数是多less? ulimit -n你可以从这个增加中受益。

  2. 在php-fpm中启用日志logging,查看请求按照它的时间长度。 在pool.d / http://www.conf中:

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

  3. 使用状态模块来查看nginx里面发生了什么: http : //wiki.nginx.org/HttpStubStatusModule