性能ボトルネックの解析は、SEの経験やスキルが求められるやっかいな作業だ。クライアント側とサーバ側で一貫した解析を可能にする、Cosminexus搭載の解析ツールについて解説する。
例えば、負荷テストでリクエスト遅延が発覚したり、また新商品をWebに掲載したら急激にリクエストが増加し、レスポンスが著しく低下するなど、Webシステムの処理にボトルネックが発生した場合には、どのような対応をするべきだろうか。
まず思い浮かぶのが、高いスキルを持つSEに調査を依頼することだ。SEの持つ経験や勘、独自ツールの利用、アプリケーションへの測定機能の作り込みを駆使した原因の特定作業がなされ、特定された箇所に応じた対策を施す。これが一般的な性能ボトルネックの対策手順である。
Webシステムはボトルネックの特定作業が非常に煩雑である。その理由はWebシステムが多くのコンポーネントの組み合わせで構成されていることに起因する。それぞれのコンポーネントに対応したツールで採取したログを元に、タイムスタンプなどによって付き合わせを行い、問題の箇所を特定する。この作業を確実にこなすには、SEに相応の経験とスキルが求められる。
しかし、そのようなSEは慢性的に不足しているのが現実だ。性能問題解決においては、特定個人のスキルに依存しないボトルネック特定のスピード化と見える化が重要な課題といえる。
Cosminexusに搭載されたツールを活用すれば、経験や勘による問題箇所の特定や独自ツールを利用する必要はなくなる。その1つが、サーバ側のボトルネックを特定する「性能解析用トレース」である。
性能解析用トレースは、Webアプリケーションサーバがクライアントからのリクエストを受け付けてからデータベースに至るまでと、その処理結果をクライアントに返すまでの特定箇所で処理時刻をファイルに記録する。
利用方法は簡単で、ユーザーは性能解析用トレースの開始コマンドを投入するだけだ。コマンドが実行されると、Webサイトへのリクエストが来るたびに、リクエストごとに付与されたIDや処理時刻などがログとして専用ファイルに記録される。
ログの採取が終了した後は、専用コマンドを投入することでログをファイルに出力すればよい。Microsoft Excelで表示することもできるためボトルネック箇所を容易に特定できるのである。
一方、クライアント側にJavaScriptやDHTMLなどの動的なコンテンツが含まれている場合、Webブラウザでの表示に時間がかかる場合がある。
このような現象が発生した場合のボトルネック特定ツールが「クライアント性能モニタ」である。
クライアント性能モニタは、作成したWebアプリケーションを操作するときの処理時間をクライアントのWebブラウザ視点で測定し、分析する機能を提供する。クライアント性能モニタを利用することにより、以下の時間を把握することができる。
クライアント性能モニタの性能データには、アプリケーションサーバ側の性能解析用のトレースと同じくリクエスト単位に一意のIDが振られている。このIDはクライアント側、アプリケーションサーバ側とも共通であるため、遅延が発生しているリクエストをクライアント側、サーバ側両方の性能データを参照して特定し、性能ボトルネックの解析ができる。
クライアント性能モニタを導入する場合には、クライアントPCにツールをインストールする必要はない。またサーバ上で動作するWebアプリケーションプログラムを変更する必要もない。Webアプリケーションに対してクライアント性能モニタを有効にするように設定するだけで済む。
クライアントからリクエストを受けたアプリケーションサーバは、クライアント性能フィルタの設定に応じてクライアント性能測定用スクリプトをWebアプリケーションのサーブレットやJSPが生成したレスポンスに埋め込む。
その後、レスポンスを受信したブラウザ上で、表示処理と並行してクライアント性能測定用スクリプトが動作し、性能データが取得される。Webアプリケーションの利用者はクライアント性能モニタが動作していることを意識せずに、Webブラウザを操作することができる仕組みになっている。
次回は、Webアプリケーションサーバの運用について解説する。
Copyright © ITmedia, Inc. All Rights Reserved.