延迟、Nginx 和 PHP-FPM

延迟、Nginx 和 PHP-FPM

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

我不确定系统的瓶颈在哪里,我一直希望降低平均延迟,但我知道我的机器没有:

  • 受 CPU 限制
  • 受内存容量限制
  • 受磁盘 IO 限制
  • 受网络 IO 限制

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

有什么突出的异常或错误之处吗?

答案1

使用单个插座应该就可以了。

需要检查以下几件事:

  1. 每个进程的最大文件句柄数是多少?ulimit -n增加这个值可能会对你有帮助。

  2. 在 php-fpm 中启用日志记录,以查看请求所花费的时间。在 pool.d/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

相关内容