【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错误!

参考文献

这份备忘录是根据以下信息作为参考而制作的,非常感谢。

 

广告
将在 10 秒后关闭
bannerAds