Timeout 504 の原因はNGINXだけでなくELBのせいだった
投稿日: 2022/12/15
更新日: 2022/12/15
更新日: 2022/12/15
概要
大量のファイルを処理する機能を作ったらシステム側からのレスポンスが帰る前にTimeoutしてしまった。(処理は完了していた。)
NGINX の設定
私の場合はサーバー側での処理が重く、レスポンスが遅くなっていたのが原因なので下記を変更。
proxy_read_timeout 300; # default: 60
http
, server
, location
で設定できる。
全体に適用するのではなく、どうしても処理が重くなってしまうリクエストのURLのみで緩和するように(location 内で変更する)。
ELB の設定
NGINX の設定を変えてもまだ60sでタイムアウトしてしまっていた。エラー画面を見ると NGINX が出しているエラーとは変わっていた。
よくよく調べてみるとELBでも同じような設定がなされていた。
Idle timeout の変更
※2022/12現在の遷移です。コンソール画面や文言がたまに変わるので注意してください
コンソール>EC2 > Load balancers
で対象のロードバランサーを選択し詳細画面へ
Attributes
のなかに Idle timeout
が存在する。これを Edit ボタンがあるので押下して NGINX 側で指定した時間と同じに設定する。
解決
私の場合は上記で解決できました。ELBは全リクエストの Idle timeout
が伸びてしまうので NGINX 側で切ってあげるようにしましょう。