记录一次504超时的解决方案

环境:django + uwsgi + nginx

nginx报错如下:

2017/03/30 20:23:38 [error] 256846#0: *34209 upstream timed out (110: Connection timed out) while reading response header from upstream, client: 127.0.0.1, server: devops.jd.com, request: "POST /api/recv_cmdbfile/ HTTP/1.1", upstream: "uwsgi://unix:/export/App/DevOPS/Python_20160906/Python_20160906.sock", host: "127.0.0.1"

发现nginx连接后端connection timed out

解决方案:1,调大uwsgi的超时参数设置,
http-timeout = 1080
socket-timeout = 1080

重启uwsgi发现故障依旧,新加参数删除

解决方案2:调大nginx的超时参数设置
proxy_connect_timeout           1080;
proxy_read_timeout              1080;
proxy_send_timeout              1080;

重启nginx发现故障依旧,新加参数删除

解决方案3:在想是不是django框架里面有超时限制,发现并没有
解决方案4:后来看nginx官方文档,发现proxy_read_time针对的是反向代理转发的超时,不是uwsgi的超时,
uwsgi_send_timeout 1060;        # 指定连接到后端uWSGI的超时时间。
uwsgi_connect_timeout 1060;   # 指定向uWSGI传送请求的超时时间,完成握手后向uWSGI传送请求的超时时间。
uwsgi_read_timeout 1060;        # 指定接收uWSGI应答的超时时间,完成握手后接收uWSGI应答的超时时间。

重启nginx,504不在,nginx了解的还不深入

原文地址:https://www.cnblogs.com/PythonOrg/p/6648424.html