我有一个使用 NGINX 和 PHP-FPM 的网站。正如您可能知道的那样,PHP-FPM 有一个关于它的池的状态页面,其中包含有关它的进程的详细信息。我的问题是,随着时间的推移,许多进程状态变为“完成”,并且在我重新加载 PHP-FPM 之前不会改变它们的“完成”状态。
坏事是“完成”进程算作活动进程,当活动进程的数量超过 pm.max_children 时,我的网站上就会发生坏事。
我知道一些用于终止空闲进程的 php-fpm 池参数,但在一定时间后我找不到用于终止完成进程的参数。
如何处理 PHP-FPM 整理状态?是否有配置参数可以在一段时间后终止这些“完成”进程?这可能是 NGINX 和 PHP-FPM 之间的错误配置吗?“完成”状态的原因是什么?
这是 php-fpm 状态的图像。红军正在完成状态,这就是我要解决的问题。请求 URI 是我网站的不同页面。
谢谢你的知识。
PD1:现在我每 15 分钟重新加载一次 PHP-FPM,并且“修复”或多或少的完成状态......但我认为这可能是一个重要的性能问题,因为更多的流量。
PD2:到目前为止,我认为唯一可行的解决方案是读取 php-fpm 状态页面,获取所有具有完成状态的进程,并通过 pid 杀死超过任意请求持续时间的进程。