基本情報技術者 2011年 春期 午前(科目A) 問19
問題文
Webサーバとデータベースサーバ各1台で構成されているシステムがある。次の運用条件の場合、このシステムでは最大何TPS処理できるか。ここで、各サーバのCPUは、1個とする。
〔運用条件〕
(1) トランザクションは、Webサーバを経由し、データベースサーバでSQLが実行される。
(2) Webサーバでは、1トランザクション当たり、CPU時間を1ミリ秒使用する。
(3) データベースサーバでは、1トランザクション当たり、データベースの10データブロックにアクセスするSQLが実行される。1データブロックのアクセスに必要なデータベースサーバのCPU時間は、0.2ミリ秒である。
(4) CPU使用率の上限は、Webサーバが70%、データベースサーバが80%である。
(5) トランザクション処理は、CPU時間だけに依存し、Webサーバとデータベースサーバは互いに独立して処理を行うものとする。
選択肢
ア:400(正解)
イ:500
ウ:700
エ:1,100
🔒 解説は解答すると表示されます
サーバCPUによるTPS制限【午前解説】
正解の理由
正解は ア(400)です。理由は次の通りです。各サーバごとに1秒あたりに使えるCPU時間(ミリ秒)を利用率上限で計算し、1トランザクション当たりのCPU時間で割ると各サーバの最大TPSが求まります。システム全体の最大TPSは、必ず各段階の最小値(ボトルネック)になります。
具体計算:
- Webサーバ:1トランザクション当たり1 ms、CPU利用率上限70% → 1秒あたり利用可能時間は ms。よってWeb側の最大TPSは TPS。
- データベースサーバ:1トランザクション当たり ms、CPU利用率上限80% → 1秒あたり利用可能時間は ms。よってDB側の最大TPSは TPS。
従ってシステム全体の最大TPSは min(700, 400) = 400 TPS、選択肢は ア が正解です。
解法ステップ
- 各サーバの1秒あたりのCPU利用可能時間を求める:。
- 1トランザクション当たりのそのサーバでのCPU時間(ms)を求める。
- サーバ別の最大TPSを計算:。
- 全体の最大TPSはサーバ別TPSの最小値を採る(ボトルネック)。
例を式で示すと:
- Web:
- DB:
- システム:。
選択肢別の誤答解説
- ア: ア 400 — 正解。DBがボトルネックとなり最大400TPSとなるため正しい。
- イ: 500 — 誤り。500はどちらのサーバ計算とも一致しない値で、単位換算や利用率を不正確に扱った誤計算の結果になりやすい。例えばDBの2msを無視してWebのみで評価した混同が考えられます。
- ウ: 700 — 誤り。これはWebサーバ単体の最大700TPSをそのままシステム全体に適用した誤りで、DBの制約を無視しています。
- エ: 1,100 — 誤り。サーバ能力を誤って足し合わせた(700 + 400 = 1,100)ような誤解に基づく値で、スループット評価の基本原理に反します。
よくある誤解
- 各サーバの処理能力を単純に足し合わせる:スループットは段階ごとの最小値で決まるため合算は誤りです。
- 利用率(%)を考慮しない:1秒当たりの利用可能ミリ秒に換算しないと過大評価になります。
- msと秒の単位を混同する:1秒 = 1000 ms の換算ミスで大きくずれます。
補足コラム
- 本問は「並列度」や「I/O待ち」を無視してCPU時間のみで考える簡略モデルです。実運用ではI/O待ち時間やスレッド数、ネットワーク遅延、同期処理などが影響します。
- 複数CPU(コア)がある場合は「1秒あたりの利用可能時間」をコア数倍にして計算します。例えばコア数が2なら
1000 ms × コア数 × 利用率を用います。 - ボトルネックの改善には、ボトルネックサーバのCPU性能向上、並列化、処理時間の短縮が直接効きます。
FAQ
Q. なぜ「最小値」を取るのですか?
A. 各トランザクションは両方のサーバを通るため、どちらか一方が処理能力不足だと全体の流量が制限されます。流水に例えると最も狭い箇所が流量を決めます。
A. 各トランザクションは両方のサーバを通るため、どちらか一方が処理能力不足だと全体の流量が制限されます。流水に例えると最も狭い箇所が流量を決めます。
Q. 単位を間違えそうです。注意点は?
A. 常に「1秒 = 1000 ms」を意識し、CPU時間をmsで統一してから計算してください。
A. 常に「1秒 = 1000 ms」を意識し、CPU時間をmsで統一してから計算してください。
Q. サーバ間で処理が完全に独立とあるが、順序性は?
A. 問題文ではWeb経由でDBへ行く流れですが、処理は独立という仮定のため各サーバのCPU時間合算をせず、各段階の最大TPSを比較します。
A. 問題文ではWeb経由でDBへ行く流れですが、処理は独立という仮定のため各サーバのCPU時間合算をせず、各段階の最大TPSを比較します。
Q. 複数コアや並列処理があるときは?
A. コア数を掛け合わせた利用可能時間で計算します(例:2コアなら1000×2×利用率)。
A. コア数を掛け合わせた利用可能時間で計算します(例:2コアなら1000×2×利用率)。
関連キーワード: TPS、スループット、ボトルネック、CPU使用率、Webサーバ、データベース、単位変換、利用率上限、CPU時間計算、トランザクション

\ せっかくなら /
基本情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

