前へ     目次     索引     DocHome     次へ     
iPlanet Application Server パフォーマンスおよびチューニングガイド



第 9 章   サーバパフォーマンスの確認


サーバのパフォーマンスを定期的に監視および確認して、高パフォーマンス用に設定したメソッドが実行されるようにします。次のトピックは、iPlanetTM Application Server のパフォーマンスを確認するのに役立ちます。

この章では、次のトピックについて説明します。



iPlanet Application Server の監視

監視は RAS (信頼性、可用性、サービス性) のうち、サービス性に当てはまる部分です。動的なサービスの動作がわからなければ、サービスを規定することはできません。

サービスプロバイダは、外部に公開されている Web サービスにアクセスするユーザが経験するアプリケーションパフォーマンスをリアルタイムで監視しようとします。データセンタには通常、サービスレベル契約を維持するためのグラフィカルなディスプレイと警報システムを持つ監視コンソールがあります。

そのため、アプリケーションと Web サービスコンテナは、それらのツールに正確で簡単にアクセスできるパフォーマンス情報を提供する必要があります。このような監視にはさまざまなレベルがありますが、少なくともサーバで処理されているリクエストの割合は示すことができます。

監視には柔軟性が必要です。つまり、再起動せずに、実行中のサーバで監視のオンとオフを切り換えることができる必要があります。その他の高レベルの監視ツールに対応できるよう、データは正しくフォーマットされている必要があります。

うまくチューニングされたシステムのパフォーマンスには、基本的に次のような特徴があります。

  • 全サーバの CPU 時間がすべて平均的に使用されている

  • 各サーバの全プロセッサの CPU 時間がすべて平均的に使用されている

  • 全 KJS プロセスおよび KCS プロセスの CPU 時間がすべて平均的に使用されている

  • システムタイムがかなり低く抑えられている (0 - 25%)。ワークフローが計算集約型である場合は特に低く抑えられている

  • KXS プロセスに割り当てられたプロセッサがすべてフルに活用されている

iPlanet Application Server Administration Tool (iASAT) を使用して、KXS と KJS/KCS の統計を監視します。プロセッサが完全にはビジーでないときでも待機しているリクエストを探します。これは、サーバが最適にチューニングされていないことを示します。DB コネクションプールに適切なコネクション数を設定できるように、KJS/KCS エンジン内のアクティブなデータベースコネクションをチェックします。


Solaris の場合

標準的なインストールの場合、各プロセスに使用される処理時間を調べるのは困難です。ただし、各 iPlanet Application Server プロセスに別の CPU に対する pbind を実行した場合は、mpstat によって各 CPU が消費した時間の割合が表示されます。さらに、プロセッサごとにシステム時間に対するユーザ時間の比率が表示されます。http://www.sunfreeware.com から入手できる proctool は、プロセスごとのリソース使用率を示す非常に使いやすいツールです。さらにこのツールには、プロセスのプロセッサへのバインドとプロセス優先順位の変更のための GUI が用意されています。

この節には次のトピックがあります。


iASAT によるプロットの追加

プロセスの属性を監視し、プロセスのパフォーマンスを確認するために、iASAT を使ってプロットを追加できます。これらのプロットは、KJS、KCS、および KXS プロセスの属性を一覧にするのに役立ちます。プロットやプロセス属性データの設定方法については、『iPlanet Application Server 管理者ガイド』の第 2 章「サーバの稼動状況の監視」を参照してください。



パフォーマンスチューニングツールの使用



市販されている多くのツールを使って、iPlanet Application Server で稼働する J2EE アプリケーションの動作のプロファイルを収集できます。これらのツールのほとんどは JVM プロファイルインタフェース (JVMPI) に依存しており、稼働中の Java 仮想マシンプロセスから動的に情報を取得します。

このようなツールの例としては、Machine Process、Jprobe、および OptimizeIt があります。これらのツールは開発環境で使用して、CPU とメモリの利用状況のプロファイルの収集、オブジェクトの調査、アプリケーションのメモリリークとデッドロックの検出、コードの補償、およびその他のトラブルシューティングを行います。JVMPI を使うとパフォーマンスオーバーヘッドが大幅に増加するため、配置されたアプリケーションの監視やプロファイル収集には適していません。

選択的バイトコード計測を使って、対象を絞った効率的なパフォーマンス監視を行うことができます。情報量や性能では劣りますが、より現実的なデータが得られます。Wily Solution 社の Introscope はこのようなテクノロジの一例であり、iPlanet Application Server の Version 6.0, SP3 以後に統合されています。

この節では、iPlanet Application Server での Jprobe、OptimizeIt、および Introscope の使い方について説明します。ここでは Windows 版のアプリケーションサーバだけを扱いますが、Solaris 版でも同様に動作します。

この節には次のトピックがあります。


OptimizeIt を使ったパフォーマンスのチューニング

OptimizeIt は iPlanet Application Server のパフォーマンスのチューニングに使える製品です。この製品は http://www.optimizeit.com からダウンロードできます。このツールを使うために、次の作業を実行してください。

  • iPlanet Application Server に同梱されている JDK (HotSpot を含む JDK 1.3.1_02) が使えるように JVM を設定します。

  • 呼び出されるクラスファイル名として、com.kivasoft.engine.Engine を追加します。

  • iPlanet レジストリのクラスパスエントリにあるセミコロン (;) で区切られたエントリをすべて OptimizeIt のクラスパスに追加します。これで、プロファイル収集を開始する準備ができました。

Solaris での手順も Windows NT の場合とほぼ同じです。ただし、Solaris の場合、OptimizeIt は Reference JDK 1.2 とだけ機能することが保証されており、iPlanet Application Server 6.0 には含まれていません。


Jprobe を使ったパフォーマンスのチューニング

JProbe は iPlanet Application Server のパフォーマンスのチューニングに使えるサードパーティツールです。iPlanet Application Server に Jprobe をインストールして使う方法については、http://www.jprobe.com/software/support/jprobe/j2ee/iplanet.html を参照してください。


IntroScope を使ったパフォーマンスのチューニング

Introscope では、指定したアプリケーションクラスファイルをすべて計測してプロファイル情報を収集する必要があります。計測は手動でスタティックに行うことも、iPlanet Application Server の内部クラスローダと対話して動的に行うこともできます。

シームレスであり、ディスクに配置したバイトコードを変更せずに動的に制御できるので、後者の方法をお勧めします。Wily Tech 社の Introscope については、http://www.wilytech.com を参照してください。

Introscope の統合サポートと動的なバイトコード計測は、iPlanet Application Server, Enterprise Edition 6.0, SP3 以後で利用できます。



SNMP 監視の設定



SNMP は、ネットワークの稼動状況に関するデータを交換するために使われるプロトコルです。SNMP によって、データはアプリケーションサーバと、ネットワーク管理ソフトウェアがインストールされているワークステーションの間で移動します。ワークステーションからリモートでネットワークを監視して、サーバ間のネットワークの稼動状況に関する情報を交換できます。たとえば、HP OpenView などのアプリケーションを使って、アプリケーションサーバが受信するエラーメッセージの数やタイプのほかに、どの iPlanet Application Server マシンが実行中かを監視できます。

ネットワーク管理ワークステーションは、サブエージェントおよびマスターエージェントの 2 つのタイプのエージェントを介して、企業のアプリケーションサーバを使って情報を交換します。サブエージェントは、アプリケーションサーバに関する情報を収集してマスターエージェントにその情報を渡します。マスターエージェントは、さまざまなサブエージェントとネットワーク管理ワークステーションとの間で情報を交換します。マスターエージェントは、通信するサブエージェントと同じホストマシンで動作します。

SNMP 監視の設定方法については、『iPlanet Application Server 管理者ガイド』の第 3 章「iPlanet Application Server をサードパーティツールを使って 監視するよう SNMP を設定する」を参照してください。



パフォーマンスデータの取得



Web リクエストは、ロードジェネレータから Web サーバのフロントエンドに渡され、iPlanet Application Server プラグインを経由して KXS プロセスに渡り、最終的に KJS プロセスに渡されて処理されます。応答は同じ流れを逆にたどります。4 か所で時間を測定することができます。

ロードジェネレータで: SilkRunner などのカスタムロード生成ツールを使用している場合は、ツールに測定メソッドとグラフ作成メソッドが含まれています。このようなツールでは、ユーザが実際に経験する応答時間を測定します。

Web サーバで: 応答時間のプロファイルを収集できるように iPlanet Web Server を設定することができます。『Web サーバのパフォーマンスチューニングと分析ガイド』を参照してください。

iPlanet Application Server Web プラグインで: iPlanet Application Server がリクエストに応答する時間を測定します。これは Web コネクタの観点から測定されます。つまり、リクエストが iPlanet Application Server に送信されてから、Web サーバで実行する Web コネクタプラグインに応答が戻ってくるまでの時間です。

ログを記録するには、iPlanet レジストリの iPlanet Web Server サーバで次のキーを有効にします。

SOFTWARE¥iPlanet¥Application Server¥6.0¥CCS0¥HTTPAPI¥iASRespTime=1

これによって、Web サーバのログファイルにタイミング統計情報がダンプされます。タイミング情報を抽出するには、次のような合成シェルコマンドを実行します。

grep "plugin reports" errors| grep -v Registry| cut -c2-21,64- | cut -d " " -f1,2,4

次に出力例を示します。時間の単位はミリ秒です。

22/Sep/2000:19:36:09 </iASApp/tmf/TMFServlet> 420

22/Sep/2000:19:36:10 </iASApp/tmf/TMFServlet> 600

22/Sep/2000:19:36:16 </iASApp/tmf/TMFServlet> 392

22/Sep/2000:19:36:16 </iASApp/tmf/TMFServlet> 220

22/Sep/2000:19:36:16 </iASApp/tmf/TMFServlet> 428

iPlanet Application Server サーバの KXS ログは <IAS_HOME>/ias/logs/KXS にあり、reqstart 時刻と reqexit 時刻がリクエストごとに記録されています。reqexit 値は各リクエストの処理時間を提供します。この時間から、iPlanet Application Server で Servlet や JSP リクエストを実行するのに必要な時間がわかります。

iPlanet レジストリで次のキーを 1 に設定すると、監視に便利です。

Software¥iPlanet¥Application Server¥6.0¥CCS0¥REQ¥debug=1

次の例のように、KXS ログのエントリの確認を開始します。

[26/Apr/2001 11:48:05:7] info:NSAPICLI-012:plugin reqstart, tickct:

988310885s 763786us

[04/26/01 11:48:05:768] Request 00 Starting AppLogic

{1A488137-7510-1941-BAE5-080020B90F48} on Engine 0

[04/26/01 11:51:07:504] Request 00 Completing AppLogic

{1A488137-7510-1941-BAE5-080020B90F48} Execution

[26/Apr/2001 11:51:07:5] info:NSAPICLI-009:plugin reqexit:181s

741781us

Request # starts at 00 and increments

これらのプローブポイントで収集したデータを使って、各リクエストの処理にかかった時間を正確に判断することができます。パスのキューにあるスレッド処理リクエストの数が正しく設定されていない場合は、キューによる遅延が応答時間を左右します。iPlanet Application Server と iPlanet Web Server をこのマニュアルのとおりに設定し、アプリケーションのパフォーマンスチューニングを行ってください。


前へ     目次     索引     DocHome     次へ     
Copyright © 2002 Sun Microsystems, Inc. All rights reserved.

最新更新日 2002 年 3 月 6 日