【ぼとるねっく】
ボトルネック とは?
最終更新:
💡 システムの速度を決める「一番狭い通り道」
ある負荷や条件のもとで、システム全体の性能を制限している箇所。CPU・メモリ・ディスク・ネットワークやソフトウェアの待ちなどが原因になり、処理件数と応答時間では見るべき点も異なる。
📌 このページのポイント
- 全体の性能を制限する箇所。負荷や処理内容によって変わる
- 単位時間の処理件数と、1件にかかる応答時間を区別する
- CPU・メモリ・ディスク・ネットワークや、ロックなどの待ちも確認する
- 使用率だけで断定せず、待っている処理の数・処理時間・エラーなども調べる
ボトルネックって何?
全体の性能を制限する箇所だよ。瓶の首が細いと水の流量が限られる、という比喩なんだ。ディスクの読み込みを待つ処理なら、CPUだけ速くしても処理件数が増えにくいことがある。ただし、どこが制限になるかは処理内容や負荷によるよ。
ボトルネック以外を改善しても無意味なの?
そうとは限らないよ。図のように各工程が並行して動くパイプラインでは、最も低い処理能力が全体の件数を制限する。一方、1件が直列に進む処理で、DBが90ms、その他が10msなら、その他を5msにすると合計は100msから95msになる。応答時間の改善がゼロというわけではないんだ。
どうやって見つけるの?
見つけたら機器を強化すればいい?
原因に合う対策を選ぶよ。不要な処理や問い合わせを減らす、メモリを増やす、共有資源の待ちを減らすなどが候補だね。WebサービスならDBへの問い合わせや接続待ちを調べる場合もある。対策後は同じ負荷で再測定し、別の制限が現れていないかを確認するんだ。
使用率が高い場所が原因とは限らないの?
まとめ:ざっくりこれだけ覚えればOK!
「ボトルネック」って出てきたら「全体の性能を制限する詰まりどころ」と思えばだいたいOK!
📖 おまけ:英語の意味
「Bottleneck」 = 瓶の首
💬 瓶(Bottle)の首(Neck)は一番細い部分。水を出すとき、瓶の首の太さで流量が決まるイメージだね