待ち時間の謎を解く「待ち行列理論」

 Webサーバーに負荷がかかるとレスポンス時間が長くなるということは,「待ち行列理論」によって説明がつく。図1左は,Webサーバーでの平均待ち時間(Wq)を計算したものだ。リクエストの平均到着間隔をTa,平均処理時間をTsとすると,Webサーバーの利用率(ρ)と平均待ち時間(Wq)は図中のように表される。この関係に基づき,ρと待ち時間の割合をグラフ化すると,図1右のようになる。グラフの横軸はρで,縦軸は待ち時間(Tsの何倍かかるか)を示す。ρ=0.5の場合は処理時間と等しい(等倍の)待ち時間がかかり,ρ=0.8の場合は同4倍,ρ=0.9の場合は同9倍の待ち時間がかかる。この結果から,Webサーバーの利用率が大きくなるほど,急激に待ち時間が増えると分かる。つまり,Webサーバーに負荷がかかると,レスポンス時間は極端に長くなるのだ。

図1●待ち行列理論
図1●待ち行列理論
待ち行列理論とは,不特定多数の人や物が限られた資源を利用する場合の混雑現象などを数学的に解析したもの。サーバーでは多重処理されるので,単純な待ち行列理論に基づいて考えることはできないが,処理に要する時間などを概算する上で参考にはなる
[画像のクリックで拡大表示]

 また,Wqの算出式に注目すると,処理時間を短くすればρが小さくなり,Tsも短縮され,結果的に待ち時間が大幅に短縮することが分かる。同じ割合でTaを延ばすよりも,待ち時間の短縮効果は大きい。このことは,サーバーを増設するよりも,サーバーの単体性能を上げる(≒処理時間を短縮する)方が,待ち時間を減らす効果が大きいことを示している。

 例えば,サーバー1台の場合をTa=0.2秒,Ts=0.1秒とすると,サーバー2台を用意した場合はTa=0.4秒,Ts=0.1秒と同じことなので,ρ=0.25となり,待ち時間は0.033秒。これに対してサーバーの処理能力を倍にすると,Ta=0.2秒,Ts=0.05秒となる。ρ=0.25となり,待ち時間は0.0165秒。ρは同じ0.25でも,Tsの半減とともに待ち時間も半分になる。この計算結果から,数学的にはスケールアップの方がスケールアウトよりも効率よくパフォーマンスを高められるはずだ。ただし,現実のWebサーバーは内部でさまざまな多重処理を実行している関係もあり,待ち行列理論の通りにはならないので注意してほしい。

高安 厚思(たかやす あつし) オープンストリーム テクニカルコンピテンシーユニット 主管システムズアーキテクト
銀行系シンクタンクでオブジェクト指向技術の研究に携わった後,大手SI業者でアーキテクチャ構築やプロセス研究を担当。現職ではSOA(Service Oriented Architecture)を中心とする研究開発とアーキテクチャ構築に従事している