本連載は、Javaアプリケーション・サーバの1つである、IBM WebSphere Application Server(以下、WAS)についてのパフォーマンス・チューニングに関する入門記事です。チューニングといっても、実施するエンジニアによって、その方法は異なりますが、本連載はWASを前提とし、かつ80%のケースをカバーすることを目標とします(編集部注:WASのインストールから学びたい読者は、「バージョン別セットアップマニュアル一覧」のWebSphere Application Serverを参照してください)
前回はチューニングを実施する前にやっておくべきとして、実施しなければならないパフォーマンス・ボトルネックの把握および解析について、パフォーマンス・チューニング関連ツールの紹介を含めて解説しました。
連載第2回目のトピックとして、まずは、WASパフォーマンス・チューニングの主要項目について簡単な説明をします。その後で、パフォーマンス・チューニングの主要項目の1つである「トランスポート・チャネル・サービス」について解説します。
WASは非常に多くのパフォーマンス・チューニングのためのパラメータやオプションを提供しています。さまざまなアプリケーションやAS環境に応じて、それらパラメータの中から適切なものを適切な値に調整することにより、WAS上でアプリケーションを最適に稼働できます。
ここで取り上げるWASパフォーマンス・チューニング主要項目リストは、一般に多くのアプリケーションでパフォーマンスやスケーラビリティの向上に役立つものを含んでおります。ただし、筆者の経験でもまれにユニークな環境において本項目リストに取り上げるものが適さないケースや取り上げていない項目が性能向上の鍵となるケースも存在していることもありました。ですので、必要に応じてほかの項目を検討する場合もあります。
JVMのヒープサイズの調整およびGC(ガーベッジ・コレクション)ポリシーの調整によりパフォーマンス性能向上を見ることができます。
HTTPSessionオブジェクトのサイズやクラスタリング環境におけるHTTPSessionの設定がパフォーマンス性能に影響を及ぼす場合があります。
JDBCデータ・ソースの設定は、パフォーマンス性能に大きな影響を及ぼす場合があります。例えば、接続プールのサイズやPrepared Statementのキャッシュ・サイズの調整はアプリケーション・デザインおよび同時リクエスト数などを基に最適化する必要があります。
JDBCドライバには、いくつもの種類があります。また、各ベンダによって特徴があります。例えば、Type2やType4といったドライバ・タイプの違いに加え、IBM社の場合は、旧世代のドライバと「Universal JDBC Driver」あるいは「JCC Driver」と呼ばれる新世代のドライバがあります。
また、DBがWASと同じマシン上に存在する場合とリモートマシン上に存在する場合といった環境によって、パフォーマンス面で最適なドライバを検討する必要があります。
ORB(Object Request Broker)の“pass by reference”オプションを設定することにより、パフォーマンス性能に大きなメリットを与えることがあります。EJBのSession Beanが別のSession Bean、あるいはEntity Beanを呼び出すケースで、両者が同一JVM内で稼働している場合に、その享受を得られる可能性があります。
編集部注:ORBについて詳しく知りたい読者は、@IT Insider's Computer Dictionaryの[CORBA (Common Object Request Broker Architecture)]をご参照ください
アプリケーションによっては、WASのトランザクション・ログに非常に頻繁にログを書き込むケースがあります。その場合には、WASのトランザクション・ログの書き出し場所を高速ディスク(RAIDなど)に指定し、ディスク書き出しがボトルネックにならないように調整します。
Reliability(信頼性)とパフォーマンス性能は、トレードオフの関係になります。WASのメッセージング・エンジンは数種類のReliabilityオプションを提供しており、アプリケーション特性を考慮して最適なものを選択するようにします。パーシスタント先としてDBを指定する場合には、JDBCデータ・ソースの調整が必要になります。
MDB(Message Driven Bean)を使用する場合には、スレッド・プールのサイズの調整などが必要となります。
WASの各コンポーネントのスレッド・プールのサイズを調整することにより(最小サイズおよび最大サイズを指定)、性能向上を行えます。
Webアプリケーションの場合には、Webコンテナ・スレッド・プール、EJBアプリケーションの場合には、ORBスレッド・プールの調整を行います。特に、Webアプリケーションの場合には、「トランスポート・チャネル・サービス」の設定との関連を理解する必要があります(「トランスポート・チャネル・サービス」の説明については、後述します)。
動的キャッシングを使用することにより、パフォーマンス性能を向上できます。なお、動的キャッシングの利用に際しては、あらかじめアプリケーション・デザインの段階で検討をしておく必要があります。
WAS以外のコンポーネント、例えば、Web(HTTP)サーバやDBの調整が、システム全体の高速化に必要となります。
パフォーマンストラブルは、アプリケーション・デザインに起因する場合があります。アプリケーション・デザインが原因の場合には、その検証・見直しが必要になります。
OSの設定も重要なチューニング項目です。TCP/IPの設定やファイル・ディスクリプタ数の設定を調整することにより、性能が向上する場合があります。
ネットワーク接続の設定を最適なものにします。パフォーマンス性能という視点では高速設定、例えば、ギガビットイーサネットや高性能なスイッチの使用などです。
編集部注:スイッチについて詳しく知りたい読者は、@IT Insider's Computer Dictionaryの[スイッチ (switch)]をご参照ください
Full DuplexかHalf Duplexかといったネットワークの知識も必要になります。イーサネットアダプタのデバイス・ドライバのバージョンや設定、ネットワークメモリバッファ容量なども検討項目です。
編集部注:Full Duplexについて詳しく知りたい読者は、@IT Insider's Computer Dictionaryの[全二重 (full-duplex)]を、Half Duplexについては[半二重 (half-duplex)]ご参照ください
さて、いままでの解説でWASのパフォーマンス・チューニング項目の全体像がつかめたことと思います。ここからは、上記パフォーマンス・チューニング主要項目で取り上げた項目を中心に特定のテーマ・項目に焦点を当てて解説を行っていきます。
Copyright © ITmedia, Inc. All Rights Reserved.