11
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Unicorn+Nginx+Rails タイムアウトの設定方法

Last updated at Posted at 2017-06-17

やりたいこと

サーバーのデフォルトタイムアウトが60秒に設定されていた。
スクレイピングやバッチサーバーでは60秒以内に完了しないものが多いのでタイムアウトの時間を設定したい。

設定方法

NginxとUnicornのタイムアウト値を設定する必要がある。

Unicornのタイムアウト値変更(999999999999秒)

$ vi /projects/config/unicorn.rb

 ※「timeout 999999999999」を追加。無制限

Nginxのタイムアウト値変更(3600秒)

$ vi /etc/nginx/conf.d/timeout.conf

(ファイル自体を追加)
proxy_connect_timeout 3600;
proxy_send_timeout 3600;
proxy_read_timeout 3600;
send_timeout 3600;

NginxとUnicornの再起動

$ /etc/init.d/nginx restart
$ kill -9 <Unicorn マスタープロセスPID>
$ bundle exec unicorn_rails -c config/unicorn.rb -E development -D

備考

タイムアウトの設定は「Unicorn」「Nginx」の2箇所にあります。

  • 「Nginx」のタイムアウト値に引っかかった場合は、
     「504 Gateway Time-out」と表示されます。

  • 「Unicorn」のタイムアウト値に引っかかった場合は、
     ログ下記のような出力があります。

$ grep timeout /projects/log/development_unicorn_error.log | grep killing
E, [2017-06-15T11:30:50.803344 #23658] ERROR — : worker=0 PID:23661 timeout (61s > 60s), killing
E, [2017-06-15T11:36:41.156568 #23658] ERROR — : worker=1 PID:23663 timeout (61s > 60s), killing
E, [2017-06-15T11:43:53.542174 #23658] ERROR — : worker=1 PID:23769 timeout (61s > 60s), killing
E, [2017-06-15T11:45:32.648281 #23658] ERROR — : worker=0 PID:23720 timeout (61s > 60s), killing
E, [2017-06-15T13:36:51.095563 #23658] ERROR — : worker=0 PID:23978 timeout (61s > 60s), killing
11
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?