「アプリケーション・サーバを使いJ2EEべースのWebアプリケーションを構築できたのはいいが、どうも本来のパフォーマンスが出ていない」とは、よく聞く話である。本連載では、そういった事態に遭遇した場合に、具体的にどのように対処してパフォーマンスを向上させるかについて解説していく。(編集局)
これまでにパフォーマンス・チューニングのポイントについて、ハードウェア、OS、Java VM、アプリケーション・サーバ、J2EEサービスなど、いろいろな観点から解説してきました。第4回では、実際にパフォーマンス・チューニングの検証を行った結果を解説します。検証実験は、日本BEAシステムズのシステム技術部のメンバーが行いました。インターネットによるバイクの新車・中古車の販売のサイトをモデルとしたアプリケーションを構築し、このアプリケーションを題材にパフォーマンス・チューニングに関する検証作業を実施しました。
今回は、実際に行ったチューニング・テストの中から、表1に示す「Java VM」「アプリケーション・サーバ」「アプリケーション」の3点のチューニング・ポイントについて、実践に近いアプローチで検証を行いました。
設定レイヤ | チューニング・ポイント | 概要説明(検証方法) |
---|---|---|
Java VM | Java VMのガベージ・コレクション(GC)の設定 | アプリケーション・サーバに最大負荷をかけながら、XX:NewSize、XX:MaxNewSizeの適正値を求めていく |
アプリケーション・サーバ | WebLogic Serverの実行スレッドの設定 | アプリケーション・サーバに最大負荷かけながら、適切な実行スレッド数を求めていく |
アプリケーション | EJB 2.0 Entity-Beans CMP(Container-Managed Persistence)の実装について | アプリケーション・サーバの実装方式(Servlet、SLSB、SFSBなど)ごとに、負荷をかけながらパフォーマンスを測定し、CMPとほかの実装方式の性能比較を行う。パフォーマンスの観点から、CMPの実用性を求めていく |
表1 チューニング・ポイントの具体例 |
今回のチューニング・テストは、現象をなるべく分かりやすく把握するため、図1に示すように負荷試験装置、アプリケーション・サーバ、データベース・サーバをそれぞれ1台ずつのPCで構成しました。
アプリケーション・サーバ上に、インターネットによるバイクの新車・中古車の販売をモデルとしたサイトで、データベース(DB)に登録されているバイク情報の参照、更新、登録、削除を複数のユーザーが行うことのできるテストアプリケーションを作成しました。また、今回のチューニング・テストで各実装方式(Servlet、SLSB[Stateless Session Bean]、SFSB [Stateful Session Bean]、CMP[Container-Managed Persistence]、BMP[bean-managed persistence])における性能比較を行うため、参照、更新、登録、削除の基本操作が、それぞれの実装方式に対応しています。例えば、バイク情報を参照するにも、メニュー画面から、Servlet実装での参照、SLSB実装での参照などを選択することができます。
図3にテストシナリオを示します。シナリオの流れとしては、ホームアクセス((1)INDEX処理)→バイク名によるバイク情報の検索((2)AME_SEARCH処理)→検索したバイク情報の更新((3)UPDATE処理)の操作を仮想ユーザーが行います。初期時の仮想ユーザー数は、5ユーザーとし、3分ごとに5ユーザーずつ増加させ、最大40ユーザーまで測定します。
そのときの各処理の応答時間およびトランザクション数((1)から(4)での処理完了数)を測定します。
図4〜図8にテストシナリオの画面遷移を示します。参照、更新、登録、削除の基本操作はそれぞれの実装方式に対応しています。
(1)静的HTTPの表示する処理(INDEX処理)で、TAKA Motorsのホームページを表示、車名検索を選択する。
(2)バイク名による検索で、1000件のデータから1件ずつランダムに検索処理、社名を入力し、測定する各実装方式のボタンを押す。
(3)(2)で検索したバイクデータを更新処理、図6の画面の更新ボタンを押すと図7の更新画面が現れる。必要なフィールドを入力後[submit]ボタンを押す。
第2回「パフォーマンス・チューニングの定石を知る」で負荷試験ツールとして「Microsoft Web Application Stress Tool」を紹介しました。スポットで行うチューニング作業ではこのツールで十分ですが、なるべく実環境に近い状態で測定を行う場合は、複雑なシナリオを作成しなければならないことなどを考慮し、機能が充実した市販の負荷試験ツールを使用することをお勧めします。
今回のチューニング・テストは、マーキュリー・インタラクティブ社の「Load Runner 7.02」(http://www.mercury.co.jp/products/loadrunner/)を使用しました。実際のプロジェクトでは、テスト工数の効率化、大規模なテスト環境の構築、実環境に近いシナリオの作成などを考慮しなければならないと思いますので、WebLogic ServerなどのAPサーバのリソース・モニタが監視できる機能の充実したマーキュリー・インタラクティブ社のLoad Runner製品をお勧めします。
Copyright © ITmedia, Inc. All Rights Reserved.