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继续运行而没有写任何错误日志。
关于可能导致这种情况的任何想法?或者如何解决它?
答案 0 :(得分:2)
事实证明这确实是bug,其中eventlet
工作人员在他们自己重启时会删除套接字。
修复程序已经合并到master分支中,但遗憾的是还没有发布(版本19.3仍有问题)。