障害シナリオ② ピーク時だけつながらない
Pro会員限定上級約39分6レッスン
セール開始と同時に、新しいアクセスだけが「つながるまで数秒」「たまにタイムアウト」になります。カーネルのログから conntrack テーブルの満杯を見つけ、使用量と捨てたパケット数を測り、ピーク時のスナップショットを集計して TIME_WAIT の山を突き止めます。上限の引き上げで止血し、nginx の upstream keepalive で根本から減らすまでを通しで行います。
対象者: アクセスが増えたときだけ起きる「つながらない」障害を、数字で原因まで追い込みたい方
前提知識: TCP の状態遷移を読む / リバースプロキシとロードバランサ配下の障害 / NAT とポートフォワード 修了程度
この教材を終えると、できるようになること
- 症状(新規だけ遅い・既存は安定・ピーク時だけ)から conntrack を疑い、カーネルのログで table full の記録を見つけられるようになる。
- conntrack テーブルの使用数と上限で使用率を、conntrack の統計の drop で捨てたパケット数を確かめられるようになる。
- conntrack のエントリの列の意味を読み、状態ごとに集計して、テーブルを埋めている接続の正体を突き止められるようになる。
- nf_conntrack_max を実行中のカーネルで引き上げて /etc/sysctl.d にも残し、メモリとハッシュの大きさ(buckets)を踏まえて値を説明し、新しい接続に SYN-ACK が返るようになったことを確かめられるようになる。
- nginx の upstream keepalive・アプリへの HTTP/1.1・Connection ヘッダーの3つをそろえて、アプリへの接続を再利用させ、conntrack の件数が減ったことを確かめられるようになる。
修了後の姿: プロトコルの中身とネットワーク設計を理解し、複雑な障害の根本原因の特定から再発防止の設計まで任せられるエンジニアへ。
Chapter 1障害対応: ピーク時だけ落ちる新規接続
ログで当たりを付け、数字で測り、内訳を集計し、止血してから根本対策を入れます。
Chapter 2確認クイズ
conntrack 枯渇の見つけ方と対策の理解度をチェックします。