开发的网站通过nginx部署后,报 502 Bad Gateway
打开了nginx的error日志后,发现如下信息:
2016/03/25 12:28:04 [error] 24207#0: *22 upstream prematurely closed connection while reading response header from upstream, client: 218.88.28.206, server: most3d.cn, request: “GET /model/15/ HTTP/1.1”, upstream: “uwsgi://127.0.0.1:9090”, host: “most3d.cn:8000”
应该是uwsgi先于nginx超时终止了。
于是我在uwsgi配置文件中添加了 :
socket-timeout=10
将连接超时时间设为了10秒(uwsgi默认是4秒)
问题得以解决。
事后分析:
这个问题,在刚开始部署时并不严重,偶尔产生一两次,但版本更迭几次后,变得经常502了,可能是某些地方代码处理的不好,同步操作太多,准备后期审查代码执行效率问题。
2016.3.29
再次产生502问题,nginx报错和之前一样,但奇怪的是,同样类型的页面,有些报502,有些正常,后同事查出,是页面生成时数据库没有正常写入,而读取时,flask进行sql相关操作报错造成。
由此可见,程序执行错误,造成uwsgi进程意外中止,也会造成502错误。