访问时出现 502 Bad Gateway 的解决办法
Nginx 502 Bad Gateway的含义是请求的php-cgi已经执行,但是由于某种原因(一般是读取资源的问题)没有执行完毕而导致php-cgi进程终止。一般并发数太高的网站都容易出现此错误。出现502 Bad Gateway的原因有很多,可以看这个http://bbs.vpser.net/thread-1787-1-1.html,解决办法:

分两种:

一、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 http://www.lighttpd.net/download/lighttpd-1.4.20.tar.gz

#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