PHP-FPM整理状态如何处理?

Bet*_*iga 5 php nginx

我有一个使用 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 终止超过任意请求持续时间的进程。

小智 0

有同样的问题。这是我用作临时解决方案的方法:

创建一个包含以下内容的 PHP 文件:

<?php
fastcgi_finish_request();
?>
Run Code Online (Sandbox Code Playgroud)

编辑 php.ini:

auto_append_file = /path/to/your/file.php
Run Code Online (Sandbox Code Playgroud)

  • 临时解决办法?你现在用什么? (2认同)