php-fpm 正常启动,nginx php fpm也正常启动,但是为什么访问PHP是502

> Nginx频繁出现502 Bad Gateway错误提示的解决办法
Nginx频繁出现502 Bad Gateway错误提示的解决办法
今天,我的VPS频繁提示Nginx&502 Bad Gateway错误了,重启了VPS解决之后又出现,很烦。有点想不通,前两天网站达到了1290的访问量都没有出什么问题,怎么这次就出现了502 Bad Gateway?郁闷啊!!!在搜索了很久,终于找到了不少相关的答案,希望修改之后不会再出现这个错误了。
唉,既然在网上找了那么久的答案,那当然得把有用的东西记录下,免得我下次再去谷歌~
由于我是采用了LNMP一键安装包 ,出了问题肯定要先到官方论坛去搜索下了,真好,官方有个这样的置顶帖,大家先瞧瞧。
LNMP一键安装包官方的:
第一种原因:目前lnmp一键安装包比较多的问题就是502 Bad Gateway,大部分情况下原因是在安装php前,脚本中某些lib包可能没有安装上,造成php没有编译安装成功。
解决办法:可以尝试根据lnmp一键安装包中的脚本手动安装一下,看看是什么错误导致的。
第二种原因:
在php.ini里,eaccelerator配置项一定要放在Zend Optimizer配置之前,否则也可能引起502 Bad Gateway
第三种原因:
在安装好使用过程中出现502问题,一般是因为默认php-cgi进程是5个,可能因为phpcgi进程不够用而造成502,需要修改/usr/local/php/etc/php-fpm.conf 将其中的max_children值适当增加。
第四种原因:
php执行超时,修改/usr/local/php/etc/php.ini 将max_execution_time 改为300
第五种原因:
磁盘空间不足,如mysql日志占用大量空间
第六种原因:
查看php-cgi进程是否在运行
也有网友给出了另外的解决办法:
Nginx 502 Bad Gateway的含义是请求的PHP-CGI已经执行,但是由于某种原因(一般是读取资源的问题)没有执行完毕而导致PHP-CGI进程终止,一般来说Nginx 502 Bad Gateway和php-fpm.conf的设置有关。
php-fpm.conf有两个至关重要的参数,一个是max_children,另一个是request_terminate_timeout,但是这个值不是通用的,而是需要自己计算的。
在安装好使用过程中出现502问题,一般是因为默认php-cgi进程是5个,可能因为phpcgi进程不够用而造成502,需要修改/usr/local/php/etc/php-fpm.conf 将其中的max_children值适当增加。
计算的方式如下:
如果你的服务器性能足够好,且宽带资源足够充足,PHP脚本没有系循环或BUG的话你可以直接将 request_terminate_timeout设置成0s。0s的含义是让PHP-CGI一直执行下去而没有时间限制。而如果你做不到这一点,也就 是说你的PHP-CGI可能出现某个BUG,或者你的宽带不够充足或者其他的原因导致你的PHP-CGI假死那么就建议你给 request_terminate_timeout赋一个值,这个值可以根据服务器的性能进行设定。一般来说性能越好你可以设置越高,20分钟-30分 钟都可以。
而max_children这个值又是怎么计算出来的呢?这个值原则上是越大越好,php-cgi的进程多了就会处理的很快,排队的请求就会很少。 设置max_children也需要根据服务器的性能进行设定,一般来说一台服务器正常情况下每一个php-cgi所耗费的内存在20M左右。
按照官方的答案,排查了相关的可能,并结合了网友的答案,得出了下面的解决办法。
1、查看php fastcgi的进程数(max_children值)
代码:netstat -anpo | grep &php-cgi& | wc -l
5(假如显示5)
2、查看当前进程
观察fastcgi进程数,假如使用的进程数等于或高于5个,说明需要增加(根据你机器实际状况而定)
3、调整/usr/local/php/etc/php-fpm.conf&的相关设置
&value name=&max_children&&10&/value&
&value name=&request_terminate_timeout&&60s&/value&
max_children最多10个进程,按照每个进程20MB内存,最多200MB。
request_terminate_timeout执行的时间为60秒,也就是1分钟。php-fpm 正常启动,nginx也正常启动,但是为什么访问PHP是502_百度知道
php-fpm 正常启动,nginx也正常启动,但是为什么访问PHP是502
我有更好的答案
连接成功则返回数据库的连接代号,以减少系统的负担: 数据库功能 本函数用来打开与 Sybase 数据库的连接, string [password]),分别为连接使用的帐号及密码;返回值,失败返回 false 值: int sybase_connect(string [servername]。参数 servername 为欲连上的数据库服务器名称。参数 username 及 password 可省略。使用本函数需注意早点关闭数据库。您试试在将地址后面加了一个, string [username]sybase_connect连上数据库。语法: 整数函数种类?a=1
sybase_connect连上数据库。 语法: int sybase_connect(string [servername], string [username], string [password]); 返回值: 整数函数种类: 数据库功能 本函数用来打开与 Sybase 数据库的连接。 参数 servername 为欲连上的数据库服务器名称。 参数 username 及 password 可省略,分别为连接使用的帐号及密码。 使用本函数需注意早点关闭数据库,以减少系统的负担。 连接成功则返回数据库的连接代号,失败返回 false 值。
其他类似问题
为您推荐:
fpm的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁php-fpm 正常启动,nginx也正常启动,但是为什么访问PHP是502_百度知道
php-fpm 正常启动,nginx也正常启动,但是为什么访问PHP是502
提问者采纳
502错误有很多成因,麻烦吧nginx日志和php-fpm日子贴出来看看
其他类似问题
为您推荐:
fpm的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁您现在的位置:&&>>&&>>&文章正文
河北经济日报 河北经济网 热线电话:5
Nginx php-fpm fast-cgi 502 Bad Gateway错误处理
编辑:晓枫
Nginx -fpm fast-cgi 502 Bad Gateway错误是FastCGI有问题,造成NGINX 502错误的可能性比较多。将网上找到的一些和502 Bad Gateway错误有关的问题和排查方法列一下,先从FastCGI配置入手:
1.FastCGI进程是否已经启动
2.FastCGI worker进程数是否不够通过命令查看服务器上一共开了多少的 php-cgi 进程&&&&& ps -fe |grep "php" | grep -v "grep" | wc -l使用如下命令查看已经有多少个php-cgi进程用来处理tcp请求&&& netstat -anop | grep "php" | grep -v "grep" | wc -l接近配置文件中设置的数值,表明worker进程数设置太少参见:
3.FastCGI执行时间过长根据实际情况调高以下参数值fastcgi_connect_timeout 300;fastcgi_send_timeout 300;fastcgi_read_timeout 300;
4.FastCGI Buffer不够nginx和apache一样,有前端缓冲限制,可以调整缓冲参数fastcgi_buffer_size 32k;fastcgi_buffers 8 32k;参见:
5.oxy Buffer不够如果你用了Proxying,调整proxy_buffer_size& 16k;proxy_buffers&&&&& 4 16k;参见:
6.https转发配置错误正确的配置方法
server_location /myproj/repos {set $fixed_destination $http_if ( $http_destination ~* ^https(.*)$ ){set $fixed_destination http$1;}proxy_set_header Host $proxy_set_header X-Real- $remote_proxy_set_header Destination $fixed_proxy_}参见:7.查看php-fpm.log错误请参看:
8.php的bug请参看:
9.php-fpm.conf的配置请参看
10.nginx.conf的rewrite-url规则等
11.php-fpm.pid鄙人在/php/sbin/php-fpm 里面把php_fpm_PID=/data1/php/logs/php-fpm.pid修改成#php_fpm_PID=/data1/php/logs/php-fpm.pid故猜想是用户权限的问题已php-fpm.conf里的用户启动该服务估计问题会消失
另外nginx 400 bad request 错误的原因和解决办法 在nginx.conf中,将client_header_buffer_size和large_client_header_buffers都调大,可缓解此问题。其中主要配置是client_header_buffer_size这一项,默认是1k,所以header小于1k的话是不会出现问题的。按我现在配置是:client_header_buffer_size 16k;large_client_header_buffers 4 64k;这个配置可接收16k以下的header,在浏览器中cookie的字节数上限会非常大,所以实在是不好去使用那最大值。本文转载自『北漂石头的博客』更多精彩内容,欢迎访问北漂石头的博客!
&&&&&&&&&&
&&&&&&&&&&
&&&&&&&&&&
&&&&&&&&&&
&&&&&&&&&&
&&&&&&&&&&
河北经济日报社版权所有&未经允许不得复制或镜像&
本站由河北经济日报社全资子公司――河北易联文化传媒有限公司运营&
Email:&&qq:2015517&电话:5
冀ICP备字号&冀新网备&
河北经济日报社网络信息部设计制作
地址:石家庄市裕华西路186号
建议使用分辨率

我要回帖

更多关于 nginx php fpm 配置 的文章

 

随机推荐