nginx+uwsgi的一次错误排查 - Lidong's site 李东的博客

nginx+uwsgi的一次错误排查

前几天看见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的问题吧。
然后执行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: 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,好吧,没问题了。
通过这个问题有些感想,千万不能着急,要慢慢排查,500不一定就是Nginx的问题,要通过error_log来查看问题,先排查一下自己程序调用的服务是否开启。

COMMENTS(1)

  • 1

    Jul 30 2013

    1

LEAVE A COMMENT

Name:*

E-Mail:*

Website:

Message:*

Required fields are marked *

Post Comment