【ぼとるねっく】

ボトルネック とは?

💡 システムの速度を決める「一番狭い通り道」
📌 このページのポイント
ボトルネック ― 処理の「詰まり」ポイント 高速処理 100件/秒 ボトルネック 10件/秒しか通れない! 高速処理 100件/秒 全体の処理速度は最も遅い箇所に制限される → ボトルネックの特定と解消が性能改善の鍵
ボトルネックのイメージ
ひよこ ひよこ

ボトルネックって何?

ペンギン先生 ペンギン先生

システム全体の速度を決めている「一番遅い部分」のことだよ。ペットボトルの水を出すとき、瓶の口(首)の太さで出る量が決まるよね。それと同じで、どんなにCPUが速くてもディスクが遅ければ全体が遅くなるんだ。

ひよこ ひよこ

ボトルネックってどうやって見つけるの?

ペンギン先生 ペンギン先生

CPU使用率、メモリ使用量、ディスクI/O(読み書き速度)、ネットワーク帯域を監視して、どれが限界に達しているかを確認するんだ。WindowsならタスクマネージャーLinuxならtopコマンドやiostatで見られるよ。

ひよこ ひよこ

ボトルネックを見つけたらどうするの?

ペンギン先生 ペンギン先生

その部分を強化するんだ。メモリが足りないなら増設、ディスクが遅いならSSDに交換、CPUが限界なら処理を効率化する。ただし1つ解消すると次に遅い部分が新たなボトルネックになるから、いたちごっこみたいな面もあるよ。

ひよこ ひよこ

Webサービスだとどこがボトルネックになりやすいの?

ペンギン先生 ペンギン先生

データベースがボトルネックになることが多いよ。アクセスが増えるとデータベースへの問い合わせが集中して、そこが詰まるんだ。キャッシュを入れたりデータベースを分散させたりして対策するよ。

ひよこ ひよこ

ボトルネックの特定って簡単?

ペンギン先生 ペンギン先生

これが全然簡単じゃないんだ。たとえば「CPUが100%に張り付いている」ように見えても、実はディスクI/O待ちでCPUが空回りしているだけということがある。逆に「メモリが足りない」と思ったらスワップが発生していてディスクが遅いのが真の原因だったり。ボトルネックは他の指標に影響を連鎖させるから、「一番最初に限界に達した場所」を見極める必要がある。さらに本番環境では再現性のないスパイク(瞬間的な負荷)がボトルネックになることもあって、監視データの粒度(何秒ごとに記録するか)によっては見逃すこともあるよ。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「ボトルネック」って出てきたら「全体の速度を決めている一番遅い部分」と思えればだいたいOK!
📖 おまけ:英語の意味
「Bottleneck」 = 瓶の首
💬 瓶(Bottle)の首(Neck)は一番細い部分。水を出すとき、瓶の首の太さで流量が決まるイメージだね
← 用語集にもどる