0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AWS ELB と nginx のタイムアウト一覧&相関

0
Last updated at Posted at 2026-05-20

概要

AWS ELB(ALB/NLB/CLB)と nginx のタイムアウト設定を一覧化し、対応関係をまとめておく
(すぐ忘れてしまう...orz)

AWS ELB のタイムアウト設定

設定項目 デフォルト 説明
ALB idle timeout 60秒 クライアント↔ALB、ALB↔ターゲット双方のアイドル接続の最大時間
ALB request timeout 60秒 リクエスト全体の処理時間(HTTP/2 keepalive 含む)
ALB connection draining 300秒 ターゲット登録解除時の既存接続の保持時間
NLB TCP idle timeout 350秒 TCP 接続のアイドル時間(変更不可)
NLB UDP idle timeout 120秒 UDP フローのアイドル時間(変更不可)
CLB idle timeout 60秒 フロント・バックエンド両方向のアイドル時間

nginx のタイムアウト設定

設定項目 デフォルト 対象方向 説明
keepalive_timeout 75秒 クライアント↔nginx クライアントとの keep-alive 接続維持時間
client_header_timeout 60秒 クライアント→nginx リクエストヘッダ受信のタイムアウト
client_body_timeout 60秒 クライアント→nginx リクエストボディ受信のタイムアウト
send_timeout 60秒 nginx→クライアント レスポンス送信時の連続無通信タイムアウト
proxy_connect_timeout 60秒 nginx→upstream upstream への接続確立タイムアウト(最大75秒)
proxy_send_timeout 60秒 nginx→upstream upstream へのリクエスト送信タイムアウト
proxy_read_timeout 60秒 upstream→nginx upstream からのレスポンス読み取りタイムアウト
upstream keepalive_timeout 60秒 nginx↔upstream upstream との keep-alive 接続維持時間

同じ目的・対応する設定の対応表

観点 AWS ELB 側 nginx 側 備考
クライアント↔フロント (ALB/nginx) のアイドル ALB idle timeout (60秒) keepalive_timeout (75秒) ALB が前段なら ALB 側で制御
フロント↔バックエンド (ALB→nginx) のアイドル ALB idle timeout (60秒) keepalive_timeout (75秒) nginx の keepalive_timeout > ALB idle timeout にすべき
アプリ応答待ち ALB request timeout (60秒) proxy_read_timeout (60秒) バックエンド処理時間に依存
コネクション確立 (ELB 側は内部処理) proxy_connect_timeout (60秒) nginx→upstream の TCP 接続確立
デプロイ時の接続維持 connection draining (300秒) (nginx は graceful shutdown) nginx -s quit に相当

構成パターン別の注意点

「ALB → nginx (リバプロ) → アプリ」構成の場合

  1. ALB idle timeout (60秒) < nginx の keepalive_timeout (75秒以上推奨)
    • 逆だと nginx 側から先に FIN を送り、ALB が再利用した接続で 502 エラーが発生する
  2. nginx の proxy_read_timeout ≥ ALB request timeout
    • バックエンドの応答待ち時間を ALB より長めに設定する
  3. NLB を使う場合は idle timeout が 350秒固定
    • nginx keepalive_timeout を 350秒より長く(例: 360秒)設定する

長時間処理がある場合

ファイルアップロードやレポート生成など長時間処理がある場合は、以下を揃えて引き上げる必要がある。

  • ALB idle timeout
  • nginx の proxy_read_timeout
  • アプリ側のタイムアウト

基本原則

上流(クライアント側)のタイムアウトを短く、下流(バックエンド側)のタイムアウトを長く設定することで、切断のきっかけが必ず上流側から発生するようにする。

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?