Gunicorn工作者超时错误
我已经设置了3名工人30名工人连接的gunicorn,并使用了eventlet工人class。 它被设置在Nginx之后。 每隔几个请求之后,我在日志中看到这个。
[ERROR] gunicorn.error: WORKER TIMEOUT (pid:23475) None [INFO] gunicorn.error: Booting worker with pid: 23514
为什么发生这种情况? 我怎样才能找出什么是错的?
谢谢
我们使用Django + nginx + gunicorn也遇到同样的问题。 从Gunicorn文档中我们已经configuration了几乎没有区别的优雅超时。
经过一番testing,我们发现解决scheme,要configuration的参数是:timeout(而不是正常超时)。 它像一个时钟一样工作
那么,做:
1)打开gunicornconfiguration文件
2)将TIMEOUT设置为您所需要的值 – 以秒为单位
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
用--log-level=DEBUG
运行Gunicorn。
它应该给你一个应用程序堆栈跟踪。
会不会是这个? http://docs.gunicorn.org/en/latest/settings.html#timeout
其他的可能性可能是你的反应时间太长或停滞不前。
你需要使用其他工人types的类似gevent或龙卷风的asynchronous一个更多的解释看这个:第一个解释:
如果您希望在请求处理期间您的应用程序代码可能需要长时间暂停,您可能还需要安装Eventlet或Gevent
第二个 :
默认的同步工作人员假设您的应用程序在CPU和networking带宽方面是资源绑定的。 通常这意味着你的应用程序不应该做任何需要不确定的时间。 例如,对互联网的请求符合这个标准。 在某些时候,外部networking将以这样一种方式失败,即客户端将堆积在您的服务器上。
我有非常类似的问题,我也尝试使用“runserver”,看看我能find什么,但我只是一个消息Killed
所以我认为这可能是资源问题,我继续给更多的RAM的实例,它的工作。