【问题标题】:Gunicorn process failing to respondGunicorn 进程无法响应
【发布时间】:2014-11-19 08:59:20
【问题描述】:

设置如下

Nginx 反向代理 -> gunicorn -> django app

在某个时间,我观察到 nginx 正在记录连接超时,并返回 HTTP 502 错误响应。

原因是gunicorn子进程30秒没有响应,被gunicorn master重启了。

我正试图找出为什么我的 gunicorn 进程在发回响应时卡住了。从日志记录来看,django 应用程序逻辑已成功完成。我怀疑当 django 通过 wsgi 返回对 gunicorn 的响应时,出现了问题。

其他几点:

1) 这些请求的响应大小很大。 ~ 200 KB。 2)当我重播这些请求时,它们工作正常。 3) 这发生在多台服务器上同时处理大约 100 个请求。

我无法确定出了什么问题。任何帮助,将不胜感激!

【问题讨论】:

    标签: django gunicorn


    【解决方案1】:

    如前所述,当您有一些负载(100 个连接)时,您可能会让 gunicorn 响应缓慢。 尝试通过添加以下内容来增加您在 Nginx 中代理传递的超时时间:

    proxy_connect_timeout 300s;
    proxy_read_timeout 300s;
    

    如果还是不行,尝试在 gunicorn 配置中更改 timout:

    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 \ 以从日志中获取更多信息。

    【讨论】:

    • 100 个连接不是并发的。他们在不同的机器上,每个工人只处理一个请求。我已经使用了与您推荐的设置类似的设置。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-20
    • 2020-11-09
    • 2021-11-05
    • 1970-01-01
    • 1970-01-01
    • 2013-02-15
    • 2019-10-18
    相关资源
    最近更新 更多