NGINX+UWSGI 莫名发生Nginx 502 Bad Gateway错误的排查过程
自己有个阿里云UBUNTU运行的Django站,使用NGINX+UWSGI驱动,今天登陆系统后台更新内容出现了几个大字:Nginx 502 Bad Gateway,一看情况不好,这是要糟糕啊。
啊西八!有事儿干了!
首先想到的可能是代码错误,先使用阿里云镜像还原功能还原,备份数据库后,尝试几个还原点均不成功,放弃。
然后怀疑百度一下“502 bad gateway nginx”搜出了一堆垃圾内容,比如:http://www.ha97.com/4004.html,果敢爬梯子上google,搜出来的也不行啊,残念!
上服务器查看错误日志发现Connection reset by peer,喜出望外:
2015/01/06 20:45:13 [error] 841#0: *926 open() "/xxxx/xxxx/plugins/images/layout/preload.gif" failed (2: No such file or directo…………
2015/01/09 18:20:44 [error] 823#0: *6 recv() failed (104: Connection reset by peer) while reading response header from upstream, …………
2015/01/09 18:42:08 [error] 823#0: *12 recv() failed (104: Connection reset by peer) while reading response header from upstream,…………
google告诉我这里有:
http://stackoverflow.com/questions/22697584/nginx-uwsgi-104-connection-reset-by-peer-while-reading-response-header-from-u
据sof说原因是NGINX的默认缓冲区是4096,需要大量数据传输的话可以提高到64k (65535)。一种方法是在UWSGI配置文件添加buffer-size =65535,重启服务器,BINGO!
其实修复过程很简单,时间花费30min,但是最大的感受是找错误一定要找到点上,否则自乱阵脚。
教训:用google别用baidu,找准问题点再找问题原因。
记录一下权当经验自勉。