応用情報技術者 2010年 秋期 午後 問04
Webシステムの性能評価に関する次の記述を読んで、設問1~3に答えよ。
P社は、社内業務システム(以下、本システムという)を開発中である。本システムは、社内にあるクライアントからのリクエストを受信すると、リクエストに応じた処理を行い、処理結果をリクエスト元のクライアントに返すWebシステムである。その際、必要に応じてデータベースサーバ(以下、DBサーバという)にアクセスする。システム構成を図に示す。

クライアントからのリクエストは、Webサーバ上のリクエストキューにいったん入れられ、そこから業務スレッドに渡されて処理が行われる。Webサーバの設定で業務スレッド数を指定することができ、業務スレッドが複数存在する場合は、並行して処理が行われる。本システムの性能要件は、最大スループットが60件/秒で、そのときの平均応答時間が0.5秒以内である。
Webサーバの必要台数を、次の手順で決定することにした。
①プロトタイププログラムを作成して負荷テストを実施し、リクエスト1件当たりの平均処理時間と、Webサーバ1台当たりの業務スレッド数の最適値を求める。
② ①の結果と待ち行列理論を用いて、Webサーバの必要台数を算出する。
〔プロトタイプによる計測〕
Webサーバ1台、DBサーバ、テスト用クライアントの構成で、テスト用クライアント上の負荷テストツールから、Webサーバへリクエストを送信して、処理時間を計測する。処理時間は、リクエストが業務スレッドに渡された時点から、業務スレッドが処理結果をテスト用クライアントに返す直前までを計測する。Webサーバの設定で、業務スレッド数を1から順に増加させて、最適値を求める。このとき、業務スレッドがアイドル状態にならないように、負荷テストツールから十分な数のリクエストを送信する。
計測結果を表1に示す。この結果から、Webサーバ1台当たりの業務スレッド数の最適値は4で、そのときの平均処理時間は0.2秒であることが分かった。
〔待ち行列理論による算出〕
計測結果から、Webサーバの業務スレッド数を4に設定することにした。この状態は、サービス窓口が四つの待ち行列モデルに相当し、M/M/4モデルを用いて解析できる。窓口数が4で、平均処理時間を1に正規化した場合の窓口利用率と平均待ち時間の関係を表2に示す。
ここで、窓口利用率=平均到着率×平均処理時間/窓口数 とする。

ネットワーク上の転送時間は無視し、DBサーバでの処理時間は平均処理時間に含まれるものとして、Webサーバが1台、スループットが18件/秒の場合を考える。このとき、平均到着率は18件/秒、平均処理時間は0.2秒、窓口数は4なので、窓口利用率はaとなる。表2から、窓口利用率がaで、平均処理時間が1の場合の平均待ち時間はbであるので、平均処理時間が0.2秒の場合の平均待ち時間はc秒となり、平均応答時間はd秒となる。
次に、本システムの性能要件を満たす、Webサーバの最小必要台数を考える。
本システムのロードバランサは、システム全体での平均到着率をλとすると、Webサーバがn台の場合、1台当たりの平均到着率がλ/nとなるようにリクエストをWebサーバに振り分ける。ロードバランサのオーバヘッドは無視するものとする。
本システムの最大スループットは60件/秒であるので、Webサーバがe台の場合、Webサーバ1台当たりの平均到着率はf件/秒となる。そして、窓口利用率はgで、平均応答時間はh秒となり、性能要件である平均応答時間0.5秒以内を満たしている。
設問1:
問題文を見る本文中のa〜dに入れる適切な数値を答えよ。答えは、小数第3位を四捨五入して小数第2位まで求めよ。
模範解答
a:0.90
b:1.97
c:0.39
d:0.59
解説
解答の論理構成
-
到着率とサービス窓口数の整理
問題文より
・平均到着率は「18件/秒」
・平均処理時間は「0.2秒」
・窓口数(業務スレッド数)は「4」
と示されています。
M/M/mモデルの窓口利用率はですからよって a=0.90です。 -
正規化解除(サービス時間0.2秒への換算)
表2は “平均処理時間=1” に正規化されています。
実際の平均処理時間は「0.2秒」なので四捨五入で0.39秒。
したがって c=0.39です。 -
平均応答時間の算出
平均応答時間=処理時間+待ち時間小数第2位までで0.59秒。
よって d=0.59となります。
誤りやすいポイント
- λ と ρ の単位混同
件/秒と秒を掛け合わせることで無次元になる点を忘れがちです。 - 表2の“平均処理時間=1”という前提を読み落とし、待ち時間をそのまま使ってしまう。
- 四捨五入のタイミングを誤り、0.3938秒を0.40秒にしてしまう。
- 応答時間=待ち時間のみと勘違いし、処理時間0.2秒を加算し忘れる。
FAQ
Q: 窓口利用率が1に近づくと待ち時間は必ず無限大になるのですか?
A: 理論上は ρ→1で平均待ち時間が発散します。表2でも0.98で「11.950」と急増していることが示されています。
A: 理論上は ρ→1で平均待ち時間が発散します。表2でも0.98で「11.950」と急増していることが示されています。
Q: プロトタイプ計測で業務スレッド数5以降に処理時間が悪化した理由は?
A: 表1にあるとおりメモリ使用率が「100%」となり、スワップによる「ディスク入出力(10Mバイト/秒)」が発生したためです。
A: 表1にあるとおりメモリ使用率が「100%」となり、スワップによる「ディスク入出力(10Mバイト/秒)」が発生したためです。
Q: 四捨五入はいつ行うのが正しいですか?
A: 問題指示は「小数第3位を四捨五入して小数第2位まで」。最終値に対して指示を適用するのが原則です。
A: 問題指示は「小数第3位を四捨五入して小数第2位まで」。最終値に対して指示を適用するのが原則です。
関連キーワード: M/M/mモデル、窓口利用率、待ち行列理論、スループット
設問2:
問題文を見る本文中のeに入れる最小の整数を答えよ。
また、そのときf〜hに入れる適切な数値を答えよ。答えは、小数第3位を四捨五入して小数第2位まで求めよ。
模範解答
e:4
f:15.00
g:0.75
h:0.30
解説
解答の論理構成
-
測定結果の整理
- 【問題文】では、業務スレッド数を4に設定したとき「平均処理時間は0.2秒」と明示されています。
- 同じく「最大スループットが60件/秒」「窓口数(業務スレッド数)は4」と規定されています。
-
1台当たりの到着率を未知数nで表す
- 【問題文】「Webサーバがn台の場合、1台当たりの平均到着率が入/nとなる」とあるので、全体到着率60件/秒をnで割ります。
- 【問題文】「Webサーバがn台の場合、1台当たりの平均到着率が入/nとなる」とあるので、全体到着率60件/秒をnで割ります。
-
窓口利用率(ρ)の式を適用
- 【問題文】で定義された「窓口利用率=平均到着率×平均処理時間/窓口数」を用います。 = \frac{60 \times 0.2}{4n} = \frac{3}{n}$$
-
性能要件(平均応答時間0.5秒以内)を数式化
- 応答時間 = 待ち時間 + 処理時間 =
- したがって が必要です。
-
表2から ρ と の関係を照合
- 表2より
• ρ=0.75 → 平均待ち時間 =0.509
• ρ=0.80 → =0.746 - 0.80の場合 (0.35秒)で要件を満たしますが、ρ=0.75でも余裕があります。
- 一方n=3だと ρ=1.00(表外ですが0.95で既に =4.457)となり、応答時間は1秒超となり不適合。
- 表2より
-
最小台数の決定
- ρ= が0.80以下になる最小の整数nは4。
- よって【小問説明】の e は4です。
-
n=4のとき f ~ h を計算
- 到着率
- 窓口利用率
- 平均応答時間
- 表2の ρ=0.75に対応する =0.509
- 待ち時間
- 応答時間
- 到着率
以上より
• e:4 • f:15.00 • g:0.75 • h:0.30
• e:4 • f:15.00 • g:0.75 • h:0.30
誤りやすいポイント
- スレッド数4を “窓口数” と同一視せずM/M/1と勘違いすると ρ の計算を誤る。
- 応答時間=処理時間+待ち時間であるにもかかわらず、処理時間を加算し忘れる。
- 表2は「平均処理時間を1に正規化」した値なので、実測の0.2秒を乗算することを忘れやすい。
- 台数を増やしてもスループットは上がらないと早合点し、n=3で止めてしまう。
FAQ
Q: ρ=0.80でも要件を満たしていますが、なぜn=4が“最小”になるのですか?
A: ρ=0.80になるのはn=3.75… に相当します。サーバ台数は整数しか取れないため切り上げてn=4が最小です。
A: ρ=0.80になるのはn=3.75… に相当します。サーバ台数は整数しか取れないため切り上げてn=4が最小です。
Q: 表2に載っていない ρ の場合はどう評価すれば良いですか?
A: 近い ρ を線形補間する方法が一般的ですが、試験では安全側(大きい方の待ち時間)を採ると失点リスクが減ります。
A: 近い ρ を線形補間する方法が一般的ですが、試験では安全側(大きい方の待ち時間)を採ると失点リスクが減ります。
Q: DBサーバの性能は考慮しなくて良いのでしょうか?
A: 【問題文】「DBサーバでの処理時間は平均処理時間に含まれるものとして」と明記されているため、別途のボトルネック分析は不要です。
A: 【問題文】「DBサーバでの処理時間は平均処理時間に含まれるものとして」と明記されているため、別途のボトルネック分析は不要です。
関連キーワード: 待ち行列理論、窓口利用率、ロードバランシング、スループット、M/M/4
設問3:
問題文を見る表1のプロトタイプでの計測結果から、業務スレッド数を5又は6にした際に、Webサーバでどのような現象が発生していると推測できるか。その現象名を解答群の中から選び、記号で答えよ。また、このWebサーバにどのような改善を施せば、その現象が発生しなくなるかを10字以内で述べよ。
解答群
ア:ガーベジコレクション
イ:スイッチング
ウ:スラッシング
エ:フラグメンテーション
オ:メモリリーク
模範解答
現象:ウ
改善策:メモリを増設する。
解説
解答の論理構成
-
業務スレッド数を4から5に増やした瞬間に、以下の変化が生じています。
• 「平均処理時間(秒)」が「0.2」→「0.6」に急増
• 「OS以外のCPU使用率(%)」が「40」→「5」に急減
• 「メモリ使用率(%)」が「96」→「100」に到達
• 「ディスク入出力(Mバイト/秒)」が「0」→「10」に急増
これらはすべて【表1 プロトタイプでの計測結果】の数値です。 -
物理メモリが不足すると、不要ページの入れ替え(ページング)が頻発し、CPUはメモリ待ちでほとんど仕事ができなくなります。結果として
・CPU使用率低下
・ディスクI/O増大
・レスポンス悪化
という典型症状が現れます。 -
この症状はOSがページング処理に忙殺される「ウ:スラッシング」に該当します。
-
スラッシングの根本原因は物理メモリ不足ですから、最も直接的な対策は「メモリを増設する。」です(設問の10字以内条件を満たします)。
誤りやすいポイント
- CPU使用率が下がっているので「イ:スイッチング」と誤認しやすいですが、スイッチングはCPU高負荷が通常です。
- メモリ使用率100%を見ると「オ:メモリリーク」と考えがちですが、メモリリークならディスクI/Oがここまで急増しないのが一般的です。
- 「平均処理時間」悪化を“業務スレッド数が多すぎるだけ”と単純化すると、真因であるメモリ不足を見逃します。
FAQ
Q: スラッシングは必ずディスクI/Oが増えるのですか?
A: はい。仮想記憶でページが入れ替わるたびにディスクアクセスが発生するため、ディスクI/Oが顕著に増えます。
A: はい。仮想記憶でページが入れ替わるたびにディスクアクセスが発生するため、ディスクI/Oが顕著に増えます。
Q: スレッド数を元の4に戻すだけでは解決しないのですか?
A: 一時的には改善しますが、将来要求が増えた際に再びスラッシングが起こる恐れがあります。恒久対策としてメモリ増設が推奨されます。
A: 一時的には改善しますが、将来要求が増えた際に再びスラッシングが起こる恐れがあります。恒久対策としてメモリ増設が推奨されます。
Q: メモリ増設以外の対策はありますか?
A: プロセスのメモリ消費削減や64bit化なども有効ですが、最も手軽かつ確実なのは物理メモリの増設です。
A: プロセスのメモリ消費削減や64bit化なども有効ですが、最も手軽かつ確実なのは物理メモリの増設です。
関連キーワード: スラッシング、仮想記憶、ページング、ディスクI/O, メモリ増設




