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

标签 php wordpress nginx

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

在上周开始显示“502 错误网关”错误之前,它一直运行良好。我检查了日志,发现:

php5-fpm log is showing pm.max_children was reached and nginx log is showing the following:

[error] 3239#0: *15188 connect() to unix:/var/run/php5-fpm.sock failed (11: Resource temporarily unavailable) while connecting to upstream, client: xxx.xxx.xxx.xxx, server: my.domain, request: "POST /xmlrpc.php HTTP/1.0", upstream: "fastcgi://unix:/var/run/php5-fpm.sock:", host: "xxx.xxx.xxx.xxx"

我用不同的设置手动更改了 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

谁有类似经历?

最佳答案

第一个问题是您指定了 100 个 max_children,这对于 2GB 来说非常高。我会把它交给25个 child 。请参阅我的帖子,了解如何为您的设置优化 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 返回高内存使用率,那么是时候为你的服务器添加更多内存了。

关于php - 连接到 unix :/var/run/php5-fpm. sock 失败。我的设置有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25098029/

相关文章:

nginx - 在 CentOS 7 上使用 php7 和 nginx 安装 Typo3

javascript - 单击按钮时的随机播放功能

php - 在已经运行的查询循环中从第二个表调用循环查询

javascript - 在 Wordpress 侧边栏中显示更多帖子(如 YouTube)

ruby - nginx + passenger 上的多个 Rack 应用程序,一个作为 root,另一个不是...配置帮助

docker - 如何更正 firewalld 和 docker/nginx 的配置?

php - Erlang Cowboy可以搭建PHP框架吗?

设置 20 种单元格类型后 PhpExcel 停止工作

css - 防止在页面加载时看到 slider 中的图像?

php - WooCommerce 结帐布局