分享

记录一次nginx+uwsgi服务器部署出现的502错误

 ccccshq 2015-04-27

在重新部署一台服务器的时候遇到一个问题,新手嘛,以前没搞过,确实纠结了一下。记录下此问题,方便以后查看。

错误描述:

网页打开显示的是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:///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: , request: "GET / HTTP/1.1", upstream: "uwsgi://127.0.0.1:9090", host: ""
这个直接请求被拒绝了,因为是用的是Nginx+uwsgi,那么应该是uwsgi的问题吧。
然后执行netstat -lnp | grep 9090,果然发现uwsgi的9090端口没有在运行,然后一看uwsgi就没有启动,好吧,启动wusgi,再看9090端口运行中。。。
再次访问,发现还是500,这时报错:
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: , request: "GET / HTTP/1.1", upstream: "uwsgi://127.0.0.1:9090", host: ""
这个错误我就没有什么头绪了,然后就网上各种搜,有的说是nginx负载过高,导致timeout没返回,有的说是header响应头的空格的问题,反正是说什么的都有,好吧,负载过高的话就在nginx里加些配置吧,重启nginx后还是不行,这时感觉到是不是有些服务没启动所以才导致没返回。这时就开始排查,然后通过查看/etc/rc.d/init.d/mysqld status,显示mysql 停止,好吧,原来问题是出在这啊,这时使用命令service mysqld start启动mysql,好吧,没问题了。 
通过这个问题有些感想,千万不能着急,要慢慢排查,500不一定就是Nginx的问题,要通过error_log来查看问题,先排查一下自己程序调用的服务是否开启。


解决:

服务器在/etc/rc.local文件中设置了自动启动uwsgi服务,在启动的时候加一个参数 --plugin python,重启一下就OK了。

参看

Artoirus的 快速使用uwsgi部署





    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多