PHP-FPM 监听队列已满,我的配置有什么问题?

标签 php wordpress nginx

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

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

当它变得无响应时,nginx状态页面显示

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 池配置

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

我错过了什么?工作连接配置不正确吗?请指导我。

最佳答案

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

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

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

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

关于PHP-FPM 监听队列已满,我的配置有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41384507/

相关文章:

php - 使用 PHP 和 MySQL 从多个表中选择一个唯一 ID 的信息

html - 容器中的中心网格元素(960 网格)

php - wordpress自定义联系表单问题

mysql - WordPress 和 Haversine 公式

NGINX-代理 : Running multiple ports tied to different virtual hosts on one container

java - 无法在 jetty + nginx 上加载资源:net::ERR_CONNECTION_RESET

php - 如何在 WSL 上使用 Xdebug + PhpStorm 调试 Symfony 4?

javascript - 无法发送到 $_POST 但 $_SESSION 表示其他内容

php - 客户端证书和 PHP 入门

django - channel Websocket 立即与 ssl 断开连接