我设置了3名工人的工人连接并使用了eventlet工人类的gunicorn。它设置在Nginx后面。在每隔几个请求之后,我会在日志中看到它。Gunicorn工人超时错误
[ERROR] gunicorn.error: WORKER TIMEOUT (pid:23475)
None
[INFO] gunicorn.error: Booting worker with pid: 23514
为什么会发生这种情况?我怎样才能弄清楚什么是错误的?
感谢
我设置了3名工人的工人连接并使用了eventlet工人类的gunicorn。它设置在Nginx后面。在每隔几个请求之后,我会在日志中看到它。Gunicorn工人超时错误
[ERROR] gunicorn.error: WORKER TIMEOUT (pid:23475)
None
[INFO] gunicorn.error: Booting worker with pid: 23514
为什么会发生这种情况?我怎样才能弄清楚什么是错误的?
感谢
难道是这个吗? http://docs.gunicorn.org/en/latest/settings.html#timeout
其他可能性可能是您的反应时间过长或停滞不前。
此URL现在是http://docs.gunicorn.org/en/latest/settings.html#timeout – JasonB
您需要使用的其他工人类型的类异步一个像GEVENT或龙卷风看到本作更多的解释: 首先explantion:
您可能还希望如果安装Eventlet或GEVENT您希望您的应用程序代码可能需要请求处理期间暂停长时间
第二个:
默认的同步工作者假定您的应用程序在CPU和网络带宽方面是资源绑定的。通常这意味着你的应用程序不应该做任何需要不确定时间的事情。例如,对互联网的请求符合这个标准。在某些时候,外部网络将会以客户端堆积在您的服务器上的方式失败。
我们在使用Django + nginx + gunicorn时遇到了同样的问题。从Gunicorn文档中我们已经配置了几乎没有区别的优雅超时。
经过一番测试,我们发现解决方案,要配置的参数是:timeout(而不是优雅超时)。它就像一个时钟..
所以,千万:
1)打开gunicorn配置文件
2)将超时设置为你需要什么都 - 值处于秒
NUM_WORKERS=3
TIMEOUT=120
exec gunicorn ${DJANGO_WSGI_MODULE}:application \
--name $NAME \
--workers $NUM_WORKERS \
--timeout $TIMEOUT \
--log-level=debug \
--bind=127.0.0.1:9000 \
--pid=$PIDFILE
谢谢这是正确的答案。然后,为了节省许多并发连接的资源:'pip install gevent' ,然后在你的配置文件中加入'worker_class gevent'或在命令行中加入'-k gevent'。 –
使用gevent解决了我的问题。 – LiberiFatali
我有非常类似的问题,我也使用“的runserver”,看看我能找到任何尝试,但我不得不是一个讯息Killed
所以余吨这可能是资源问题,我继续为实例提供更多内存,并且它工作正常。
即使使用gevent,我也看到了这个问题,并且超时设置正确,内存不足是问题所在 – bcattle
在谷歌云 只需添加--timeout 90
在app.yaml
entrypoint: gunicorn -b :$PORT main:app --timeout 90
你是能够解决问题的入口点?请分享您的想法,因为我也坚持。 'Gunicorn == 19.3.1'和'gevent == 1.0.1' –
找到它的解决方案。增加超时到非常大的值,然后我能够看到堆栈跟踪 –