ピーク時になると応答時間が急激に悪化したので、とりあえずCPUとメモリを倍増しておけば大丈夫かな……と勘に頼って対応し、ドツボにはまった経験、ありませんか? この連載では、インフラエンジニアなら最低限理解しておきたい性能問題の基礎を解説します。(編集部)
前回「実機では測定できない性能を測定?」では、性能シミュレーション技法の概要とその実施手順について説明しました。今回はそれを踏まえ、適用事例を紹介します。
前回、性能シミュレーション技法は、ITシステムのライフサイクルにおける複数のフェイズに適用できるポイントがあると述べました。ここで説明するのは、その中の「後期テストフェイズ:負荷テストの補完的位置付け」での実施例です。ぜひ参考にしてください。
最初に、適用対象システムの概要を説明します。
ここで取り上げるのは、比較的大規模な組織のための、企業ポータル/Webメール/文書管理系アプリケーションから構成される情報システムです。アプリケーションはJava言語で開発された部分と、Java以外の部分との混成になっています。
企業内コミュニケーション系システムの特徴として、運用時の負荷変動が大きく、例えば始業時間帯などのピーク性もかなりはっきりしていることが挙げられます。また、利用される機能の割合(ワークロードバランス)が事前に予測しにくく、本番運用に入ってから変化していくことが予想されます。
ユーザー向けサービスは、すべてWebアプリケーションとして提供されます。機能数(画面種類数)は約1000画面に上ります。また、画面に組み込まれたJavaScriptによって、ユーザーによる画面遷移以外にも、サーバへのトランザクションが発生する部分があります。
本事例における性能シミュレーションの適用目的は、下記のとおりです。
(1)想定を超える負荷が発生したときに、性能がどの程度悪化するかを把握する。特に、負荷テストツールが発生できる上限よりも多い負荷が発生した場合については、実機でのテストはできませんが、シミュレーションならば予測値を得ることができます。
(2)負荷の掛かり方のパターン(トランザクションの種類ごとの割合など)が、事前に想定したパターンとは違った場合の影響を把握する。
(3)業務量の増加などにより性能が悪化したときの対策として、サーバの台数やサーバ資源(CPUなど)を増設した場合の、スループットや応答時間の改善度合いを知る。
さらに、次の評価を行います。
(4)期待する性能値が得られそうにない場合に、改善策を実施した場合の性能値の予測。
この記事では上記の(1)〜(4)のうち、(1)と(4)を取り上げて例を示します。
シミュレーションに取り掛かる前に、まず実機を用いて、いくつかの状態で同時400ユーザーまでの負荷テストを行い、パフォーマンスを測定しました。この測定値を基に、シミュレーション用の性能モデルを作成します。ここでは、実機テストでは確認できない400ユーザーを超える状態での性能を予測して、必要ならば対応策を検討することになります。
実機テストの結果を基に、シミュレーションツール上に、ハードウェアモデルとソフトウェアモデルを構築します。
・ハードウェアモデル:本番環境を構成するサーバ、ストレージ、ネットワーク機器を内部スペックや台数を含め、実際のとおりに配置します。
図1の画面上に示されているのは、サーバなどの種類とその接続形態のみですが、それぞれのサーバにはCPUやメモリ、ローカルストレージなどのパラメータが、またネットワークには通信帯域などのパラメータが埋め込まれています。図1中の輪になった矢印は、それぞれのサーバで稼働するソフトウェアのアイコンです。
・ソフトウェアモデル:図1の構成図のうち、輪になった矢印で示している稼働するソフトウェアのアイコンには、機能ごとに消費するリソース量を埋め込みます。
とはいえ作業量の面で、ターゲットアプリケーションのすべての機能を対象にするのは困難な場合が少なくありません。そこで、処理パターンや負荷の重さなどから、代表的な機能(画面)をピックアップし、モデルを作成する場合がほとんどです。
このケースでも、1000画面近い機能をすべて性能モデルに組み込むのは困難なので、全体の中でも多く実行される機能のうち、30画面程度をピックアップしてモデルを作っています。図2は埋め込まれているパラメータ群の一部を抜粋したものです。
Copyright © ITmedia, Inc. All Rights Reserved.