HTTP 上級② 時間の内訳を測る
Pro会員限定上級約39分6レッスン
「200 は返るのに遅い」を curl -w で数字にし、名前解決・接続・TLS・最初の1バイトまでの時間に分解します。犯人は止まった DNS サーバーでした。resolv.conf を直して測り直し、--resolve で DNS を外してアプリ側の遅さとも切り分けます。
対象者: 「なんとなく遅い」を根拠のある数字で説明したい方 / DNS の冗長化や resolv.conf の変更後に遅延が出た方
前提知識: HTTP 上級① curl -v で通信を読む 修了程度
この教材を終えると、できるようになること
- curl の -s / -o /dev/null / -w を組み合わせ、ステータスコードと合計時間だけを1行で表示できるようになる。
- time_namelookup / time_connect / time_appconnect / time_starttransfer / time_total が「開始からの累積時刻」であることを理解し、差を取って各段階の所要時間を読めるようになる。
- /etc/resolv.conf の nameserver の順番と glibc の問い合わせ方を理解し、dig @サーバー で1台ずつ応答を確かめて止まっているサーバーを特定できるようになる。
- 止まっている nameserver をコメントアウトして効果を curl -w で確かめ、options timeout / rotate の意味と、冗長化を設計するときの注意点を説明できるようになる。
- curl --resolve で名前解決を通さずに接続し、URL ごとの TTFB を比べて、遅さがネットワークではなくアプリ側にあることを示せるようになる。
修了後の姿: プロトコルの中身とネットワーク設計を理解し、複雑な障害の根本原因の特定から再発防止の設計まで任せられるエンジニアへ。
Chapter 1遅さを分解する
curl -w で時間を段階ごとに測り、どこで待っているかを特定して直します。
Chapter 2確認クイズ
curl -w による時間の内訳と、resolv.conf の動きの理解度をチェックします。