nginx 502 Bad Gateway 错误解决办法

  • 时间:
  • 浏览:2
  • 来源:5分11选5-5分11选5平台_5分11选5网投平台
作者:190 hihi 来源:ChinaZ源码报导 浏览: 2011-5-26 14:19:42 字号:大 中 小

[摘要]就是运行在Nginx上的网站有完后 会再次出现“1502 Bad Gateway”错误,就是完后 甚至频繁的再次出现。小编搜集埋点的就是Nginx 1502错误的排查措施 供亲戚亲戚朋友参考。

  就是运行在Nginx上的网站有完后 会再次出现“1502 Bad Gateway”错误,就是完后 甚至频繁的再次出现。以下是小编搜集埋点的就是Nginx 1502错误的排查措施 ,供参考:

  Nginx 1502错误的原因比较多,是或者在代理模式下后端服务器再次出现什么的问题引起的。哪些地方地方错误一般都都不 nginx并都不 的什么的问题,一定要从后端找原因!但nginx把哪些地方地方出错都揽在当事人身上了,嘴笨 让nginx的推广者备受置疑,毕竟从字眼上理解,bad gateway?不或者bad nginx吗?让不了解的人都看,会直接把责任推在nginx身上,希望nginx下有一一三个白多 版本会把出错提示写稍微友好就是,大概不必是现在简单的一句 1502 Bad Gateway,另外还不忘附上当事人的大名。

Nginx 1502的触发条件

  1502错误最通常的再次出现状态或者后端主机当机。在upstream配置里有越来越一项配置:proxy_next_upstream,就是配置指定了 nginx在从有一一三个白多 后端主机取数据遇到何种错误都不 转到下有一一三个白多 后端主机,里头写上的或者会再次出现1502的所有状态拉,默认是error timeout。error或者当机、断线这名 的,timeout或者读取堵塞超时,比较容易理解。我一般是全写上的:

proxy_next_upstream error timeout invalid_header http_1150 http_1503;

  不过现在或者愿意上加http_1150就是项了,http_1150指定后端返回1150错误都不 转有一一三个白多 主机,后端的jsp出错搞笑的话,曾经会打印一堆 stacktrace的错误信息,现在被1502取代了。但公司的应用系统进程员可不越来越认为,亲戚亲戚朋友认定是nginx再次出现了错误,嘴笨 没空跟亲戚亲戚朋友解释1502的原理 了……

1503错误就都须要保留,或者后端通常是apache resin,或者apache死机或者error,但resin死机,仅仅是1503,就是还是有必要保留的。

处里措施

遇到1502什么的问题,都须要优先考虑按照以下有一一三个白多 步骤去处里。

1、查看当前的PHP FastCGI应用应用系统进程数算不算够用:

netstat -anpo | grep "php-cgi" | wc -l

或者实际使用的“FastCGI应用应用系统进程数”接近预设的“FastCGI应用应用系统进程数”,越来越,说明“FastCGI应用应用系统进程数”不够用,须要增大。

2、每段PHP应用系统进程的执行时间超过了Nginx的等待,都须要适当增加nginx.conf配置文件中FastCGI的timeout时间,这名 :

http  {

fastcgi_connect_timeout 150;

fastcgi_send_timeout 150;

fastcgi_read_timeout 150;

......

}

......

  php.ini中memory_limit设低了会出错,修改了php.ini的memory_limit为64M,重启nginx,发现好了,曾经是PHP的内存不够了。

  或者曾经修改了还处里不了什么的问题,都须要参考下面哪些地方地方方案:

一、max-children和max-requests

  一台服务器上运行着nginx php(fpm) xcache,访问量日均 150W pv左右。

  最近总是会再次出现曾经的状态:php页面打开越来越快了 ,cpu使用率总是降至很低,系统负载总是升至很高,查看网卡的流量,也会发现总是降到了很低。就是状态只持续数秒钟就恢复了。

  检查php-fpm的日志文件发现了就是线索。

Sep 150 08:32:23.289973 [NOTICE] fpm_unix_init_main(), line 271: getrlimit(nofile): max:51150, cur:51150  Sep 150 08:32:23.290212 [NOTICE] fpm_sockets_init_main(), line 371: using inherited socket fd=10, “127.0.0.1:9000″  Sep 150 08:32:23.290342 [NOTICE] fpm_event_init_main(), line 109: libevent: using epoll  Sep 150 08:32:23.296426 [NOTICE] fpm_init(), line 47: fpm is running, pid 150587

  在这几句的前面,是11150多行的关闭children和开启children的日志。

  曾经,php-fpm有有一一三个白多 参数 max_requests,该参数指明了,每个children最多处里有几块个请求后便会被关闭,默认的设置是1150。或者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">1500</value>

  或者重启php-fpm。

二、增加缓冲区容量大小

  将nginx的error log打开,发现“pstream sent too big header while reading response header from upstream”曾经的错误提示。查阅了一下资料,大意是nginx缓冲区有有一一三个白多 bug造成的,亲戚亲戚朋友网站的页面消耗占用缓冲区或者过大。参考日本日本男友见面写的修 改措施 增加了缓冲区容量大小设置,1502什么的问题彻底处里。就是系统管理员又对参数做了调整只保留了有一一三个白多 设置参数:client head buffer,fastcgi buffer size。

三、request_terminate_timeout

  或者主或者在就是post或者数据库操作的完后 再次出现1502就是状态,而都不 在静态页面操作中常见,越来越都须要查看一下php-fpm.conf设置中的一项:

request_terminate_timeout

就是值是max_execution_time,或者fast-cgi的执行脚本时间。

0s

0s为关闭,或者无限执行下去。(当时装的完后 没仔细看就改了有一一三个白多 数字)什么的问题处里了,执行很长时间或者会出错了。优化fastcgi中,还都须要改改就是值5s 看看效果。

php-cgi应用应用系统进程数不够用、php执行时间长、或者是php-cgi应用应用系统进程死掉,都不 再次出现1502错误。

Nginx下载

sssss
Tags: nginx 1502 Bad Gateway  
责任编辑:190