Unicorn, Apache, Nginxでのプロキシタイムアウト調整

シラサギ全体のプロキシタイムアウト調整

シラサギの運用では、ロードバランサーやWebサーバー、アプリケーション(Unicorn)の各レイヤーで 適切なプロキシタイムアウト管理を行うことが重要です。プロキシタイムアウトの設定箇所は多くなりがちですが、 大事なのは設定値の大小関係です。基本的に前段のシステムほどプロキシタイムアウトの設定値を 大きく、後段ほど小さくする必要があります。

具体的には、

Unicornのプロキシタイムアウト < Webサーバのプロキシタイムアウト < ロードバランサのプロキシタイムアウト

になるよう調整します。

もし後段のシステムでのプロキシタイムアウト値が長いと、クライアントにエラーが返ってるのに 裏で処理は成功している、大容量ファイルのダウンロードに失敗するということになってしまいます。

Unicornのプロキシタイムアウト調整

Unicornのシラサギ標準設定では、プロキシタイムアウト値は120secとなっています。 変更する場合は、下記のファイルを編集してプロキシタイムアウト値の調整を行います。

vi /var/www/shirasagi/config/unicorn.rb
timeout 120

プロキシタイムアウト値を調整した後は、Unicornのリロードが必要になります。

systemd経由で起動している場合:

systemctl reload unicorn

bundle exec経由で起動している場合:

cd /var/www/shirasagi
bundle exec rake unicorn:restart

WebサーバにNginxを設置した場合のプロキシタイムアウト調整

Nginxのシラサギ標準設定では、プロキシタイムアウト値は120secとなっています。 変更する場合は、下記のファイルを編集してプロキシタイムアウト値の調整を行います。

vi /etc/nginx/conf.d/http.conf
proxy_read_timeout 120;

プロキシタイムアウト値を調整した後は、Nginxのリロードが必要になります。

systemctl reload nginx

WebサーバにApacheを設置した場合のプロキシタイムアウト調整

Nginxのシラサギ標準設定では、プロキシタイムアウト値は120secとなっています。 変更する場合は、下記のファイルを編集してプロキシタイムアウト値の調整を行います。

vi /etc/httpd/conf.d/shirasagi.conf
ProxyTimeout 120

プロキシタイムアウト値を調整した後は、Apacheのリロードが必要になります。

systemctl reload httpd

ロードバランサーを前段に設置した場合のプロキシタイムアウト調整

使用するロードバランサによって、設定方法が異りますが、基本的にはWebサーバのプロキシタイムアウト と同値または、それ以上の値に設定します。