Gunicorn插座消失了

时间:2014-11-11 18:12:19

标签: sockets unix nginx gunicorn

Distributor ID: Ubuntu
Description:    Ubuntu 12.04.4 LTS
Release:    12.04
Codename:   precise

gunicorn (version 19.1.1)
nginx version: nginx/1.1.19

我的枪声:

bind = ["unix:///tmp/someproj1.sock", "unix:///tmp/someproj2.sock"]
pythonpath = "/home/deploy/someproj/someproj"
workers = 5
worker_class = "eventlet"
worker_connections = 25
timeout = 3600
graceful_timeout = 3600

我们昨天下午2点左右开始在我们的开发环境中获得502s。这是在Nginx错误日志中:

connect() to unix:///tmp/someproj1.sock failed (2: No such file or directory) while connecting to upstream"

/ tmp中没有两个gunicorn插座。

今天上午11:55我跑ps -eo pid,cmd,etime|grep gunicorn以获得正常运行时间:

4156 gunicorn: master [myproj.    22:53:54
4161 gunicorn: worker [myproj.    22:53:54
4162 gunicorn: worker [myproj.    22:53:54
4163 gunicorn: worker [myproj.    22:53:54
4164 gunicorn: worker [myproj.    22:53:54
4165 gunicorn: worker [myproj.    22:53:53
5207 grep --color=auto gunicorn        00:00

昨天下午1点到01点,所以枪手及其所有工人一直在不间断地运行。 Nginx访问日志确认在gunicorn启动后大约一小时成功提供请求。然后似乎由于某种原因两个gunicorn套接字消失了,并且gunicorn继续运行而没有写任何错误日志。

关于可能导致这种情况的任何想法?或者如何解决它?

1 个答案:

答案 0 :(得分:2)

事实证明这确实是bug,其中eventlet工作人员在他们自己重启时会删除套接字。

修复程序已经合并到master分支中,但遗憾的是还没有发布(版本19.3仍有问题)。