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

时间:2014-08-02 18:15:10

标签: php wordpress nginx

我在DigitalOcean上有2GB VPS,我在Debian 7下使用NGINX,php-fpm和unix socket托管WordPress 3.9.1。

直到上周才开始显示“502 bad gateway”错误。我检查了日志,发现:

  

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

     

[error] 3239#0:* 15188 connect()到unix:/var/run/php5-fpm.sock失败(11:资源暂时不可用),同时连接到上游,客户端:xxx.xxx.xxx.xxx ,server:my.domain,request:“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.conf已启用listen = /var/run/php5-fpm.sock

有类似经历的人吗?

1 个答案:

答案 0 :(得分:22)

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

WARNING: [pool www] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning

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

在你的fastcgi conf改变中:

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

为:

fastcgi_pass 127.0.0.1:9000;

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

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