乱世西游2502nginx bad gatewayynginx

解决Nginx+PHP-FPM出现502(Bad Gateway)错误问题_服务器应用_Linux公社-Linux系统门户网站
你好,游客
解决Nginx+PHP-FPM出现502(Bad Gateway)错误问题
来源:Linux社区&
作者:Linux
Bad Gateway就是性能或资源不足所导致了,我们浏览网页时常常会碰到一些nginx环境出现这类提醒了,下面我来给大家解决在使用nginx服务器时出来的502(Bad Gateway)错误。
买了一台云服务器后,系统自动给安装了Nginx 1.6 + php 5.3.28 + mysql 5.5
把PHP程序放进云服务器后,首次测试程序访问正常,速度正常
但是把程序放到线上访问后,会逐步发现,访问的PHP页面越来越慢,最后直接出现502 bad gateway问题。
(在php-fpm.conf中,原本就设置了 pm = static 模式,并设置 pm.max_children = 128)
打开nginx访问日志,访问量并不高,平均每秒也就10个不到的请求IP,所以,按理,这点访问量,不可能导致出现PHP请求过多,出现502的。
打开php-fpm.conf日志,出现很多PHP警告问题,
再调整php-fpm的pm模式为pm = dynamic,
pm.start_servers = 20&pm.min_spare_servers = 5&pm.max_spare_servers = 35&pm.max_requests = 10000&&&重启php-fpm后,用ps查看php进程:&ps -ef |grep -c php-fpm& &
22&刚开始,访问PHP很快,然后越来越慢,再次查看进程&ps -ef |grep -c php-fpm& &
从日志和进程变化来看,可以断定是PHP程序出现的问题,是PHP请求太多造成的。大概就是PHP页面中,调用了太多PHP的请求。把这个问题告诉开发后,开发解决之后,服务器再没出现502。
从上面配置来看我们是配置了一个请求数量了,当然这个配置不是最佳的哦,如果你还碰到此类问题可以对参数进行调整。
还有一篇:Nginx+PHP-FPM遇到的502报错
LAMP-PHP-fpm服务器配置
14.04 LTS 安装 LNMP Nginx\PHP5 (PHP-FPM)\MySQL
高负载PHP-FPM调优
Nginx php-fpm出现502解决办法和调优心得
Nginx+PHP-FPM在两台服务器实现
Ubuntu 10.04配置 nginx + php-fpm 模式
Nginx&&PHP-FPM配置及优化指南(上)
Nginx 的详细介绍:Nginx 的下载地址:
本文永久更新链接地址:
相关资讯 & & &
& (12/29/:05)
& (08/25/:09)
& (07/26/:29)
& (10/14/:38)
& (07/25/:19)
图片资讯 & & &
   同意评论声明
   发表
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在网站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款查看: 4580|回复: 13
最后登录QQ个人主页注册时间阅读权限10精华0积分158帖子
铁牌会员, 积分 158, 距离下一级还需 42 积分
声望0 才智0 财富285 银币0
本帖最后由 hyb9512 于
00:40 编辑
之前都一直好好的,今天网站打不开提示 Fatal error: Out of memory (allocated 786432) (tried to allocate 98304 bytes) in&&这样的错误。
我自己百度了一下说是修改php-fpm大小。我就去面板改了php-fpm的参数。就变成这样了。访问网站跟面板后台都是提示
502 Bad Gateway现在有什么办法可以恢复吗?有谁知道的帮帮忙,很急啊。现在这里谢谢了!!!
-------------------------------------------------------------------------------------------------------------------------------
折腾了我两天,终于解决了。哈哈,只怪自己是小白来的。知道是改某个文件就可以了。可就是不知道要改的文件在哪里。
说说我怎么解决的吧。方便后来人。
就是修改/etc/php.ini 这个文件就可以了。自己哪里改错了。改回来就可以了。忘记了的可以下这个php.in恢复默认配置文件。这个帖子里有:
懒人直接下载这个一样的,
最后,谢谢几位回复解答的朋友,真心感谢您们!!!!!!!!!!!
最后登录QQ个人主页注册时间阅读权限50精华0积分3867帖子
银牌会员, 积分 3867, 距离下一级还需 1133 积分
声望0 才智25 财富1943 银币0
php.ini内存限制多少。
/etc/init.d/amh-start 正常?
站的高尿的远
最后登录QQ个人主页注册时间阅读权限10精华0积分158帖子
铁牌会员, 积分 158, 距离下一级还需 42 积分
声望0 才智0 财富285 银币0
Kvm 发表于
php.ini内存限制多少。
/etc/init.d/amh-start 正常?
我就在面板php配置里改了php-fpm值为140,原来的默认值是115.&&/etc/init.d/amh-start试过了。还是一样502.vps重启也是一样。该怎么解决啊
最后登录QQ个人主页注册时间阅读权限50精华0积分3867帖子
银牌会员, 积分 3867, 距离下一级还需 1133 积分
声望0 才智25 财富1943 银币0
hyb9512 发表于
我就在面板php配置里改了php-fpm值为140,原来的默认值是115.&&/etc/init.d/amh-start试过了。还是一样50 ...
把/etc/init.d/amh-start结果都贴出来看看
站的高尿的远
最后登录QQ个人主页注册时间阅读权限10精华0积分158帖子
铁牌会员, 积分 158, 距离下一级还需 42 积分
声望0 才智0 财富285 银币0
Kvm 发表于
把/etc/init.d/amh-start结果都贴出来看看
[LNMP/Nginx] Amysql Host - AMH 4.2
[OK] Nginx stop
=============================================================
[LNMP/Nginx] Amysql Host - AMH 4.2
Shutting down MySQL. SUCCESS!
[OK] MySQL stop
/etc/init.d/amh-start: line 10: kill: (1114) - No such process
/etc/init.d/amh-start: line 10: kill: (1139) - No such process
/etc/init.d/amh-start: line 10: kill: (1180) - No such process
/etc/init.d/amh-start: line 10: kill: (1244) - No such process
/etc/init.d/amh-start: line 10: kill: (1245) - No such process
/etc/init.d/amh-start: line 10: kill: (1248) - No such process
/etc/init.d/amh-start: line 10: kill: (1273) - No such process
/etc/init.d/amh-start: line 10: kill: (1274) - No such process
/etc/init.d/amh-start: line 10: kill: (1275) - No such process
=============================================================
[LNMP/Nginx] Amysql Host - AMH 4.2
Starting MySQL. SUCCESS!
[OK] MySQL start
=============================================================
[LNMP/Nginx] Amysql Host - AMH 4.2
[Notice] All PHP start...
=============================================================
[LNMP/Nginx] Amysql Host - AMH 4.2
[Notice] xxxx PHP start...
[OK] xxxx PHP start
=============================================================
[LNMP/Nginx] Amysql Host - AMH 4.2
[Notice] xxxxx start...
[OK] xxxxx PHP start
=============================================================
[LNMP/Nginx] Amysql Host - AMH 4.2
[Notice] xxxxx PHP start...
[OK] xxxxx PHP start
=============================================================
[LNMP/Nginx] Amysql Host - AMH 4.2
[Notice] xxxx PHP start...
[OK] xxxxx PHP start
=============================================================
[LNMP/Nginx] Amysql Host - AMH 4.2
[Notice] xxxxx PHP start...
[OK] xxxxx PHP start
=============================================================
[LNMP/Nginx] Amysql Host - AMH 4.2
[Notice] xxxxx PHP start...
[OK] xxxxx PHP start
=============================================================
[LNMP/Nginx] Amysql Host - AMH 4.2
PHP start...
=============================================================
[LNMP/Nginx] Amysql Host - AMH 4.2
PHP start...
=============================================================
[LNMP/Nginx] Amysql Host - AMH 4.2
PHP start...
=============================================================
[LNMP/Nginx] Amysql Host - AMH 4.2
PHP start...
=============================================================
[LNMP/Nginx] Amysql Host - AMH 4.2
PHP start...
=============================================================
[LNMP/Nginx] Amysql Host - AMH 4.2
[Notice] xxxx.net PHP start...
[OK] xxxx.net PHP start
=============================================================
[LNMP/Nginx] Amysql Host - AMH 4.2
PHP start...
Starting pure-config.pl: Running: /usr/local/sbin/pure-ftpd --daemonize -A -c50 -B -C8 -D -E -fftp -H -I15 -lpuredb:/etc/pureftpd.pdb -lunix -L10000:8 -m4 -s -U133:022 -u100 -k99 -Z -p
=============================================================
[LNMP/Nginx] Amysql Host - AMH 4.2
[OK] Nginx start
最后登录QQ个人主页注册时间阅读权限50精华0积分3867帖子
银牌会员, 积分 3867, 距离下一级还需 1133 积分
声望0 才智25 财富1943 银币0
hyb9512 发表于
[LNMP/Nginx] Amysql Host - AMH 4.2
都没报错啊。这么多站都设140个php-fpm进程???有没内存。
手动改网站php-fpm配置,改后重启面板。
/usr/local/php/etc/fpm
站的高尿的远
最后登录QQ个人主页注册时间阅读权限10精华0积分158帖子
铁牌会员, 积分 158, 距离下一级还需 42 积分
声望0 才智0 财富285 银币0
是改哪个文件啊,我新手来的。你QQ多少。我联系你,要不我给你主机信息,你帮我搞搞,好嘛,多谢了。
这是我php-fpm.conf文件信息
;include=etc/fpm/*.conf
pid = run/php-fpm.pid
log_level = error
listen = /tmp/php-cgi.sock
user = www
group = www
pm = static
pm.max_children = 2
pm.start_servers = 2
pm.min_spare_servers = 2
pm.max_spare_servers = 3
request_terminate_timeout = 0
rlimit_files = 51200
对了。fpm文件下的amh.conf怎么是空的。显示0kb
最后登录QQ个人主页注册时间阅读权限10精华0积分158帖子
铁牌会员, 积分 158, 距离下一级还需 42 积分
声望0 才智0 财富285 银币0
Kvm 发表于
都没报错啊。这么多站都设140个php-fpm进程???有没内存。
手动改网站php-fpm配置,改后重启面板。
是改哪个文件啊,我新手来的。你QQ多少。我联系你,要不我给你主机信息,你帮我搞搞,好嘛,多谢了。
这是我php-fpm.conf文件信息
;include=etc/fpm/*.conf
pid = run/php-fpm.pid
log_level = error
listen = /tmp/php-cgi.sock
user = www
group = www
pm = static
pm.max_children = 2
pm.start_servers = 2
pm.min_spare_servers = 2
pm.max_spare_servers = 3
request_terminate_timeout = 0
rlimit_files = 51200
对了。fpm文件下的amh.conf怎么是空的。显示0kb
最后登录QQ个人主页注册时间阅读权限50精华0积分3127帖子
银牌会员, 积分 3127, 距离下一级还需 1873 积分
声望0 才智4 财富1789 银币0
amh.conf 是空的。楼上是amh面板自身的php-fpm配置
最后登录QQ个人主页注册时间阅读权限10精华0积分158帖子
铁牌会员, 积分 158, 距离下一级还需 42 积分
声望0 才智0 财富285 银币0
ali 发表于
amh.conf 是空的。楼上是amh面板自身的php-fpm配置
哪到底是修改哪个文件啊。我不知道是改哪里。麻烦告知下吧。大哥,先谢谢了
Powered by超简单Nginx 502 Bad Gateway错误及解决方案
以下内容来自网络或网友投稿,不承担连带责任,如有侵权问题请联系我删除。投稿如果是首发请注明‘第一站首发’。如果你对本站有什么好的要求或建议。那么都非常感谢你能-
1.FastCGI worker进程数是否不够 通过命令查看服务器上一共开了多少的 php-cgi 进程 ps -fe |grep php | grep -v grep | wc -l 使用如下命令查看已经有多少个php-cgi进程用来处理tcp请求 netstat -anop | grep php | g
1.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进程数设置太少 有时超时时间设置过低也会引起502错误。
修改:php-fpm.conf配置文件,&value name=&max_children&&5120&/value&、&value name=&max_requests&&600&/value&、&value name=&request_terminate_timeout&&1200s&/value&这三个中间的数按照实际情况修改。前一个是设置最大进程数,中间一个设置最大请求数,最后一个是请求超时数的设置。
2.FastCGI执行时间过长 根据实际情况调高以下参数值
fastcgi_connect_timeout 300; fastcgi_send_timeout 300; fastcgi_read_timeout 300;
3.FastCGI Buffer不够 nginx和apache一样,有前端缓冲限制,可以调整缓冲参数
fastcgi_buffer_size 32k; fastcgi_buffers 8 32k;
这个一般你能在日志中看到:upstream sent too big header while reading response header from upstream 意思就是反馈回来的头部信息太大,好多是Firefox浏览时才出现,是它的插件引起的。
4.Proxy Buffer不够 如果你用了Proxying,试试调整
proxy_buffer_size 16k; proxy_buffers 4 16k;
5.php-fpm的日志文件超过2G 在32位机器上 超过2G的日志文件是无法读取的 请检查下
注意问题2、3、4的解决代码既可以加入nginx.conf文件http属性内也可以加入server或location属性。但无论添加到哪里注意代码不能重复,否则启动时nginx会报错。
(责任编辑:admin)
------分隔线----------------------------
评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
能说人话?当前位置: >
Nginx出现502
bad gateway和504错误的解决办法
时间:    来源:服务器之家    投稿:root
php执行时间 request_terminate_timeout
Nginx的502错误
重启服务器后发现Nginx在我的WordPress报502 Bad Gateway错误。
查了好久,以为是.conf或者php-fpm.conf的错,突然想起来,好像哪里看到说php.ini中memory_limit设低了会出错,
修改了php.ini的memory_limit为64M,重启nginx,发现真好了~
原来是PHP的内存不足了。
360M内存的服务器,扛这点应用应该OK~
――――――――――――――――――――――――――――――
nginx+php 502 bad gateway解决方法
打开 /usr/local/php/etc/php-fpm.conf
调大以下两个参数(根据服务器实际情况,过大也不行)
修改后速度快了,好象占用cpu也下降了
―――――――――――――――――――――――――――――C
nginx 502 bad故障原因及解决方法收集
如题,最近网站频繁出现502错误,简直无法正常运转,出现这种情况大多是php-cgi超时没有返回信息,或进程僵死等情况造成的,参考张宴的这篇关于502错误的解决办法(/read.php?361),并咨询系统管理员高手,我们的nginx已经配置到极致这些都已经老早做过修改了,但现在又出然出现。
经过分析将nginx的error log打开,发现”pstream sent too big header while
reading response header from
upstream”这样的错误提示,查阅了一下资料,大意是nginx缓冲区有一个bug造成的,我们网站的页面消耗占用缓冲区可能过大。参考老外写的修改办法增加了缓冲区容量大小设置,502问题彻底解决,后来系统管理员又对参数做了调整只保留了2个设置参数:client
head buffer,fastcgi buffer size。
/nginx/nginx_400_bad_request.html
二、昨天装上nginx后在高负载的时候,论坛上传图片或者执行较长时间脚本的时候就不停的出现502 Bad Gateway
,网上搜了,大多数都是张大师的那篇解决方案,他的解决方案是
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
增加了fastcgi的相应请求时间。但是我在实际中碰到了这个问题,设置到500,还是会出现,只是比我设置120的时候要少一些。后来发现主要是在一些post或者数据库操作的时候出现这种情况,静态页面是不会出现的。
反复的查问题,调试,也加大了CGI的进程数。
256再加上去可能会变得很慢。占用内存大了。
在php-fpm.conf设置中还有一项,可能当时没注意到,无意中改了这个值。
request_terminate_timeout
这个值是max_execution_time,就是fast-cgi的执行脚本时间。
0s为关闭,就是无限执行下去。(当时装的时候没仔细看就改了一个数字)
发现,问题解决了,执行很长时间也不会出错了。
优化fastcgi中,还可以改改这个值5s 。看看效果
终于发现502的错误其实不是nginx的问题,哈哈
php-cgi进程数不够用、php执行时间长、或者是php-cgi进程死掉,都会出现502错误
一台服务器上运行着nginx php(fpm) xcache,访问量日均 300W pv左右
最近经常会出现这样的情况:
php页面打开很慢,cpu使用率突然降至很低,系统负载突然升至很高,查看网卡的流量,也会发现突然降到了很低。这种情况只持续数秒钟就恢复了
检查php-fpm的日志文件发现了一些线索
Sep 30 08:32:23.289973 [NOTICE] fpm_unix_init_main(), line 271:
getrlimit(nofile): max:51200, cur:51200
Sep 30 08:32:23.290212 [NOTICE] fpm_sockets_init_main(), line 371:
using inherited socket fd=10, “127.0.0.1:9000″
Sep 30 08:32:23.290342 [NOTICE] fpm_event_init_main(), line 109:
libevent: using epoll
Sep 30 08:32:23.296426 [NOTICE] fpm_init(), line 47: fpm is
running, pid 30587
在这几句的前面,是1000多行的关闭children和开启children的日志
原来,php-fpm有一个参数 max_requests
,该参数指明了,每个children最多处理多少个请求后便会被关闭,默认的设置是500。因为php是把请求轮询给每个children,在大流量下,每个childre到达max_requests所用的时间都差不多,这样就造成所有的children基本上在同一时间被关闭。
在这期间,nginx无法将php文件转交给php-fpm处理,所以cpu会降至很低(不用处理php,更不用执行sql),而负载会升至很高(关闭和开启children、nginx等待php-fpm),网卡流量也降至很低(nginx无法生成数据传输给客户端)
解决问题很简单,增加children的数量,并且将 max_requests 设置未 0
或者一个比较大的值,重启php-fpm
502错误的原因比较多,是因为在代理模式下后端服务器出现问题引起的。这些错误一般都不是nginx本身的问题,一定要从后端找原因!但nginx把这些出错都揽在自己身上了,着实让nginx的推广者备受置疑,毕竟从字眼上理解,bad
gateway?不就是bad
nginx吗?让不了解的人看到,会直接把责任推在nginx身上,希望nginx下一个版本会把出错提示写稍微友好一些,至少不会是现在简单的一句502
Bad Gateway,另外还不忘附上自己的大名。
502错误最通常的出现情况就是后端主机当机,当然还有。在upstream配置里有这么一项配置:proxy_next_upstream,这个配置指定了nginx在从一个后端主机取数据遇到何种错误时会转到下一个后端主机,里头写上的就是会出现502的所有情况拉,默认是error
timeout,error就是当机、断线之类的,timeout就是读取堵塞超时,比较容易理解。我一般是全写上的:
proxy_next_upstream error timeout invalid_header http_500
不过现在可能我要去掉http_500这一项了,http_500指定后端返回500错误时会转一个主机,后端的jsp出错的话,本来会打印一堆stacktrace的错误信息,现在被502取代了。但公司的程序员可不这么认为,他们认定是nginx出现了错误,我实在没空跟他们解释502的原理了……
invalid_header我也没认真查清到底指的什么,我也很想先把它弄下来。
503错误就可以保留,因为后端通常是apache
resin,如果apache死机就是error,但resin死机,仅仅是503,所以还是有必要保留的。
对nginx fastcgi使用的情况,我现在用得不多,不熟就不乱说了。
大内存可以把以下参数调大,可有效减少502错误
php-fpm中主要修改参数
128 //每一个消耗大约20M内存,根据内存大小设置
1024 //每个max_children进程若超过这个数目,就自动杀死,以后用到会自动重建。一般设置1000左右。
//如果你的服务器性能足够好,且宽带资源足够充足,PHP脚本没有系循环或BUG的话你可以直接将”request_terminate_timeout”设置成0s。0s的含义是让PHP-CGI一直执行下去而没有时间限制。而如果你做不到这一点,也就是说你的PHP-CGI可能出现某个BUG,或者你的宽带不够充足或者其他的原因导致你的PHP-CGI能够假死那么就建议你给”request_terminate_timeout”赋一个值,这个值可以根据你服务器的性能进行设定。一般来说性能越好你可以设置越高,20分钟-30分钟都可以。由于我的服务器PHP脚本需要长时间运行,有的可能会超过10分钟因此我设置了900秒,这样不会导致PHP-CGI死掉而出现502
Bad gateway这个错误。
nginx中主要修改参数
fastcgi_connect_timeout 1800;
fastcgi_send_timeout 1800;
fastcgi_read_timeout 1800;
fastcgi_buffer_size 1024k;
fastcgi_buffers 32 1024k;
fastcgi_busy_buffers_size 2048k;
fastcgi_temp_file_write_size 2048k;
注:两个1024k值必须相等,否则报错
以下是默认参数
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 128k;
――――――――――――――――――――――――――――――――-
[ 文章作者:韦少乾 转载请注明原文链接:/nginx-502-504/ ]
一、错误提示说明:
Nginx 502 Bad
Gateway的含义是请求的PHP-CGI已经执行,但是由于某种原因(一般是读取资源的问题)没有执行完毕而导致PHP-CGI进程终止。
Nginx 504 Gateway
Time-out的含义是所请求的网关没有请求到,简单来说就是没有请求到可以执行的PHP-CGI。
二、错误提示原因分析:
解决这两个问题其实是需要综合思考的,一般来说Nginx 502 Bad
Gateway和php-fpm.conf的设置有关,
而Nginx 504 Gateway Time-out则是与nginx.conf的设置有关。
php-fpm.conf有两个至关重要的参数,一个是”max_children”,另一个是”request_terminate_timeout”
,但是这个值不是通用的,而是需要自己计算的。
计算的方式如下:
如果你的服务器性能足够好,且宽带资源足够充足,PHP脚本没有系循环或BUG的话你可以直接将”request_terminate_timeout”设置成0s。0s的含义是让PHP-CGI一直执行下去而没有时间限制。而如果你做不到这一点,也就是说你的PHP-CGI可能出现某个BUG,或者你的宽带不够充足或者其他的原因导致你的PHP-CGI能够假死那么就建议你给”request_terminate_timeout”赋一个值,这个值可以根据你服务器的性能进行设定。一般来说性能越好你可以设置越高,20分钟-30分钟都可以。由于我的服务器PHP脚本需要长时间运行,有的可能会超过10分钟因此我设置了900秒,这样不会导致PHP-CGI死掉而出现502
Bad gateway这个错误。
而”max_children”这个值又是怎么计算出来的呢?这个值原则上是越大越好,php-cgi的进程多了就会处理的很快,排队的请求就会很少。设置”max_children”也需要根据服务器的性能进行设定,一般来说一台服务器正常情况下每一个php-cgi所耗费的内存在20M左右,因此我的”max_children”我设置成40个,20M*40=800M也就是说在峰值的时候所有PHP-CGI所耗内存在800M以内,低于我的有效内存1Gb。而如果我的”max_children”设置的较小,比如5-10个,那么php-cgi就会“很累”,处理速度也很慢,等待的时间也较长。如果长时间没有得到处理的请求就会出现504
Gateway Time-out这个错误,而正在处理的很累的那几个php-cgi如果遇到了问题就会出现502 Bad
gateway这个错误。
三、临时解决办法:
综上所述,Nginx提示502和504错误的临时解决办法是:
1、调整php-fpm.conf的相关设置:
2、调整nginx.conf的相关设置:
fastcgi_connect_timeout 600;
fastcgi_send_timeout 600;
fastcgi_read_timeout 600;
fastcgi_buffer_size 256k;
fastcgi_buffers 16 256k;
fastcgi_busy_buffers_size 512k;
fastcgi_temp_file_write_size 512k;
四、终级解决方案:
标题3中所示的解决方案只能临时解决问题,而如果网站的访问量确实非常非常大,而Nginx+FastCGI只能对处理瞬间或短时间内的高并发有很好的效果,所以目前唯一的终极解决方案是:定时平滑重启php-cgi。
具体配置如下:
1、写一个非常简单的脚本:
#vi /home/www/scripts/php-fpm.sh
内容如下:
#!/bin/bash
# This script run at */1
/usr/local/php/sbin/php-fpm reload
2、将脚本添加至计划任务:
#crontab -e
内容如下:
*/1 * * * * /home/www/scripts/php-fpm.sh
注:为了省事起见,也可以不写脚本,直接在crontab里写入php-fpm的平滑重启命令。
转载请注明原文地址:在php.ini里,eaccelerator配置项一定要放在Zend Optimizer配置之前,否则也可能引起502 Bad Gateway。php一些模块之间也可能会造成502,如Zend GuardLoader与Opcache,ioncube与Zend GuardLoader等,一般可以通过注释掉一个然后重启php-fpm,然后看是否还502进行排除。
第三种原因:
在安装好使用过程中出现502问题,一般是因为默认php-cgi进程是5个,可能因为phpcgi进程不够用而造成502,需要修改/usr/local/php/etc/php-fpm.conf 将其中的max_children值适当增加,如果php已升级到5.3.*以上且使用的是dynamic模式,需要调整pm.max_spare_servers参数的值。
也有可能是max_requests值不够用。
第四种原因:
php执行超时,修改/usr/local/php/etc/php.ini 将max_execution_time 改为300
第五种原因:
磁盘空间不足,如清理一下磁盘上的文件,有部分剩余空间,重启即可恢复。
第六种原因:
查看php-cgi或php-fpm进程是否在运行
第七种原因:
将nginx.conf里的
fastcgi_connect_timeout
fastcgi_send_timeout
fastcgi_read_timeout都调大一点。
第八种可能原因:
九、有时候也可能是自己修改过下面2处的配置,导致nginx配置文件里的设置和php-fpm上的设置不一样也会502。如果使用unix套接字,修改/usr/local/php/etc/f 里设置,php 5.2为/tmp/php-cgi.sockphp 5.3及以上版本为listen = /tmp/php-cgi.sock ,同时/usr/local/nginx/conf/nginx.conf 及其/usr/local/nginx/conf/vhost/ 下面的虚拟主机配置里的fastcgi_pass
unix:/tmp/php-cgi. 不一致就必定502。
有时候unix套接字模式下可能会502,可以尝试改成tcp/ip的方式 php 5.2下/tmp/php-cgi.sock替换为127.0.0.1:9000php 5.3及以上版本listen = /tmp/php-cgi.sock替换为listen = 127.0.0.1:9000,nginx配置文件及虚拟主机配置文件里fastcgi_pass
unix:/tmp/php-cgi.替换为fastcgi_pass
127.0.0.1:9000;
之后重启试试。
还需要补充的就是不要按网上找到的教程随便修改配置,网上找到的可能会路径不一样,也可能会导致502或有相关的错误产生。
十、如果虚拟主机的日志文件过大也可能会造成502问题。
建议定期清空一下虚拟主机的日志文件。
十一、有些程序或者程序的主题有死循环或其他非常占用资源的代码也可能会引起502,可以尝试暂时注释掉可能的主机的配置文件,重启看看是否还会502。
十二、如果以上方法都试过,但还有时会出现502错,可以尝试添加502自动重启脚本:
十三、实在找不到原因可以开启slowlog看看慢日志是否有相关有用的信息:
十四、升级PHP后出现502,可能php没升级成功。
如果是1.0之前的版本升级PHP到5.4或5.5后,可能是因为这个原因:
十五、CentOS 6 下,wordpress访问后台、安装wp、安装插件报502错误的解决方法:
本站架设在上提供下载镜像

我要回帖

更多关于 nginx bad gateway 的文章

 

随机推荐