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サーバのプロキシタイムアウト と同値または、それ以上の値に設定します。