環境: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了解的還不深入