502 Bad Gateway深究

早上收到502报警,设置的报警规则是502错误两分钟超过500就报警。

排障流程:

  日志分析系统报障-->查看日志系统日志-->nginx错误日志-->php错误日志-->php-fpm.log日志

在日志分析系统里面看到产生502报警的机器只有一台xxx.xxx.xxx.170,客户端IP也只有一个,说明不是大规模故障。

连接到170服务器查看nginx错误日志,看到Connection reset by peer,连接被对方重置,说明php关掉了这个连接

2016/12/29 08:55:04 [error] 1328#0: *766316197 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 123.206.95.156, server: jifen.51.com, request: "GET /center/index HTTP/1.0", upstream: "fastcgi://127.0.0.1:9000", host: "jifen.51.com", referrer: "http://jifen.51.com/"
2016/12/29 08:55:04 [error] 1328#0: *766316178 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 123.206.95.156, server: jifen.51.com, request: "GET /center/index HTTP/1.0", upstream: "fastcgi://127.0.0.1:9000", host: "jifen.51.com", referrer: "http://jifen.51.com/"
2016/12/29 08:55:04 [error] 1328#0: *766316153 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 123.206.95.156, server: jifen.51.com, request: "GET /center/index HTTP/1.0", upstream: "fastcgi://127.0.0.1:9000", host: "jifen.51.com", referrer: "http://jifen.51.com/"
2016/12/29 08:55:04 [error] 1328#0: *766316055 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 123.206.95.156, server: jifen.51.com, request: "GET /center/index HTTP/1.0", upstream: "fastcgi://127.0.0.1:9000", host: "jifen.51.com", referrer: "http://jifen.51.com/"

继续查看日志,看php的错误日志,里面什么也没有。

然后查看php-fpm.log日志文件,看到index.php脚本执行超时,都是30多秒。

[29-Dec-2016 08:55:09] WARNING: [pool www] child 22751 exited on signal 15 (SIGTERM) after 10765.182746 seconds from start
[29-Dec-2016 08:55:09] NOTICE: [pool www] child 10703 started
[29-Dec-2016 08:55:09] WARNING: [pool www] child 10257 exited on signal 15 (SIGTERM) after 10287.255584 seconds from start
[29-Dec-2016 08:55:09] NOTICE: [pool www] child 10705 started
[29-Dec-2016 08:55:11] WARNING: [pool www] child 11311, script ‘/opt/wwwroot/jifen.51.com/www/index.php‘ (request: "GET /center/index") execution timed out (31.152266 sec), terminating
[29-Dec-2016 08:55:11] WARNING: [pool www] child 1432, script ‘/opt/wwwroot/jifen.51.com/www/index.php‘ (request: "GET /center/index") execution timed out (31.370696 sec), terminating
[29-Dec-2016 08:55:11] WARNING: [pool www] child 15998, script ‘/opt/wwwroot/jifen.51.com/www/index.php‘ (request: "GET /center/index") execution timed out (30.236601 sec), terminating
[29-Dec-2016 08:55:11] WARNING: [pool www] child 17886, script ‘/opt/wwwroot/jifen.51.com/www/index.php‘ (request: "GET /center/index") execution timed out (31.273963 sec), terminating
[29-Dec-2016 08:55:11] WARNING: [pool www] child 11019, script ‘/opt/wwwroot/jifen.51.com/www/index.php‘ (request: "GET /center/index") execution timed out (30.752849 sec), terminating
[29-Dec-2016 08:55:11] WARNING: [pool www] child 19115, script ‘/opt/wwwroot/jifen.51.com/www/index.php‘ (request: "GET /center/index") execution timed out (31.055392 sec), terminating
[29-Dec-2016 08:55:11] WARNING: [pool www] child 9978, script ‘/opt/wwwroot/jifen.51.com/www/index.php‘ (request: "GET /center/index") execution timed out (30.037908 sec), terminating

打开php-fpm.conf配置文件,里面设置的request_terminate_timeout = 30 设置的单一脚本执行超过30s就会被终止。

并且php.ini配置文件里max_execution_time = 60,设置单一脚本最多执行60s。

错误原因找到了,产生502 Bad Gateway的原因是这个脚本执行超时。鉴于是单一情况,只有一个用户出现502错误,不是所有用户连接都出现502,也为了减轻服务器压力,未调大request_terminate_timeout值。

时间: 2024-10-12 23:29:27

502 Bad Gateway深究的相关文章

LNMP : 502 Bad Gateway 解决小记,真正的原因

网站搬迁到新的服务器,原先一直都是LAMP,现在改为LNMP. 将重写文件 htaccess改成 nginx的 conf.放到了网站,可只能打开首页,其他重写页面一打开都是不停的加载. 加载等待几十分钟之后会提示 502 Bad Gateway! -- 后来逐一排查,排查到重写规则是没有问题,程序是没有问题,原因出在了数据库连接. -- 排查到最后的原因居然是数据库连接地址 写成了127.0.0.1,改成localhost 之后一切正常. 写到这里 LNMP 网站终于搬迁完毕,原因出人意外. b

nginx 502 Bad Gateway的解决方法总结

昨天自己的机器老提示502 Bad Gateway错误提示,下面小编来给大家总结关于nginx出现502 Bad Gateway的解决方法,有碰到此类问题的朋友可参考. 发生原因 1.PHP FastCGI进程数不够用 当网站并发访问巨大时,php fastcgi的进程数不有一定的保障,因为cgi是单线程多进程工作的,也就是说cgi需要处理完一个页面后再继续下一个页面.如果进程数不够,当访问巨大的时候,cgi按排队处理之前的请求,之后的请求只有被放弃.这个时候nginx就会不时的出现502错误.

Nginx 502 bad gateway错误解决思路

当网站打开遇到Nginx 502 bad gateway的错误,造成这种错误的原因有很多,下面分别解析nginx常见的502错误. 1.nginx配置文件错误 因为nginx找不到php-fpm了,所以报错,一般是fastcgi_pass后面的路径配置错误了,后面可以是socket或者是ip:port 解决方案: [[email protected] ~]# vim/usr/local/nginx/conf/vhosts/www.conf server {    listen 80;    se

Nginx 502 Bad Gateway 错误的原因及解决方法

http://my.oschina.net/zhouyuan/blog/118708 刚才在调试程序的时候,居然服务器502错误,昨天晚上也发生了,好像我没有做非常规的操作. 然后网上寻找了下答案, 把一些原因及解决方法汇总一下,以防生产环境下的502  会有好多种情况出现502错误,下面我们分情况来说一下. 一.fastcgi缓冲区设置过小 出现错误,首先要查找nginx的日志文件,目录为/var/log/nginx,在日志中发现了如下错误. 2013/01/17 13:33:47 [erro

Nginx + php-fpm 执行 PHP 脚本超时 报错 502 Bad Gateway 的解决办法

上周写好的发送邮件的计划任务只发送了一部分,检查计划任务日志,发现 502 Bad Gateway 的错误(已经在脚本中设置了 set_time_limit(0)). 后来在网上查找资料,可以通过以下设置来解决脚本超时导致 502 Bad Gateway 的问题(Nginx + php-fpm,CentOs 系统): ① Nginx 设置 修改 nginx.conf: fastcgi_connect_timeout 300; fastcgi_send_timeout 300; fastcgi_r

502 Bad Gateway

502 Bad Gateway The proxy server received an invalid response from an upstream server. Sorry for the inconvenience.Please report this message and include the following information to us.Thank you very much! URL: http://y.baidu.com/index.html Server:

502 Bad Gateway(PHP的角度来分析)

第一点: request_terminate_timeout引起的资源问题 request_terminate_timeout的值如果设置为0或者过长的时间,可能会引起file_get_contents的资源问题.如果file_get_contents请求的远程资源如果反应过慢,file_get_contents就会一直卡在那里不会超时.我们知道php.ini 里面max_execution_time 可以设置 PHP 脚本的最大执行时间,但是,在 php-cgi(php-fpm) 中,该参数不

502 Bad Gateway nginx 解决

打开 /usr/local/php/etc/php-fpm.conf 调大以下两个参数(根据服务器实际情况,过大也不行) <value name="max_children">5120</value> <value name="max_requests">600</value>502 Bad Gateway nginx 解决

(总结)Nginx 502 Bad Gateway错误触发条件与解决方法

一些运行在Nginx上的网站有时候会出现“502 Bad Gateway”错误,有些时候甚至频繁的出现.以下是从Google搜集整理的一些Nginx 502错误的排查方法,供参考: Nginx 502错误的原因比较多,是因为在代理模式下后端服务器出现问题引起的.这些错误一般都不是nginx本身的问题,一定要从后端找原因!但nginx把这些出错都揽在自己身上了,着实让nginx的推广者备受置疑,毕竟从字眼上理解,bad gateway?不就是bad nginx吗?让不了解的人看到,会直接把责任推在