【发布时间】:2021-09-08 04:26:19
【问题描述】:
我的网络服务器遇到了 php-fpm 活动进程缓慢增加的问题,直到达到 pm.max_children 设置,此时它卡住了,我需要重新启动 php-fpm。 (操作系统:ubuntu 20.0.4,网络服务器:Caddy,php-fpm 版本:7.1,pm = 动态,运行 Laravel 5.5 框架)
我开启了php-fpm状态页面,发现很多进程卡在“Getting request informations”状态。 输出中的示例行:of /status?html&full(这已经卡在这里一个多小时了)
| pid | state | start time | start since | requests | request duration | request method | request uri | content length | user | script | last request cpu | last request memory |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1772235 | Getting request informations | 24/Jun/2021:15:03:07 +0000 | 5111 | 131 | 4625314443 | POST | /api.php?t=removed&e=/role/checkOut/3461 | 5542139 | - | /var/www/nameremoved/app/fe/production/api.php | 0.00 | 0 |
谁能阐明“获取请求信息”状态是什么?我似乎在任何地方都找不到它的记录。
在 php.ini 我有: 最大执行时间 = 180 然而这似乎被忽略了.. 正在运行的脚本来自 Laravel 5.5,绝对不会花费超过几秒钟的时间来执行 - 它们只是基本的数据库操作,可能上传的文件可能高达 500MB
我想我的下一步可能是设置 php-fpm 设置: request_terminate_timeout 看看是否会终止进程。
奇怪的是我在不同的位置设置了相同的服务器(请求根据位置路由到任一服务器),没有这个问题。
任何建议表示赞赏:)
更新 25/6 仍在发生,似乎仅适用于带有文件上传的 POST 请求
更新 29/6 我已经设置 request_terminate_timeout=2h 这成功地杀死了卡在“获取请求信息”状态的请求。所以这有点解决了问题,但我仍然不知道是什么原因造成的
【问题讨论】: