8.1.1 パフォーマンスチューニングの観点
J2EEアプリケーション実行基盤のパフォーマンスチューニングは,次の観点で実施します。
-
同時実行数の最適化
-
Enterprise Beanの呼び出し方法の最適化
-
データベースアクセス方法の最適化
-
タイムアウトの設定
-
Webアプリケーションの動作の最適化
-
CTMの動作の最適化
-
そのほかの項目のチューニング
それぞれのポイントについて説明します。
- 〈この項の構成〉
(1) 同時実行数の最適化
同時実行数の最適化は,処理を多重化してCPUの処理能力を最大限に引き出して,システムのスループットを向上させることを目的とします。しかし,次のような場合,多重化しただけではスループットが向上しません。場合によっては,スループットが低下するおそれがあります。
-
入出力処理,排他処理などのボトルネックがある場合
-
最大スループットに到達している場合
-
CPUの利用率が飽和した状態で多重度以上の負荷を掛けた場合
-
実行待ちキューのサイズが不適切な場合
-
階層的な最大実行数の設定が不適切な場合
パフォーマンスチューニングでは,これらを考慮しながら適切なチューニングを実施して,同時実行数の最適化を図ります。
(2) Enterprise Beanの呼び出し方法の最適化
Enterprise Beanの呼び出し方法の最適化は,同じJ2EEアプリケーションや同じJ2EEサーバ内のコンポーネントを呼び出すときに,ローカルインタフェースやリモートインタフェースのローカル呼び出し機能を利用することで,不要なネットワークアクセスを削減することを目的とします。
次の機能を利用することで,RMI-IIOP通信によって発生する不要なネットワークアクセスを削減できます。
-
ローカルインタフェースの利用
-
リモートインタフェースのローカル呼び出し機能の利用
また,引数や戻り値の渡し方を参照渡しにすることで,さらに処理性能を向上できる場合があります。パフォーマンスチューニングでは,アプリケーションやシステムの特徴によってこれらの機能を有効に活用して,処理性能の向上を図ります。
(3) データベースアクセス方法の最適化
データベースアクセス方法の最適化は,処理に時間が掛かるコネクションやステートメントを事前に生成しておくことで,データベースアクセス時のオーバーヘッドを削減することを目的とします。
パフォーマンスチューニングでは,次に示す機能を有効に活用することで,データベースアクセス処理を最適化し,スループットを向上させます。
-
コネクションプーリング
-
ステートメントプーリング(PreparedStatementおよびCallableStatementのプーリング)
(4) タイムアウトの設定
タイムアウトの設定は,システムのトラブル発生を検知して,リクエストの応答が返らなくなることを防ぎ,適宜リソースを解放することを目的とします。
設定できるタイムアウトには,次の種類があります。
-
Webフロントシステムのタイムアウト
-
バックシステムのタイムアウト
-
トランザクションのタイムアウト
-
データベースのタイムアウト
(5) Webアプリケーションの動作の最適化
Webアプリケーションの動作の最適化は,コンテンツの配置方法の検討やキャッシュの利用によって不要なネットワークアクセスを削減して処理速度を速めたり,負荷分散によってシステムのスループットの向上を図ったりすることを目的とします。
(6) CTMの動作の最適化
CTMの動作の最適化は,CTMで使用するプロセス間の通信間隔を最適化して通信負荷を軽減したり,トラブル発生時に迅速に検知して対処したりすることで,システムとしての性能を向上させることを目的とします。また,CTMによってリクエストの処理に優先順位を付けることで,重要なリクエストをすばやく処理するようにもチューニングできます。
(7) そのほかの項目のチューニング
アプリケーションサーバでは,(1)〜(6)で説明した項目以外にも,チューニングできる項目があります。必要に応じてチューニングを実施してください。