在重新部署一台服务器的时候遇到一个问题,新手嘛,以前没搞过,确实纠结了一下。记录下此问题,方便以后查看。
错误描述:
网页打开显示的是502错误,查看/var/log/nginx/error.log 出现很多类似*3 upstream prematurely closed connection while reading response header from upstream, client *.*.*.*, server ***.com, request:....的错误
又查看了/var/log/uwsgi/uwsgi.log日志 ,记录显示每次请求都会出现-- unavailable modifier requested: 0--错误
错误原因分析:
作为一个菜鸟,看到这篇文章分析的不错,贴在这里
http://lidongbest5.com/blog/15/转自:
前几天看见linode的邮件,说是服务器要维护,要进行服务器的迁移,但是数据和ip都不变,好吧,我就点了确定后没当个事。第二天挂服务器翻墙不行了,再一看网站500了,呵呵,确实是迁移出问题了.
那么就开始排查呗,首先是看nginx服务状态是正常的,那么再看nginx的错误日志吧,直接写着是:
2013/07/19 07:59:36 [error] 2029#0: *785 connect() failed (111: Connection refused) while connecting to upstream, client: 123.125.116.232, server: lidongbest5.com, request: "GET / HTTP/1.1", upstream: "uwsgi://127.0.0.1:9090", host: "lidongbest5.com"这个直接请求被拒绝了,因为是用的是Nginx+uwsgi,那么应该是uwsgi的问题吧。
2013/07/19 08:12:18 [error] 2029#0: *791 upstream prematurely closed connection while reading response header from upstream, client: 123.125.116.232, server: lidongbest5.com, request: "GET / HTTP/1.1", upstream: "uwsgi://127.0.0.1:9090", host: "lidongbest5.com"这个错误我就没有什么头绪了,然后就网上各种搜,有的说是nginx负载过高,导致timeout没返回,有的说是header响应头的空格的问题,反正是说什么的都有,好吧,负载过高的话就在nginx里加些配置吧,重启nginx后还是不行,这时感觉到是不是有些服务没启动所以才导致没返回。这时就开始排查,然后通过查看/etc/rc.d/init.d/mysqld status,显示mysql 停止,好吧,原来问题是出在这啊,这时使用命令service mysqld start启动mysql,好吧,没问题了。
解决:
服务器在/etc/rc.local文件中设置了自动启动uwsgi服务,在启动的时候加一个参数 --plugin python,重启一下就OK了。
参看
联系客服