発生した事象
RailsアプリケーションのCSV取り込み処理で504エラーが発生
環境
- AWS ALB
- Nginx
- Unicorn
- Rails5.1.1
考えられる原因
- AWS ALBのアイドルタイムアウトが短い
- デフォルトは60秒
- 最大3600秒まで設定可能
- Nginx、Unicornのタイムアウト時間が短い
対策
- AWS ALBのタイムアウト時間を設定。
- Nginxと合わせて、暫定で360秒に設定。
- Nginxに
proxy_read_timeout
を設定- proxyサーバからのレスポンスを読み込むためのタイムアウト時間。proxyサーバがこの時間内に何も応答しない場合、接続を閉じる。
- defaultは60秒。
- Unicornよりも余裕を持たせて、暫定で360秒に設定。
- Unicornに
timeout
を設定- ワーカープロセスのタイムアウト時間。秒で設定する。
- この時間よりも長くかかるリクエストは、強制終了される。
- 暫定で300秒に設定。
誤った対策
- 今回の構成では、Nginxで
fastcgi_read_timeout
ディレクティブを設定するのは無意味。