手机502badgateway怎么解决
成考报名 发布时间:03-13 阅读:
篇一:《nginx +apache 502 bad gateway 排查》
nginx +apache 502 bad gateway 排查
502 bad gateway
一些运行在Nginx上的网站有时候会出现“502 Bad Gateway”错误,有些时候甚至频繁的出现。以下是小编搜集整理的一些Nginx 502错误的排查方法,供参考:
Nginx 502错误的原因比较多,是因为在代理模式下后端服务器出现问题引起的。这些错误一般都不是nginx本身的问题,一定要从后端找原因!但nginx把这些出错都揽在自己身上了,着实让nginx的推广者备受置疑,毕竟从字眼上理解,bad gateway?不就是bad nginx吗?让不了解的人看到,会直接把责任推在nginx身上,希望nginx下一个版本会把出错提示写稍微友好一些,至少不会是现在简单的一句 502 Bad Gateway,另外还不忘附上自己的大名。
Nginx 502的触发条件
502错误最通常的出现情况就是后端主机当机。在upstream配置里有这么一项配置:proxy_next_upstream,这个配置指定了 nginx在从一个后端主机取数据遇到何种错误时会转到下一个后端主机,里头写上的就是会出现502的所有情况拉,默认是error timeout。error就是当机、断线之类的,timeout就是读取堵塞超时,比较容易理解。我一般是全写上的: proxy_next_upstream error timeout invalid_header http_500 http_503;
不过现在可能我要去掉http_500这一项了,http_500指定后端返回500错误时会转一个主机,后端的jsp出错的话,本来会打印一堆 stacktrace的错误信息,现在被502取代了。但公司的程序员可不这么认为,他们认定是nginx出现了错误,我实在没空跟他们解释502的原理 了……
503错误就可以保留,因为后端通常是apache resin,如果apache死机就是error,但resin死机,仅仅是503,所以还是有必要保留的。
解决办法
遇到502问题,可以优先考虑按照以下两个步骤去解决。
1、查看当前的PHP FastCGI进程数是否够用:
netstat -anpo | grep "php-cgi" | wc -l
如果实际使用的“FastCGI进程数”接近预设的“FastCGI进程数”,那么,说明“FastCGI进程数”不够用,需要增大。
2、部分PHP程序的执行时间超过了Nginx的等待时间,可以适当增加nginx.conf配置文件中FastCGI的timeout时间,例如:
http {fastcgi_connect_timeout 300;fastcgi_send_timeout 300;fastcgi_read_timeout 300;......}......
php.ini中memory_limit设低了会出错,修改了php.ini的memory_limit为64M,重启nginx,发现好了,原来是PHP的内存不足了。
如果这样修改了还解决不了问题,可以参考下面这些方案:
一、max-children和max-requests
一台服务器上运行着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无法生成数据传输给客户端)手机502badgateway怎么解决。
解决问题很简单,增加children的数量,并且将 max_requests 设置未 0 或者一个比较大的值:
打开 /usr/local/php/etc/php-fpm.conf调大以下两个参数(根据服务器实际情况,过大也不行)
<value name="max_children">5120</value> <value name="max_requests">600</value> 然后重启php-fpm。
二、增加缓冲区容量大小
将nginx的error log打开,发现“pstream sent too big header while reading response header from upstream”这样的错误提示。查阅了一下资料,大意是nginx缓冲区有一个bug造成的,我们网站的页面消耗占用缓冲区可能过大。参考老外写的修 改办法增加了缓冲区容量大小设置,502问题彻底解决。后来系统管理员又对参数做了调整只保留了2个设置参数:client head buffer,fastcgi buffer size。
三、request_terminate_timeout
如果主要是在一些post或者数据库操作的时候出现502这种情况,而不是在静态页面
操作中常见,那么可以查看一下php-fpm.conf设置中的一项:
request_terminate_timeout手机502badgateway怎么解决。
这个值是max_execution_time,就是fast-cgi的执行脚本时间。
0s
0s为关闭,就是无限执行下去。(当时装的时候没仔细看就改了一个数字)问题解决了,执行很长时间也不会出错了。优化fastcgi中,还可以改改这个值5s 看看效果。
php-cgi进程数不够用、php执行时间长、或者是php-cgi进程死掉,都会出现502错误。 更多错误请访问:
篇二:《接入牛盾CDN后访问网站出现 502 Bad Gateway解决办法》手机502badgateway怎么解决。
接入牛盾CDN后 访问网站出现 502 Bad Gateway解决办法
1.请检查防火墙是否拦截牛盾节点IP
如果空间商防火墙拦截牛盾节点IP,请与空间商联系
如果服务器 防火墙拦截牛盾节点IP,请将牛盾节点IP段自行添加到白名单中 牛盾节点IP
北京市 电信 113.31.27.0~113.31.27.255
北京市 电信 113.31.87.0~113.31.87.255
广东省 电信 183.56.172.0~183.56.172.255
江苏省 电信 222.186.19.0~222.186.19.255
湖北省 电信 119.97.146.0~119.97.146.255
浙江省 电信 122.226.182.0~122.226.182.255
河南省 电信 123.149.54.0~123.149.54.255
山东省 联通 112.253.14.0~112.253.14.255【修改】
山西省 联通 221.204.202.0~221.204.202.255
河南省 联通 42.236.6.0~42.236.6.255
浙江省 移动 115.231.91.0~115.231.91.255
浙江省 电信 61.174.9.0~61.174.9.255
北京市 联通 120.92.248.0~120.92.248.255
浙江省 移动 223.94.66.0~223.94.66.255
河南省 电信 222.88.94.0~222.88.94.255
河南省 联通 61.163.30.0~61.163.30.255
北京市 多线 113.31.134.0~113.31.134.255
浙江省 移动 223.94.95.0~223.94.95.255
江苏省 移动 112.25.11.0~112.25.11.255
福建省 移动 183.250.179.0~183.250.179.255
广东省 移动 183.232.66.0~183.232.66.255
天津市 联通 125.39.5.0~125.39.5.255
北京市 长宽 124.193.166.0~124.193.166.255
北京市 铁通 122.70.134.0~122.70.134.255
香港 宽频 14.136.136.0~14.136.136.255
重庆市 联通 113.207.30.0~113.207.30.255【新增】
河南省 移动 111.7.163.0~111.7.163.255【新增】
浙江省 电信 122.228.198.0~122.228.198.255【新增】
广东省 电信 14.18.142.0~14.18.142.255【新增】
浙江省 联通 60.12.166.0~60.12.166.255【新增】
江苏省 电信 58.217.245.0~58.217.245.255【新增】
如果您的服务器安装了安全软件或者开启了防火墙服务(例如:安全狗、冰盾、云盾、云锁、IPtables等), 请您将牛盾云安全节点IP段加入白名单中,具体方法见帮助文档。
2.请检查网站负载是否超负荷,如果网站负载超出,请扩容服务器
3.请检查牛盾DNS配置是否正确
4.请检查源站服务器accesslog中是否有502请求,并进行对比,如果一致,则是源站本身的问题。
如果您在通过以上方法进行后,仍然不能解决,可以直接联系牛盾客服求助。
篇三:《Nginx 502错误触发条件与解决办法汇总===》
Nginx 502错误触发条件与解决办法汇总 一些运行在Nginx上的网站有时候会出现502 Bad Gateway错误,有些时候甚至频繁的出现。有些站长是在刚刚转移到Nginx之后就出现了这个问题,所以经常会怀疑这是不是Nginx的问题,但事实上这是个误区。 以...
一些运行在Nginx上的网站有时候会出现“502 Bad Gateway”错误,有些时候甚至频繁的出现。有些站长是在刚刚转移到Nginx之后就出现了这个问题,所以经常会怀疑这是不是Nginx的问题,但事实上这是个误区。
以下是从张宴和Ayou的博客搜集整理的一些Nginx 502错误的排查方法,供大家参考:
Nginx 502错误的原因比较多,是因为在代理模式下后端服务器出现问题引起的。这些错误一般都不是nginx本身的问题,一定要从后端找原因!但nginx把这些出错都揽在自己身上了,着实让nginx的推广者备受置疑,毕竟从字眼上理解,bad gateway?不就是bad nginx吗?让不了解的人看到,会直接把责任推在nginx身上,希望nginx下一个版本会把出错提示写稍微友好一些,至少不会是现在简单的一句502 Bad Gateway,另外还不忘附上自己的大名。
Nginx 502的触发条件
502错误最通常的出现情况就是后端主机当机。在upstream配置里有这么一项配置:proxy_next_upstream,这个配置指定了nginx在从一个后端主机取数据遇到何种错误时会转到下一个后端主机,里头写上的就是会出现502的所有情况拉,默认是error timeout。error就是当机、断线之类的,timeout就是读取堵塞超时,比较容易理解。我一般是全写上的:
proxy_next_upstream error timeout invalid_header http_500 http_503;
不过现在可能我要去掉http_500这一项了,http_500指定后端返回500错误时会转一个主机,后端的jsp出错的话,本来会打印一堆stacktrace的错误信息,现在被502取代了。但公司的程序员可不这么认为,他们认定是nginx出现了错误,我实在没空跟他们解释502的原理了„„
503错误就可以保留,因为后端通常是apache resin,如果apache死机就是error,但resin死机,仅仅是503,所以还是有必要保留的。
解决办法
遇到502问题,可以优先考虑按照以下两个步骤去解决。
1、查看当前的PHP FastCGI进程数是否够用:手机502badgateway怎么解决。
netstat -anpo | grep "php-cgi" | wc -l
如果实际使用的“FastCGI进程数”接近预设的“FastCGI进程数”,那么,说明“FastCGI进程数”不够用,需要增大。
2、部分PHP程序的执行时间超过了Nginx的等待时间,可以适当增加nginx.conf配置文件中FastCGI的timeout时间,例如:
......
http
{
......
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
......
}
......
php.ini中memory_limit设低了会出错,修改了php.ini的memory_limit为64M,重启nginx,发现好了,原来是PHP的内存不足了。
如果这样修改了还解决不了问题,可以参考下面这些方案:
一、max-children和max-requests
一台服务器上运行着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 或者一个比较大的值:
打开 /usr/local/php/etc/php-fpm.conf
调大以下两个参数(根据服务器实际情况,过大也不行)
<value name=”max_children”>5120</value>
<value name=”max_requests”>600</value>
然后重启php-fpm。
二、增加缓冲区容量大小
将nginx的error log打开,发现“pstream sent too big header while reading response header from upstream”这样的错误提示。查阅了一下资料,大意是nginx缓冲区有一个bug造成的,我们网站的页面消耗占用缓冲区可能过大。参考老外写的修改办法增加了缓冲区容量大小设置,502问题彻底解决。后来系统管理员又对参数做了调整只保留了2个设置参数:client head buffer,fastcgi buffer size。
三、request_terminate_timeout
如果主要是在一些post或者数据库操作的时候出现502这种情况,而不是在静态页面操作中常见,那么可以查看一下php-fpm.conf设置中的一项:
request_terminate_timeout
这个值是max_execution_time,就是fast-cgi的执行脚本时间。
0s
0s为关闭,就是无限执行下去。(当时装的时候没仔细看就改了一个数字)
发现,问题解决了,执行很长时间也不会出错了。
优化fastcgi中,还可以改改这个值5s 看看效果。
php-cgi进程数不够用、php执行时间长、或者是php-cgi进程死掉,都会出现502错误。
如果您还有其他的解决方法,欢迎与编辑沟通!当然,如果你的网站并发量的确很大,那么最终也许需要寻求系统级的解决办法„„
篇四:《502BadGateway怎么解决》
可以尝试清除浏览器缓存 访问一下你的FTP看是否可以登陆 产生原因 服务器(不一定是Web服务器)是作为网关或代理,以满足客户的要求(如Web浏览器或我们的CheckUpDown机器人)来访问所请求的URL 。此服务器收到无效响应从上游服务器访问履行它的要求。 固定502错误 一般这个问题是由于不良的IP之间的沟通后端计算机,包括您可能尝试访问的在Web服务器上的网站。在分析这个问题,您应该清除浏览器缓存完全。502BadGateway怎么解决。 如果您上网时在您尝试访问的所有网站上都看这个问题,有两种可能 1 )你的ISP了重大设备故障/过载或 2 )有问题的内部互联网连接如您的防火墙无法正常运作。 在第一种情况下,只有您的ISP可以帮助您。在第二种情况下,你需要解决什么,那就是阻止你进入互联网。 如果您只有在部分尝试访问的网站中出现此问题,那就很可能是一个问题,即这些网站之一,其设备故障或超载。联系网站的管理员。