【Nginx / gunicorn】更改超时时间
概述
使用Nginx和gunicorn进行部署后,部分页面出现了”502 Bad Gateway”错误。为了暂时显示,我们延长了超时时间以解决该问题。
环境
Python 3.9 和 Django 3.2
解决方案 (jiě jué àn)
在 nginx.conf 文件中添加一句话
在 gunicorn 重新启动时,添加命令行参数
操作步骤 xù)
编辑nginx.conf
sudo vi /etc/nginx/nginx.conf
根据情况进行以下的增添(默认时间为60秒)。
http{
...
proxy_read_timeout 300;
proxy_connect_timeout 300;
proxy_send_timeout 300;
...
}
针对每一个设定值
proxy_connect_timeout
静的Webサーバ ( Nginx ) とアプリケーションサーバ ( gunicorn ) との接続タイムアウト秒数を指定
アプリケーションサーバに接続要求を送り、n秒間接続できない場合に発生します
つまり「n秒経っても TCPコネクション が確立できない場合にエラーを吐くよ」という設定
proxy_send_timeout
静的Webサーバ ( Nginx ) からアプリケーションサーバ ( gunicorn ) へのデータ送出の接続タイムアウト秒数を指定
つまり「TCPコネクション確立後、n秒経っても Nginx から gunicorn にリクエストを送信できない場合にエラーを吐くよ」という設定
proxy_read_timeout
アプリケーションサーバ ( gunicorn ) から 静的Webサーバ ( Nginx ) へのデータ送出の接続タイムアウト秒数を指定
つまり「TCPコネクション確立後、n秒経っても gunicorn から Nginx へのレスポンスを受信できない場合にエラーを吐くよ」という設定
由于我遇到了某些页面出现“502 Bad Gateway”错误,所以我只想延长接收响应的时间,因此我进行了以下设置。
http{
...
proxy_send_timeout 300;
...
}
请重新启动Nginx并重新加载配置文件。
sudo systemctl restart nginx
接着重新启动 Gunicorn(*需要在命令行参数中添加 –timeout)。
# 現在起動中の gunicorn のポート番号 (PID) を確認
ps aux | grep gunicorn
# 指定のポート番号 (PID) を kill
kill <PID>
# gunicorn を起動
gunicorn config.wsgi:application --timeout 300
Gunicorn的默认超时时间是30秒,因此请添加–timeout选项。
总结
以后,我们将致力于提升速度,不再发生502错误!
参考文献
这份备忘录是根据以下信息作为参考而制作的,非常感谢。