为什么php-fpm(nginx)进程无法关闭并不断累积?

时间:2019-07-18 04:19:25

标签: php nginx fpm

我具有以下Nginx php-fpm5.6设置

pm =动态 pm.max_children = 150 min_spare_servers)/ 2 pm.start_servers = 10 pm.min_spare_servers = 1 pm.max_spare_servers = 25

每个子进程大约有91MB,我有16GB的ram。

达到最大孩子数时,我开始在日志中出现以下错误:

- connect() to unix:/run/php/php5.6-fpm.sock failed (11: Resource temporarily unavailable) while connecting to upstream

- failed (104: Connection reset by peer) while reading response header from upstream

最终,我最终不得不重新启动php5.6-fpm才能使所有功能再次正常工作。

我不明白为什么有这么多未使用的开放子进程。我已经附上了htop的屏幕快照,它看起来好像有很多php-fpm都不消耗任何ram或cpu时间。 (https://drive.google.com/file/d/11kEjgcMDyc4EDbJU7DE_y87V6RRJ4ekN/view?usp=sharing

关于如何解决/诊断问题的任何想法?

1 个答案:

答案 0 :(得分:0)

我想您正在为此使用socket_connect()?无论如何,您都应该能够使用类似于以下的代码来关闭已创建的连接资源:

$connection = socket_connect(...);
// ... code ...
socket_close($connection);

也许您正在使用for循环或其他方法创建许多连接,但是直到之后才关闭它们?

如果您可以发布一些代码,那就太好了:)

希望这会有所帮助,谢谢