首页 文章

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

提问于
浏览
18

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

它一直工作到上周它开始显示“502坏网关”错误 . 我检查了日志,发现:

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:“,host:”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 回答

  • 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了 .

相关问题