我在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
。
有类似经历的人吗?
答案 0 :(得分:22)
第一个问题是你指定了100个max_children,对于2GB来说非常高。我会把它丢给25个孩子。请参阅我的帖子,了解如何针对您的设置优化php-fpm配置:
此外,使用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了。