彻底解决lnmp 502错误方法 - 2011.4.6更新
这个图片大家一定不会陌生吧!说下终极解决方案,本人亲测有效,考虑到现在DDOS太牛逼,就不说我的站点了 不过每天有3万多PV,6000多IP,之前也是每天出现几次 502错误,出现后就lnmp restart 但是总不能这样啊,于是找了下方法,参考http://itfis.com/post-212.html 这里的 谢谢这位朋友。
首先,
vi /usr/local/php/etc/php-fpm.conf
修改
<value name="listen_address">/tmp/php-cgi.sock</value>
为
<value name="listen_address">127.0.0.1:9000</value>
因为我这里nginx.conf里边很多信息我都注释掉了,没有一个站点配置信息,配置信息都在vhost里边,
所以,vi /usr/local/nginx/conf/vhost/www.xxx.com.conf
修改fastcgi_pass 127.0.0.1:9000,原来是fastcgi_pass unix:/tmp/php-cgi.sock,然后保存,重启Lnmp,就OK了,
如果大家想用vhost.sh生成出来的新站点,都自动生成这种端口监听信息的话,就vi vhost.sh,修改148行内容即可。
我这样设置好后以后就再没出现过一次 502错误 不管访问人数在多都没有出现过,在这里非常感谢军哥和那位朋友提供的信息,军哥我们支持你!加油!如果你还不放心 你可以这样让lnmp 每晚凌晨自动重启一下,操作步骤为: crontab -e
注意一定要写lnmp的绝对路径,我这个的意思是每天晚上0点自动重启一次,对访问毫无影响,有实在不明白的朋友可以跟帖!
再次感谢军哥,真的很给力 呵呵,修改上边具体原理我也不知道,反正修改后就没再出过问题,知道的朋友可以指教下 谢谢!
按以上方法修改,并修改php-cgi进程数为20后,仍然会出现504错误。根据 网友yaren 提议,在nginx.conf 中添加并修改:
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 128k;
fastcgi_buffers 2 256k;#8 128
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
fastcgi_intercept_errors on;
效果待观察。。。
试试是否还存在502错误了吧,如果还存在,可能就是fastcgi进程数不够,可适当根据自身服务器内存需要,修改cgi进程数目,在php-fpm.conf修改max_children最大数目,如我的服务器2G内存,修改为 <value name="max_children">72</value>。
可能还会修改:
<value name="request_terminate_timeout">9999s</value>
<value name="request_slowlog_timeout">999s</value>
============================
根据以上的办法,还是不能彻底解决。
现在根据小夜的提示,定时重启lnmp,待测试。
00 */1 * * * /root/lnmp restart



评论(0)▼