性能分析: CPU と I/O のボトルネック
Pro会員限定上級約40分6レッスン
「サーバーが重い」の正体を数字で切り分けます。load average と CPU 数、vmstat の b と wa、iostat -x の %util、pidstat -d と sar で、犯人のプロセスと始まった時刻を特定し、ionice で止めずに影響を抑えます。
対象者: 「サーバーが重い」と言われて何から見ればよいか迷う方 / 性能障害の一次調査を任される方
前提知識: シグナル・優先度・開いているファイル 修了程度
この教材を終えると、できるようになること
- uptime と nproc から load average の高さを判断し、load には I/O 待ちのプロセスも含まれることを説明できるようになる。
- vmstat の r・b・us・wa 列を読み、I/O 待ちが原因であることを判断し、D 状態のプロセスを見つけられるようになる。
- iostat -x の %util・w_await・aqu-sz を読み、dm-0 が /data の LV であることを lsblk の番号から対応づけられるようになる。
- pidstat -d でプロセスごとの I/O 量を比べ、ps と sar -q で開始時刻と負荷の変化を突き合わせられるようになる。
- ionice で I/O の優先度クラスを idle に下げ、renice と合わせて、処理を止めずにサービスへの影響を抑えられるようになる。
修了後の姿: 障害の根本原因をログとコマンドで突き止められる、チームに頼られる運用エンジニアへ。
Chapter 1重さを数字で切り分ける
負荷の種類を見分け、デバイス・プロセス・時刻の順に犯人へ近づく。
- load average を CPU 数と比べるload 6 は高いのか。答えは CPU の数で変わる約6分(有料会員限定)
- vmstat で CPU 待ちか I/O 待ちかを見分けるr と b、us と wa の4つの列で切り分ける約7分(有料会員限定)
- iostat -x でどのディスクが詰まっているかを見る%util と w_await で、飽和しているデバイスを特定する約7分(有料会員限定)
- pidstat と sar で「誰が・いつから」を特定する書き込んでいるプロセスと、始まった時刻を数字でそろえる約7分(有料会員限定)
- 止めずに影響を抑える(ionice・renice)バックアップは殺さない。I/O の優先度を下げて譲らせる約8分(有料会員限定)
Chapter 2確認クイズ
性能分析ツールの読み方と対処の理解度をチェック。