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


26

我曾使用nginx和gunicorn在两个服务器上托管我的网站,

两台服务器具有相同版本的软件包,并且网站已成功托管,

但是在我的一台服务器中,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

我收到这样的continueos错误,

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网关错误


1
请提供更多信息吗?您用于启动Gunicorn的命令行将是一个不错的开始。
supervacuo

跟踪工人以了解其卡在哪里:strace -p <PID> -e trace=network -t
Aryeh Leib Taurog

您正在运行什么应用程序?您可能要增加默认超时。
Burhan Khalid 2014年

是的Burhan Khalid,目前我在nginx中将proxy_read_timeout增加到1200,在gunicorn配置中将超时增加到3600。希望这项工作有效
sm 2014年

@sm-有效吗?
iamkhush

Answers:


29

要解决此问题,请增加Nginx中的超时标志,

在Nginx增加proxy_connect_timeout和中proxy_read_timeout,可以在http指令下的nginx.conf文件中添加以下内容。它们默认为60s。

proxy_connect_timeout 300秒;

proxy_read_timeout 300秒;

重新启动Nginx服务器。有关超时,请参见nginx文档

如果以上修复方法不起作用,请在Gunicorn配置中增加Gunicorn超时标志,默认Gunicorn超时为30秒。

-超时90

有关超时的Gunicorn文档

-t INT,--timeout INT 30沉默了许多秒的工人被杀死并重新启动。

一般设置为三十秒。仅当您确定对同步工作程序有影响时,才将其设置为明显更高。对于非同步工作程序,这仅意味着工作程序进程仍在通信,并且与处理单个请求所需的时间无关。

Gunicorn关于工人超时的文档

希望这能解决。


2
一整天都在寻找解决方案后,这种解决方案挽救了我的生命。如果您确实有一个运行时间超过30秒的流程(这是我的问题),那么这绝对是正确的解决方案。
Alex P. Miller'3

是的,即使我们的场景运行时间超过30秒,因此我们采用了该解决方案。很好,它有所帮助。
sreekanth 2015年

我们没有这种情况。现场有小汽车通行,但工人几乎每天都在超时。然后在1-2分钟后开始运行。我的设置是nginx-主管-gunicorn-django。我有120秒的超时时间。
iamkhush

proxy_connect_timeout:“定义与代理服务器建立连接的超时。应注意,该超时通常不能超过75秒。”
deweydb

@iamkhush您能找出解决办法吗?即使我的应用程序处于空闲状态,我也面临着这个问题。Gunicorn员工每天都会超时,而增加超时的解决方案似乎都无效。
Ankit Jaiswal
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.