如何解决gunicorn关键工人超时错误?

我用nginxgunicorn来托pipe我的网站在两台服务器上,

两台服务器都有相同版本的软件包,网站成功托pipe,

但在我的一个服务器gunicorn总是超时,我得到错误

[CRITICAL]Worker Timeout Booting worker with pid Worker cannot boot with pid 

在此之后,我在网页中得到502 Badgateway错误。 我必须重新启动gunicorn进程来调出网站。

以下是错误日志:

 2014-02-16 14:29:53 [1267] [CRITICAL] WORKER TIMEOUT (pid:4994) 2014-02-16 14:29:53 [1267] [CRITICAL] WORKER TIMEOUT (pid:4994) 2014-02-16 14:29:53 [22140] [INFO] Booting worker with pid: 22140 

我得到这样的连续性错误,

 2014-02-16 14:29:53 [22140] [DEBUG] Ignoring EPIPE Ignoring EPIPE 2014-02-16 14:29:53 [22140] [DEBUG] Ignoring EPIPE Ignoring EPIPE 2014-02-16 14:29:57 [22140] [DEBUG] Ignoring EPIPE Ignoring EPIPE 

工人再次启动,

 2014-02-16 14:32:44 [1267] [CRITICAL] WORKER TIMEOUT (pid:4993) 2014-02-16 14:32:44 [1267] [CRITICAL] WORKER TIMEOUT (pid:4993) 2014-02-16 14:32:44 [22276] [INFO] Booting worker with pid: 22276 

再次忽略EPIPE错误,并继续,直到我重新启动gunicorn。 而当我得到这个错误,我从Nginx得到504网关错误

    为了解决这个问题,在Nginx中增加了超时标志,

    在Nginx中增加proxy_connect_timeout和proxy_read_timeout,你可以在nginx.conf文件中添加以下内容

    proxy_connect_timeout 300s;

    proxy_read_timeout 300s;

    重新启动Nginx服务器

    如果上述修正不起作用,则在Gunicornconfiguration中增加Gunicorn超时标志,默认Gunicorn超时为30秒。

    – 超过90

    Gunicorn有关超时的文档

    -t INT,–timeout INT 30工作人员沉默了超过这么多秒,就被杀死并重新启动。

    一般设定为三十秒。 如果你确定同步工作人员的影响,只有把这个设置得更高一些。 对于非同步工作者来说,这意味着工作者进程仍在进行通信,并且不受处理单个请求所需时间的限制。

    关于工人超时的Gunicorn Docs

    希望这能解决它。