我具有以下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)
关于如何解决/诊断问题的任何想法?
答案 0 :(得分:0)
我想您正在为此使用socket_connect()?无论如何,您都应该能够使用类似于以下的代码来关闭已创建的连接资源:
$connection = socket_connect(...);
// ... code ...
socket_close($connection);
也许您正在使用for循环或其他方法创建许多连接,但是直到之后才关闭它们?
如果您可以发布一些代码,那就太好了:)
希望这会有所帮助,谢谢