PHP-FPM监听队列被填满,我的配置出了什么问题?

时间:2016-12-29 17:30:02

标签: php wordpress nginx

我在博客上获得了大量的流量(平均每天有2000个用户实时,好日子有5000多个,每分钟浏览量从300到700 +不等)。

但由于我的Wordpress nginx设置配置错误,我觉得我错过了流量。我正在使用New Relic来监控性能,并且我注意到该站点随机间隔变得无响应(大多数时候我获得更多流量并且在相当长的一段时间内没有重新启动php-fpm)。

当它变得无法响应时,nginx status页面会显示

listen queue: 500+ (this number varies)
max listen queue: 500+ (this number varies)

所以我想知道为什么nginx无法接受连接,因为我的服务器非常强大:

DigitalOcean 48GB Memory
16 Core Processor
480GB SSD Disk

所以我必须设置一些非常错误的设置。

nginx.conf

worker_processes  24;
worker_rlimit_nofile 20000;
events {
    worker_connections  40000;
    use epoll;
    multi_accept on;
}
keepalive_timeout  65;
client_header_timeout 180;
client_body_timeout 180;
fastcgi_read_timeout 180;

php pool config

pm = static
pm.max_children = 100
pm.max_requests = 500

PHP-FPM状态页面现在显示(我最近重新启动了php5-fpm和nginx)

pool:                 www
process manager:      static
start time:           29/Dec/2016:07:12:38 -0500
start since:          18854
accepted conn:        492343
listen queue:         0
max listen queue:     199
listen queue len:     40000
idle processes:       98
active processes:     2
total processes:      100
max active processes: 100
max children reached: 0
slow requests:        0

我缺少什么?工作者连接配置不正确吗?请指导我。

1 个答案:

答案 0 :(得分:2)

去年进入类似问题。我无法回想起用于解决的确切值(客户端服务器并且不再具有访问权限),但了解到调整PHP-FPM配置以匹配sysctl.conf设置有很大帮助。

请记住,必须花几天时间进行监控才能获得完美的价值。我从中学到的网站是:

https://easyengine.io/tutorials/php/fpm-sysctl-tweaking/

也许这会让你回到正轨......