访问时出现 502 Bad Gateway 的解决办法 Nginx 502 Bad Gateway的含义是请求的php-cgi已经执行,但是由于某种原因(一般是读取资源的问题)没有执行完毕而导致php-cgi进程终止。一般并发数太高的网站都容易出现此错误。出现502 Bad Gateway的原因有很多,可以看这个,解决办法:
分两种:
一、php-fpm支持的php-cgi
修改php-fpm 进程数在/usr/local/php/etc/php-fpm.conf 查找max_children 将后面的值修改成你要设置的值就可以。
#vim /usr/local/php/etc/php-fpm.conf
<value name="max_children">4</value> #max_children表示php-cgi的处理进程,设置max_children也需要根据服务器的性能进行设定,增大进程数,内存占用也会相应增大,正常情况下每个php-cgi所耗费的内存在20M左右
<value name="request_terminate_timeout">44s</value>
<value name="process_control_timeout">44s</value>
<value name=”style”>apache-like </value> #因为php-fpm的默认静态处理方式会使得php-cgi的进程长期占用内存而无法释放,这也是导致nginx出错的原因之一,因此可以将php-fpm的处理方式改成apache模式。
二、spawn-fcgi支持php-cgi
1.获取spawn-fcgi工具,从lighttpd-1.4.20.tar.gz中提取sqawn-fcgi工具
#wget
#tar zxvf lighttpd-1.4.20.tar.gz
#cd lighttpd-1.4.20
#./configure --without-pcre
#make
#cp src/spawn-fcgi /usr/sbin/
2.启动php-cgi
#spawn-fcgi -a 127.0.0.1 -p 9000 -f /opt/app/php5/bin/php-cgi -C 20 (20为php-cgi进程数)
设置开机自启
#vi /etc/rc.local
/usr/sbin/spawn-fcgi -a 127.0.0.1 -p 9000 -f /opt/app/php5/bin/php-cgi -C 20