连接到 unix:/var/run/php5-fpm.sock 失败。我的设置有什么问题吗?

2024-03-28

我在 DigitalOcean 上有一个 2GB VPS,并且在 Debian 7 下使用 NGINX、php-fpm 和 unix 套接字托管 WordPress 3.9.1。

它一直工作得很好,直到上周它开始显示“502 bad gateway”错误。我检查了日志,发现:

php5-fpm 日志显示 pm.max_children 已达到并且 nginx 日志显示如下:

[错误] 3239#0: *15188 connect() 到 unix:/var/run/php5-fpm.sock 失败 (11: 资源暂时不可用),同时连接到上游,客户端:xxx.xxx.xxx.xxx,服务器: my.domain,请求:“POST /xmlrpc.php HTTP/1.0”,上游:“fastcgi://unix:/var/run/php5-fpm.sock:”,主机:“xxx.xxx.xxx.xxx”

我用不同的设置手动更改了 pm,但没有成功。我总是在每次更改后重新启动守护进程。

pm 设置为:

pm = dynamic 
pm.max_children = 100 
pm.start_servers = 10 
pm.min_spare_servers = 10 
pm.max_spare_servers = 10 
pm.max_requests = 200

www.conflisten = /var/run/php5-fpm.sock已启用。

有人有类似经历吗?


第一个问题是您指定了 100 个 max_children,这对于 2GB 来说非常高。我会把它留给 25 个孩子。请参阅我的文章,了解如何优化您的 php-fpm 配置:

警告:[pool www] 似乎很忙(您可能需要增加 pm.start_servers 或 pm.min/max_spare_servers),正在生成 https://stackoverflow.com/questions/25097179/warning-pool-www-seems-busy-you-may-need-to-increase-pm-start-servers-or-pm/25098060#25098060

此外,使用 unix 套接字会稍微快一些,因为它为您提供直接的网络访问,而无需任何 TCP/IP 开销。缺点是它的可扩展性不如 TCP/IP。当套接字耗尽时,Nginx 将抛出 502 错误。在这种情况下,您可以调整操作系统设置以适应更大的连接池,或者直接切换到 TCP/IP。

在你的 fastcgiconf 中更改:

fastcgi_pass unix:/var/run/php5-fpm.sock;

to:

fastcgi_pass 127.0.0.1:9000;

请注意,端口 9000 是 php-fpm 中设置的默认端口,如果您已将 php-fpm 更改为侦听另一个端口,则将 9000 替换为该值。确保重新启动 php-fpm 和 nginx。

现在,如果在完成所有这些之后,您仍然无法让它工作并且free -m返回高内存使用率,那么是时候向您的服务器添加更多内存了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

连接到 unix:/var/run/php5-fpm.sock 失败。我的设置有什么问题吗? 的相关文章