2010年 秋期 応用情報技術者試験 問4
Webシステムの性能評価
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サーバの業務スレッド数 | 1 | 2 | 3 | 4 | 5 | 6 | |
---|---|---|---|---|---|---|---|
平均処理時間(秒) | 0.2 | 0.2 | 0.2 | 0.2 | 0.6 | 0.6 | |
Webサーバ | OS以外のCPU使用率(%) | 10 | 20 | 30 | 40 | 5 | 5 |
メモリ使用率(%) | 24 | 48 | 72 | 96 | 100 | 100 | |
ディスクス出力(Mバイト/秒) | 0 | 0 | 0 | 0 | 10 | 10 | |
OS以外のCPU使用率(%) | 3 | 5 | 8 | 10 | 2 | 2 | |
DBサーバ | メモリ使用率(%) | 20 | 20 | 20 | 20 | 20 | 20 |
ディスクス出力(Mバイト/秒) | 5 | 10 | 15 | 20 | 3 | 3 |
[待ち行列理論による算出]
計測結果から、Webサーバの業務スレッド数を4に設定することにした。この状態は、サービス窓口が四つの待ち行列モデルに相当し、M/M/4モデルを用いて解析できる。窓口数が4で、平均処理時間を1に正規化した場合の窓口利用率と平均待ち時間の関係を表2に示す。
ここで、窓口利用率=平均到着率×平均処理時間/窓口数 とする。
窓口利用率 | 平均待ち時間 | 窓口利用率 | 平均待ち時間 |
---|---|---|---|
0.05 | 0.000 | 0.55 | 0.126 |
0.10 | 0.000 | 0.60 | 0.179 |
0.15 | 0.001 | 0.65 | 0.253 |
0.20 | 0.003 | 0.70 | 0.357 |
0.25 | 0.007 | 0.75 | 0.509 |
0.30 | 0.013 | 0.80 | 0.746 |
0.35 | 0.023 | 0.85 | 1.149 |
0.40 | 0.038 | 0.90 | 1.969 |
0.45 | 0.058 | 0.95 | 4.457 |
0.50 | 0.087 | 0.98 | 11.950 |
ネットワーク上の転送時間は無視し、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秒以内を満たしている。