vsa*_*zis 18 php wordpress nginx
我在DigitalOcean上有2GB VPS,我在Debian 7下使用NGINX,php-fpm和unix socket托管WordPress 3.9.1.
它一直工作到上周它开始显示"502坏网关"错误.我检查了日志,发现:
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
Run Code Online (Sandbox Code Playgroud)
www.conf已listen = /var/run/php5-fpm.sock启用.
有类似经历的人吗?
Rij*_*ael 23
第一个问题是你指定了100个max_children,这个值非常高,为2GB.我会把它丢给25个孩子.请参阅我的帖子,了解如何针对您的设置优化php-fpm配置:
警告:[pool www]似乎很忙(你可能需要增加pm.start_servers,或者pm.min/max_spare_servers),产生
此外,使用unix套接字稍快一些,因为它为您提供直接的网络访问,而无需任何TCP/IP开销.在不利方面,它不像TCP/IP那样可扩展.当套接字耗尽时,Nginx将抛出502错误.在这种情况下,您可以调整操作系统设置以适应更大的连接池,或者只需切换到切换到TCP/IP即可.
在你的fastcgi conf改变:
fastcgi_pass unix:/var/run/php5-fpm.sock;
Run Code Online (Sandbox Code Playgroud)
至:
fastcgi_pass 127.0.0.1:9000;
Run Code Online (Sandbox Code Playgroud)
请注意,端口9000是php-fpm中设置的默认端口,如果您已将php-fpm更改为侦听另一个端口,则将9000与该值交换.确保重启php-fpm和nginx.
现在,如果在所有这些之后,你仍然无法使它工作并且free -m返回高内存使用率,那么是时候向你的服务器添加更多ram了.