待ち行列の計算をやさしく図解 — 利用率・平均待ち時間・平均応答時間の求め方(M/M/1)

公開: 2026年7月(2026年9月更新) カテゴリ: 基礎理論

※この記事にはプロモーション(広告)が含まれます。広告表記の方針

「サーバーの利用率が上がると、なぜ急に応答が遅くなるの?」——その答えが待ち行列理論にあります。ATMの行列も、サーバーへのリクエストも、同じ数式で説明できます。この記事では、基本のM/M/1モデルについて、利用率・平均待ち時間・平均応答時間の求め方を、例題と計算ツールつきで解説します。

待ち行列とは — 到着・待ち・サービス

待ち行列は、①客が到着し、②窓口が空くまで並んで待ち、③サービスを受けて出ていくという流れをモデル化したものです。銀行のATM、レジ、そしてサーバーへのリクエスト処理も同じ構造。「単位時間に何人来るか(到着率)」と「単位時間に何人さばけるか(サービス率)」のバランスで、待ち時間が決まります。

待ち行列:到着 → 待つ → 窓口で処理 → 退出 到着 λ(到着率) 待ち行列 窓口 μ(サービス率) 退出 窓口が1つ = M/M/1
図1: 到着率λと、窓口の処理能力(サービス率μ)のバランスで待ち時間が決まる

M/M/1モデルとは

M/M/1は、待ち行列のもっとも基本的なモデルです。3つの記号にはそれぞれ意味があります(ケンドールの記号)。

位置記号意味
1つ目M到着がランダム(客がバラバラに来る)
2つ目Mサービス時間がランダム(処理時間がバラつく)
3つ目1窓口が1つ

つまりM/M/1は「ランダムに来る客を、1つの窓口で順番に処理する」もっともシンプルなモデルです。基本情報ではこのM/M/1が扱われます。

到着率・サービス率とは

待ち行列の計算で使う値は、「どれくらいのペースで来るか」と「どれくらいのペースでさばけるか」の2つです。それぞれ率(1単位時間あたりの件数)で表す方法と、時間(1件あたり何秒か)で表す方法があり、互いに逆数の関係です。

用語意味例
到着率 λ(ラムダ)1単位時間あたりに平均何件到着するか1秒に平均4件 → λ=4件/秒
平均到着間隔次の1件が来るまでの平均時間(=1÷λ)λ=4件/秒 → 0.25秒
サービス率 μ(ミュー)1単位時間あたりに平均何件処理できるか1秒に平均5件 → μ=5件/秒
平均サービス時間 Ts1件の処理にかかる平均時間(=1÷μ)μ=5件/秒 → 0.2秒

試験問題では、率ではなく「平均到着間隔」や「1件あたりの平均処理時間」で与えられることもよくあります。どちらで与えられても、逆数にすれば同じものとして扱えます。

利用率 ρ — 窓口の忙しさ

まず求めるのが利用率 ρ(ロー)。窓口がどれくらい忙しく働いているかの割合で、到着率λ ÷ サービス率μ で計算します。

利用率 ρ = λ(到着率) ÷ μ(サービス率)

例:1分間に平均3件のリクエストが来て(λ=3)、窓口は1分間に平均4件処理できる(μ=4)なら、ρ=3÷4=0.75(75%が稼働)。ρが1以上だと、来る量が処理能力を超えるので行列が無限に伸びます。安定して回すには ρ<1 が必須です。

利用率の出し方は3通り(どれも同じ値)

問題文で与えられる値に合わせて、使いやすい式を選べます。μ=1÷Ts、平均到着間隔=1÷λ なので、3つの式はすべて同じ値になります。

与えられた値利用率の式例(1秒に4件到着・1件0.2秒)
到着率とサービス率ρ = λ ÷ μ4 ÷ 5 = 0.8
到着率と平均サービス時間ρ = λ × Ts4 × 0.2 = 0.8
平均到着間隔と平均サービス時間ρ = Ts ÷ 平均到着間隔0.2 ÷ 0.25 = 0.8

どの式でも、単位(秒・分など)をそろえてから計算するのが注意点です。「処理時間はミリ秒、到着は1秒あたり」のように単位が混ざっている問題はよくあります。

平均待ち時間・平均応答時間の公式

M/M/1では、利用率ρと平均サービス時間(1件の処理にかかる平均時間 = 1÷μ)から、待ち時間が求まります。

求めるもの公式
平均サービス時間 Ts1 ÷ μ
平均待ち時間 Tw(並んで待つ時間)ρ ÷ (1 − ρ) × Ts
平均応答時間 T(待ち+処理)Ts ÷ (1 − ρ) (= Tw + Ts)

先ほどの例(λ=3、μ=4、ρ=0.75)で計算してみます。平均サービス時間 Ts=1÷4=0.25分。

平均待ち時間 Tw = 0.75 ÷ (1 − 0.75) × 0.25 = 0.75 ÷ 0.25 × 0.25 = 0.75分
平均応答時間 T = 0.25 ÷ (1 − 0.75) = 0.25 ÷ 0.25 = 1分

「処理自体は0.25分なのに、混雑のせいで待ちを含めると平均1分かかる」という結果です。

平均応答時間の求め方 — 3ステップと例題

平均応答時間(待ち時間+処理時間)は、次の3ステップで求められます。

  1. 平均サービス時間 Ts を確認する(サービス率μで与えられたら Ts=1÷μ)
  2. 利用率 ρ を求める(上の3通りのうち、与えられた値に合う式で)
  3. 平均応答時間 T = Ts ÷ (1 − ρ) に代入する。平均待ち時間が必要なら Tw = T − Ts

例題1:到着率と処理時間が与えられる

あるサーバーは、1件のリクエストの処理に平均0.2秒かかります。リクエストは1秒あたり平均4件到着します。平均応答時間と平均待ち時間を求めてください(M/M/1とする)。

① Ts = 0.2秒
② ρ = λ × Ts = 4 × 0.2 = 0.8
③ T = 0.2 ÷ (1 − 0.8) = 0.2 ÷ 0.2 = 1.0秒、Tw = 1.0 − 0.2 = 0.8秒

例題2:平均到着間隔が与えられる(単位に注意)

平均到着間隔が50ミリ秒、1件あたりの平均処理時間が40ミリ秒のシステムの平均応答時間を求めてください。

① Ts = 40ミリ秒
② ρ = Ts ÷ 平均到着間隔 = 40 ÷ 50 = 0.8
③ T = 40 ÷ (1 − 0.8) = 40 ÷ 0.2 = 200ミリ秒(平均待ち時間は 200 − 40 = 160ミリ秒)

処理そのものは40ミリ秒なのに、利用率80%では応答に5倍の200ミリ秒かかります。

例題3:逆算する(何件まで受け付けられるか)

例題1のサーバー(Ts=0.2秒)で、平均応答時間を1.0秒以内に抑えたいとき、1秒あたり何件まで受け付けられますか。

T = Ts ÷ (1 − ρ) ≦ 1.0 より、0.2 ÷ (1 − ρ) ≦ 1.0 → 1 − ρ ≧ 0.2 → ρ ≦ 0.8
ρ = λ × Ts なので、λ ≦ 0.8 ÷ 0.2 = 4件/秒

このように「応答時間の目標から、許容できる利用率や到着数を逆算する」のが、実務のキャパシティ設計での使い方です。

待ち時間の計算ツール(M/M/1)

平均サービス時間と到着のペースを入れると、利用率・平均待ち時間・平均応答時間をその場で計算します。時間の単位はそろえてください(秒どうし、ミリ秒どうしなど)。

利用率 ρ
平均待ち時間 Tw
平均応答時間 T
システム内の平均件数 L

利用率が上がると待ち時間が急増する

ここが最重要ポイント。公式の分母が (1 − ρ) なので、ρが1に近づくほど分母が小さくなり、待ち時間が跳ね上がります。「利用率をあと少し上げただけで、体感が急に悪化する」現象の正体です。

利用率ρが1に近づくと、待ち時間が急上昇する 利用率 ρ →(0 … 1) 待ち時間 → 0.5 0.8 0.9 0.95 1倍 4倍 9倍 19倍 ρ→1 で急激に増える (点の数値は、待ち時間が処理時間Tsの何倍か)
図2: 待ち時間 ∝ ρ/(1−ρ)。0.5→0.8→0.9…と上がるほど、増え方が加速する

数値で見ると一目瞭然です(Ts=1として、待ち時間 Tw=ρ/(1−ρ))。

利用率 ρ1 − ρ待ち時間 Tw(Ts=1)
0.50.51.0
0.80.24.0
0.90.19.0
0.950.0519.0

利用率が0.5から0.9になると、待ち時間は9倍。だからサーバー設計では「利用率を上げきらず、余裕を残す」ことが重要になります。

平均待ち時間の公式の導き方

試験では公式を覚えて使えば十分ですが、「なぜこの式になるのか」を知っておくと忘れにくくなります。ここでは3段階で導きます。

① システム内の平均件数 L = ρ ÷ (1 − ρ)

M/M/1では、システム内(待っている人+処理中の人)にちょうど n 件いる確率が (1 − ρ) × ρⁿ になることが知られています。0件の確率が 1−ρ、1件が (1−ρ)ρ、2件が (1−ρ)ρ² …と、件数が1つ増えるごとに ρ 倍ずつ小さくなります。この「件数×確率」を全部足した平均が L = ρ ÷ (1 − ρ) です。ρ=0.75なら L=0.75÷0.25=3件です。

② リトルの法則で、件数を時間に直す

リトルの法則は「平均件数 = 到着率 × 平均滞在時間(L = λ × T)」という関係です。1秒に4件来て、1件が平均2秒いるなら、中には平均8件いる、という当たり前の関係を式にしたものです。これを T について解くと、

T = L ÷ λ = ρ ÷ {(1 − ρ) × λ}

ここで ρ = λ × Ts を代入すると λ が約分されて、T = Ts ÷ (1 − ρ)(平均応答時間の公式)になります。

③ 待ち時間は、応答時間から処理時間を引く

Tw = T − Ts = Ts ÷ (1 − ρ) − Ts = ρ ÷ (1 − ρ) × Ts。これが平均待ち時間の公式です。

直感的には、「到着した人の前には平均 L = ρ/(1−ρ) 件がいて、1件あたり平均 Ts ずつかかるので、待ち時間は L × Ts」と読むこともできます(M/M/1ではこの読み方が正しく成り立ちます)。

スループットとレスポンスタイムの違い

スループットは一定時間あたりに処理できる量(例:1秒あたりの処理件数)、レスポンスタイム(応答時間)は1件が終わるまでの時間です。待ち行列の言葉でいえば、スループットは窓口が実際にさばいている件数、レスポンスタイムは平均応答時間(待ち時間+サービス時間)にあたります。

2つは同じではありません。利用率が上がると、窓口は休まず働くのでスループットは上限(サービス率)に近づきますが、行列が伸びてレスポンスタイムは急に悪化します(前述の「利用率が上がると待ち時間が急増する」のグラフ)。性能を見るときは、「たくさんさばけない」のか「1件が遅い」のかを分けて考えるのが基本です。

基本情報技術者試験ではこう出る

「利用率ρ=λ/μを求める」「平均待ち時間・平均応答時間を計算する」「利用率が上がると待ち時間がどうなるか」がよく問われます。押さえるべきは、ρ=到着率÷サービス率、平均応答時間=サービス時間÷(1−ρ)、そしてρが1に近いほど待ち時間が急増(分母が1−ρ)という3点。問題文が「平均到着間隔」「1件あたりの処理時間」で与えられたら、ρ=処理時間÷到着間隔で利用率を出すのが最短です。ネットワークやサーバーの性能設計に直結する考え方で、稼働率と信頼性設計ともあわせて押さえると、システムの性能・信頼性の全体像がつかめます。

よくある質問

Q. 到着率とは?
A. 単位時間あたりに平均何件到着するかを表す値で、記号λ(ラムダ)で表します。平均到着間隔が与えられた問題では、到着率=1÷平均到着間隔 です(くわしくは上の表)。

Q. 利用率の計算方法は?
A. ρ=λ÷μ が基本ですが、ρ=到着率×平均サービス時間、ρ=平均サービス時間÷平均到着間隔 でも同じ値になります。問題文で与えられた値に合う式を使いましょう。

Q. 到着率λ・サービス率μの単位は?
A. 「単位時間あたりの件数」です(例:1分あたり3件なら λ=3/分)。λとμの単位をそろえておけば、ρ=λ/μ は単位が打ち消し合って無次元(割合)になります。サービス時間 Ts=1/μ は「1件あたりの時間」になります。

Q. 窓口が複数(M/M/2など)だとどうなる?
A. 窓口を増やすと、同じ到着率でも1つあたりの負荷が下がり、待ち時間が大きく改善します(スーパーの複数レジと同じ)。ただし計算式は複雑になり、基本情報では原則窓口1つのM/M/1が扱われます。

Q. 実務ではどう使う?
A. サーバーやネットワーク機器のキャパシティ設計に使います。「ピーク時の到着率でも利用率が高くなりすぎないか(=待ち時間が許容範囲か)」を見積もり、余裕を持った台数・性能を選ぶ根拠にします。

まとめ

待ち行列理論(M/M/1)の要点は3つ。利用率ρ=λ/μ(=λ×Ts)、平均応答時間=サービス時間÷(1−ρ)、そしてρが1に近づくほど待ち時間が急増する。計算は「Tsを確認→ρを求める→Ts÷(1−ρ)」の3ステップで、単位をそろえることだけ注意すれば解けます。「利用率を上げすぎると急に遅くなる」という現象を、数式で説明できるようになります。性能設計の土台として押さえておきましょう。

関連ページ: 稼働率と信頼性設計 / 稼働率計算ツール / 計算量とO記法 / 記憶階層とキャッシュメモリ / 記事一覧