これは自動翻訳であり、原文は英語です。 原文を読む
利用率99%のシステムが75%のシステムよりわずかに悪いだけでは済まない理由
利用率を75%から99%へ高めることは、負荷としては3分の1の増加に過ぎない。しかし、待ち行列は33倍になる。
初期設定のままM/M/1 Queue Simulatorを開く。仕事は1時間に3件到着し、サーバーは1時間に4件を処理する。表示画面には、利用率 0.750、システム内のアイテム数 3.000、そのうち待ち状態のアイテム数 2.250 と示されている。
25%の余裕容量に対して、3つの待ち行列。これだけでも本来あるべき状態より悪く思える。
それら4つの数値は、待ち行列理論において暗記する価値のある唯一の結果をも示している。到着は1時間あたり3件、システム内での平均滞在時間は1.000時間、システム内の平均数は3.000である。これがリトルの法則、L = λW であり、その卓越した特徴は分布に関して一切の前提条件を置かない点にある。到着パターンを変えようが、サービス時間を変えようが、サーバーを増やそうが、安定している待ち行列であれば常に成立する。以下で述べる他のほぼすべての事項はモデル化の前提条件に依存するが、この法則は依存しない。
1つの公式と、問題が潜む場所
この待ち行列において、システム内の平均数は L = ρ / (1 − ρ) となる。ここで「ロー」と読む ρ は利用率である。ツールの初期設定ではこれに 0.75 を代入し、画面上にまさに 3.000 を得ている。
分子は負荷であり、分母は余裕である。そして、すべてを決定づけるのは分母である。ρ が 1 に近づくにつれて余裕はゼロに近づき、ゼロに近づく数で割ることは、常に引き起こす結果をもたらす。
- ρ = 0.50 → L = 1
- ρ = 0.75 → L = 3
- ρ = 0.90 → L = 9
- ρ = 0.95 → L = 19
- ρ = 0.99 → L = 99
管理者の視点でその列を読み解いてほしい。半分負荷がかかった状態から99%の負荷へ移行することは、仕事量が2倍になるわけではなく、1.98倍になるだけである。しかし、待ち行列は99倍になる。95から99への最後の4パーセントポイントの増加は、0から95に至る全行程よりも大きな待ち行列コストを生み出す。
なぜ障害には警告段階がないのか
この曲線の形状は、サービスを運用したことがある人なら誰もが思い当たるパターンを説明している。利用率は数ヶ月かけて徐々に上昇するが、何も起きない。レスポンスタイムは60%でも問題なく、70%でも良好で、85%で少し悪化する程度である。そしてある週、システムは突如使用不能になり、その週の負荷は前週の負荷とほとんど変わらない。
負荷に崖があったわけではない。崖が存在するのは公式の中であり、待ち行列自体の崩壊に対する早期警告システムとして待ち行列が不十分なのは、被害が最後の数パーセントに集中するからである。
また、解決策が「サーバーの処理能力を上げる」ことではなく、「サーバーをもう1台追加する」ことになりがちな理由もこれで説明できる。容量を追加すると ρ は曲線に沿って下方に移動するが、0.95 から 0.90 へ移動させることのテコ効果が絶大であるのは、まさにその部分の傾斜が急だからである。
解の存在しないプリセット
このツールには3つのプリセットが用意されており、興味深いのは3つ目のプリセットである。「低負荷(Light load)」は ρ = 0.4 で動作する。「高負荷(Heavy load)」は 4.0 に対して 3.8 で動作するため、ρ = 0.95 かつ L = 19 となり、上の表と一致する。
3つ目は「不安定(unstable)」とラベル付けされており、サービス率 4.0 に対して到着を 4.2 に設定する。これは ρ = 1.05 であり、計算すべき定常状態の解が存在しない。仕事の処理能力を超えて仕事が到着するため、待ち行列は無制限に増大し、公式は負の数を返す。これは、問題の設定自体が不適切であったことを数学が示しているのである。
ρ > 1 の状態にあるシステムは、悪い状態に落ち着くことすらしない。そもそも状態が存在しないのである。1時間ごとにバックログは前の時間よりも大きくなり、到着を減らすか容量を追加する以外に、状況を変える手段は存在しない。シミュレーションを実行してみると、待ち行列は単にグラフの枠外へと突き抜けていく。
挙げる価値のある2つの前提条件
M/M/1は、到着がポアソン過程であり、サービス時間が指数分布に従うことを前提としている。これは両者が無記憶性を持つことを意味する。つまり、次の1秒間に到着が起きる確率は、それまでにどれだけ待ったかには依存しない。実際のトラフィックはそれよりもバースト性が高いことが多く、バースト性は待ち行列を短くするのではなく、長くする。
したがって、上記の数値は楽観的なものである。しかしいずれにせよ、本質的な教訓は前提条件に左右されない。なぜなら、それは分布の詳細からではなく、分母にある 1 − ρ に由来するからである。到着が変動し、容量が有限であるあらゆるシステムには、まったく同じ場所に同じ壁が存在する。
利用率100%を目指すことは、効率化ではない。それは待ち行列を無限大にせよと要求することに他ならない。