设置如下
Nginx反向代理 - > gunicorn - > django app
在某个时间,我发现nginx正在记录连接超时,并发回HTTP 502错误响应。
原因是枪炮儿童过程没有响应30秒,并被枪炮大师重新启动。
我试图找出为什么我的枪炮过程在发回回复时陷入困境。从日志记录开始,django app逻辑已成功完成。我怀疑当django通过wsgi返回对gunicorn的响应时,出现了问题。
其他一些观点:
1)这些请求的响应大小很大。 ~200 kB。 2)当我重播这些请求时,它们工作正常。 3)这可以在多个服务器上同时发生约100个请求。
我无法确定出错的地方。任何帮助,将不胜感激!
答案 0 :(得分:1)
当你有一些负载(100个连接)时,你可能会让gunicorn响应缓慢。 尝试通过添加:
来增加Nginx中代理传递的超时proxy_connect_timeout 300s;
proxy_read_timeout 300s;
如果无效,请尝试更改gunicorn配置中的时间:
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 \
以从日志中获取更多信息。