IBM WebSphere Application Server アドバンスド版

チューニング・ガイド


パフォーマンス・チューニングの新着情報

パフォーマンス・チューナー・ウィザード

動的フラグメント・キャッシング

チューニングの基本

   チューニングに影響するコンポーネント

   症状に関する表

   チューニングのタイプ

      パラメーター・チューニング

           影響が大きいチューニング・パラメーター
           障害を回避するためのチューニング・パラメーター

    WebSphere Application Server のシステム・キューの調整

       WebSphere キューイング・ネットワーク

             クローズ・キューとオープン・キュー
             WebSphere のキュー設定値

       設定値の決定

             WebSphere の前のキューイング

             スループット・カーブの描画

             キューの調整
             アクセス・パターンに関するキュー設定値の調整

       キューイングと Enterprise Bean

       キューイングとクラスター化

    セキュア・ソケットのチューニング

       ハンドシェークとバルク暗号化 / 暗号化解除の概説

       SSL パフォーマンスの拡張方法

    アプリケーション組み立てのパフォーマンスのチェックリスト

   Java メモリーのチューニング

       ガーベッジ・コレクションのボトルネック

       ガーベッジ・コレクション・ゲージ

       オブジェクトの過剰使用の検出

       メモリー・リークの検出

       Java ヒープ・パラメーター

    DB2 への接続数

    Solaris TCP パラメーター

    ワークロード管理トポロジー

個々のパフォーマンス・パラメーター

    ハードウェアの容量および設定値

       プロセッサー速度

       メモリー

       ネットワーク

    オペレーティング・システムの設定値

       Windows NT/2000 TCP/IP パラメーター

             Windows NT/2000 TcpTimedWaitDelay
             Windows NT/2000 MaxUserPort

       AIX (4.3.3)

             AIX ファイル記述子 (ulimit)

       Solaris

             Solaris ファイル記述子 (ulimit)
             Solaris tcp_close_wait_interval/tcp_time_wait_interval
             Solaris tcp_fin_wait_2_flush_interval
             Solaris tcp_keepalive_interval
             その他の Solaris TCP パラメーター
             Solaris カーネル semsys:seminfo_semume
             Solaris カーネル semsys:seminfo_semopm

       HP-UX 11

             WebSphere Application Server JVM の仮想ページ・サイズを 64K に設定
             HP-UX 11 tcp_conn_request_max
             HP-UX 11 カーネル・パラメーターの推奨値

    Web サーバー

       Web サーバー構成の再ロード間隔

       IBM HTTP server - AIX および Solaris

             MaxClients
             MinSpareServers、MaxSpareServers、および StartServers

       Netscape Enterprise server - AIX および Solaris

             アクティブ・スレッド

       Microsoft Internet Information Server - Windows NT/2000

             Internet Information Server (IIS) 許可プロパティー
             1 日当たりの予測ヒット数
             ListenBackLog パラメーター

       IBM HTTP server - Linux

             MaxRequestsPerChild

       IBM HTTP server - Windows NT/2000

             ThreadsPerChild
             ListenBackLog

    WebSphere Application Server のプロセス

       アプリケーション・サーバーのプロセス優先度の調整

       Web コンテナー

             Web コンテナーの最大 ThreadsMax 接続数
             トランスポートのキープアライブの最大数
             トランスポートのキープアライブごとの要求の最大数
             URL 呼び出しキャッシュ
             最大数を超えるスレッドの割り振りを可能にする

       EJB コンテナー

             キャッシュの設定値
             CMP Enterprise Bean を幾つかの Enterprise Bean モジュールに分割する

       セキュリティー

             必要がないときにセキュリティーをオフにする
             セキュリティー・キャッシュのタイムアウトを環境に合わせて微調整する
             セキュリティー・キャッシュのタイプおよびサイズ (システム・パラメーター)
             SSL セッションを適切に構成する

       オブジェクト・リクエスト・ブローカー (ORB)

             値による受け渡しと参照による受け渡し (NoLocalCopies)
             com.ibm.CORBA.ServerSocketQueueDepth
             com.ibm.CORBA.MaxOpenConnections および ORB 接続キャッシュの最大数
             オブジェクト・リクエスト・ブローカーのスレッド・プール
             JNI ReaderManager およびリーダー・スレッドの使用

    Java 仮想マシン (JVM)

       Sun JDK 1.3 HotSpot -server ウォームアップ

       Sun JDK 1.3 HotSpot の新規作成プール・サイズ

       Just In Time (JIT) コンパイラー

       ヒープ・サイズの設定値

       クラス・ガーベッジ・コレクション

    データベース

       データベースの位置

       WebSphere データ・ソース接続プールのサイズ

       準備済みステートメント・キャッシュのサイズ

       DB2

             DB2 Linux 版に TCP ソケットを使用
             DB2 MaxAppls
             DB2 MaxAgents
             DB2 buffpage
             DB2 照会最適化レベル
             DB2 reorgchk
             DB2 MinCommit

    セッション管理

    WebSphere Application Server Enterprise Extensions Message Listener

       最大セッション

      同じキューで listen する複数のアプリケーション・サーバー

その他の参考資料

パフォーマンス・ツールの操作手順

       Windows NT/2000 パフォーマンス・モニターの開始



パフォーマンス・チューニングの新着情報

パフォーマンス・チューナー・ウィザード
動的フラグメント・キャッシング

パフォーマンス・チューナー・ウィザード

パフォーマンス・チューナー・ウィザードは、WebSphere Application Server アドバンスド版に組み込まれたツールで、アプリケーション・サーバーに関連した最も一般的なパフォーマンス関連の設定値を含んでいます。パフォーマンス・チューナー・ウィザードを使用して、アプリケーション、サーブレット、Enterprise Bean、データ・ソース、および予測される負荷の設定値を最適化してください。設定できるパラメーターには、次のものがあります。

これを管理コンソールから呼び出すには、「コンソール (Console)」 > 「Wizards」 > 「Performance Tuner」と選択してください。

詳細は、インフォセンターの項目 6.6.21 を参照してください。

動的フラグメント・キャッシング

動的フラグメント・キャッシングは、動的なサーブレットと JSP ファイルの出力をキャッシュに入れる機能で、アプリケーションのパフォーマンスを劇的に向上させる技術です。このキャッシュは、アプリケーション・サーバーの JVM 内で機能し、サーブレットの service() メソッドへの呼び出しを代行受信して、サーブレットを再実行する代わりにキャッシュから起動できるかどうか検査します。 J2EE アプリケーションは読み取り書き込み率が高く、データの新しさに関する遅延の許容度が低いので、フラグメント・キャッシングを使用すると、サーバーの応答時間、スループット、およびスケーラビリティーが劇的に改善される可能性があります。

サーブレットが実行されると (キャッシュに入れられる出力を生成する)、その出力が入ったキャッシュ項目が生成されます。実行の副次作用 (つまり、他のサーブレットまたは JSP ファイルの呼び出し) と、タイムアウトや項目の優先順位情報などの項目に関するメタデータも生成されます。固有な項目は、サーブレットの呼び出しごとに HttpServletRequest オブジェクトから生成される ID ストリングによって区別されます。このため、キャッシュに入れられるサーブレットは、URI がサーブレットまたはセッション情報の呼び出しに使用した要求パラメーターによって決まります。JSP は WebSphere Application Server によってコンパイルされてサーブレットになるので、JSP とサーブレットは交換して使用できます (XML ファイル内で要素を宣言するときを除く)。

この設定を行うには、次のようにします。

  1. 管理コンソールで、チューニングするアプリケーション・サーバーを選択する。
  2. サービス (Services)」 > 「Web コンテナー・サービス (Web Container Service)」 > 「特性の編集 (Edit Properties)」とクリックする。
  3. サーブレットのキャッシュ (Servlet Caching)」タブを選択し、ボックス「Enable Servlet Caching」にチェックマークを付ける。
  4. OK」をクリックして変更内容を保管する。
  5. アプリケーション・サーバーを再始動する。

詳細は、インフォセンターの項目 4.5: 動的フラグメント・キャッシング を参照してください。

症状に関する表

症状に関する表を検討することによって、簡単に処置を行うことができます。この表から、症状に簡単にアクセスでき、その症状に関連するチューニング情報に迅速にリンクできます。表には、以下のタイプの情報があります。

症状 追加情報
スループットおよび応答時間が望ましくない。 プロセッサー速度
AIX: メモリーの割り振りエラー
Solaris: オープン・ファイルが多すぎる
AIX ファイル記述子 (ulimit) または Solaris ファイル記述子 (ulimit)
Solaris: サーバーがピーク期間中に停止し、応答には何分も掛かり、システム処理のアクティビティー全体でプロセッサーの使用率が高いままである。さらに、netstat を使用すると、CLOSE_WAIT または FIN_WAIT_2 状態にあり、ポート 80 に対してオープンになっているソケットが幾つかあることが示される。 Solaris tcp_close_wait_interval/tcp_time_wait_interval および Solaris tcp_fin_wait_2_flush_interval
Windows NT/2000: netstat により、TIME_WAIT 状態にあるソケットが多すぎることが表示される。 Windows NT/2000 TcpTimedWaitDelay
HP-UX 11: スループットが望ましくなく、アプリケーション・サーバーの優先度が調整されていない。 WebSphere Application Server プロセスのオペレーティング・システム優先度の調整
負荷がある場合に、クライアントの要求がタイムアウトになるかまたはリジェクトされるため、Web サーバーに到着しない。 HP-UX 11 については、HP-UX 11 tcp_conn_request_max を参照
IIS Windows NT/2000 については、ListenBackLog パラメーター を参照
NT 版の IBM HTTP Server については、ListenBackLog を参照
Windows NT/2000: 他のベンダーのアプリケーション・サーバーをインストールした後に、WebSphere Application Server のパフォーマンスが低下した。 IIS 許可プロパティー
リソース・アナライザーの最大パーセント・メトリックに、Web コンテナーのスレッド・プールが小さすぎることが示されている。 Web コンテナーの最大 ThreadsMax 接続数
netstat により、ポート 9080 に対し TIME_WAIT 状態のソケットが多すぎることが示される。 Web コンテナー・トランスポートのキープアライブの最大数
ページングが原因で、ディスクの入出力回数が多すぎる。 ヒープ・サイズの設定値
リソース・アナライザーのデータ・ソース接続プールの最大パーセント・メトリックに、プールのサイズが大きすぎることが示されている。 WebSphere データ・ソース接続プールのサイズ
リソース・アナライザーの準備済みステートメント・キャッシュ廃棄メトリックに、データ・ソースの準備済みステートメント・キャッシュのサイズが小さすぎることが示されている。 準備済みステートメント・キャッシュのサイズ
DB2 書き込みログ・レコードが原因で、ディスクの入出力回数が多すぎる。 DB2 MinCommit
リソース・アナライザーの最大パーセント・メトリックに、オブジェクト・リクエスト・ブローカーのスレッド・プールが小さすぎることが示されている。 キューイングと Enterprise Bean
リソース・アナライザーの Java 仮想マシン・プロファイラー・インターフェース (JVMPI) に、ガーベッジ・コレクションに費やしている時間が多すぎるときに、オブジェクトを過剰に使用していることが示されている。 オブジェクトの過剰使用の検出
リソース・アナライザーの最大パーセント・メトリックに、メモリー・リークが起こり、 Java がメモリー不足例外を表示していることが示されている。 メモリー・リークの検出
スループット、応答時間、およびスケーラビリティーが望ましくない。 アプリケーションが許可する場合、 動的フラグメント・キャッシングを活用する

チューニングの基本

チューニングに利用可能なプロシージャーを使用することで、WebSphere Application Server に対し、広範囲に渡りパフォーマンスを改善することができます。この「チューニング・ガイド」では、一般的な推奨事項および特定のチューニング方法論を説明することによって、チューニングの方法を解説します。この「チューニング・ガイド」では、さらに、パフォーマンス・チューニングを拡張するさまざまな要因と変数に関するヒントも提供します。

「チューニング・ガイド」を説明文中の例示およびリソースと共に活用して、チューニングの経験を積んでください。チューニングは、進行する学習プロセスです。このガイドで紹介されている結果は、実際の結果とは異なる場合があります。

チューニングに影響するコンポーネント

WebSphere Application Server のパフォーマンスに影響する可能性があるコンポーネントは、次のとおりです。 それぞれのコンポーネントに、さまざまな重要度と影響度を持つ特有のチューニング・オプションがあります。これらのコンポーネントそれぞれについては、 この資料の『個々のパフォーマンス・パラメーター』で詳しく説明します。

便宜のために、他製品のパラメーターを設定するための手順がいくつか説明されています。他製品は変更される場合があるので、これらの手順は参考用と考えてください。

チューニングのタイプ

チューニングには、アプリケーション・チューニングとパラメーター・チューニングの 2 つのタイプがあります。

アプリケーション・チューニングによって最大のチューニング効果が得られる場合もありますが、この資料では主に、個々のパフォーマンス・パラメーターと、パラメーター間の相互作用について説明します。

ホワイト・ペーパー WebSphere Application Server Development Best Practices for Performance and Scalability は、アプリケーション・チューニングを扱っています。ここでは、サーブレット、 JavaServer Pages (JSP) ファイル、JDBC (Java Database Connectivity) を含む Web アプリケーション、および Enterprise Bean コンポーネントを含むエンタープライズ・アプリケーションの両方について、開発上の推奨事項を説明しています。

パラメーター・チューニング

パラメーター・チューニングは、パフォーマンスの改善を目的として WebSphere Application Server の設定値を変更する技術です。この資料で提示している値は、一般的なガイドラインです。環境によって、最適な設定値はかなり異なる場合があります。 さらに、チューニングをしてボトルネックが 1 つ解消された後でも、それとは関連のない別のボトルネックが見つかる場合があることを覚えておいてください。その場合、両方のボトルネックが除去されるまで、パフォーマンスが改善されない可能性があります。

このセクションでは、以下の 2 種類のチューニング・パラメーターについて説明します。
影響が大きいチューニング・パラメーター
これらのパラメーターには、ハイパフォーマンス効果があります。 これらは、他のすべてのパラメーターのサブセットであり、パフォーマンスに重大な影響を与えます。 これらのパラメーターはアプリケーションに依存するため、そのアプリケーションと環境によって、適切な設定値は異なる場合があります。

次の表は、各種のハイパフォーマンス向上チューニング・パラメーターの一覧です。

アプリケーション組み立てのパフォーマンスのチェックリスト
WebSphere Application Server システム・キューの調整
値による受け渡しと参照による受け渡し (NoLocalCopies)
Solaris TCP パラメーターの調整
Java メモリーのチューニング
MaxRequestsPerChild の調整:Linux と IBM HTTP Server の組み合わせ
WebSphere データ・ソース接続プールのサイズの調整
準備済みステートメント・キャッシュのサイズの調整
Web サーバー構成の再ロード間隔
準備済みステートメント・キャッシュのサイズの調整
持続セッションに対するキャッシュの使用
障害を回避するためのチューニング・パラメーター

以下のパラメーターを使用すると、機能の問題を防ぐのに役立ちます。

ListenBackLog パラメーター: IIS を使用して Windows NT/2000 が稼働中で、クライアントの負荷が高い場合に適用される
トランスポート・タイプ: Solaris 上の INET ソケットを使用する (WebSphere Application Server の場合のデフォルト)
DB2 への接続数: デフォルトの DB2 設定値以上の接続を設定する場合
最大数より多いの数のスレッド割り振りの許可 が選択されており、割り振られたスレッドの数が多すぎるために、システムが過負荷になっている
DB2 Linux 版に TCP ソケットを使用: ローカル・データベースの場合
WebSphere データ・ソース接続プールのサイズ: エンティティー EJB でトランザクション処理するのに必要な追加の接続を処理し、デッドロックを回避するための接続が十分にあることを確認する

WebSphere Application Server のキューの調整

WebSphere Application Server には、一連の相互に関連のあるコンポーネントがあります。それらは、ユーザーのエンドツーエンド e-business アプリケーションのカスタム要件をサポートするように、調整する必要があります。これらの調整によって、システムは、安定を維持しながら最大のスループットを達成できるようになります。

キューイング・ネットワーク

WebSphere Application Server は、キューイング・ネットワークを確立します。これは、アプリケーション・サービス・プラットフォームのさまざまなコンポーネントを表す、相互接続キューのネットワークです。これらのキューには、ネットワーク、Web サーバー、Web コンテナー、EJB コンテナー、データ・ソースが含まれ、カスタム・バックエンド・システムへの接続マネージャーが含まれる場合もあります。これらのリソースのそれぞれが、そのリソースを使用するために待機している要求のキューです。

WebSphere のキューは、負荷に依存するリソースです。つまり、要求の平均サービス時間は、同時クライアントの数に依存します。

クローズ・キューとオープン・キュー

キューイング・ネットワークを構成するほとんどのキューは、クローズ・キューです。オープン・キューとは対照的に、クローズ・キューはキュー内に存在する要求の最大数に限度を設定します。

クローズ・キューによって、システム・リソースが厳重に管理できるようになります。たとえば、Web コンテナーの最大接続数を設定して、 Web コンテナー・キューのサイズを制御します。 Web コンテナー内で実行中のサーブレットが、各要求で平均 10MB のオブジェクトを作成する場合、最大接続数の値を 100 に設定すると、Web コンテナーによって消費されるメモリーは 1GB に制限されます。

クローズ・キュー内では、要求はアクティブか待ちのどちらかの状態になります。アクティブ要求は、作業中か、またはダウンストリーム・キューからの応答待ちのどちらかです。たとえば、Web サーバー内のアクティブ要求は、作業中 (静的 HTML の検索など) か、または Web コンテナー内で要求の完了待ちのどちらかです。待ち状態では、要求はアクティブになるのを待っています。 要求は、アクティブ要求の 1 つがキューから出るまで、待ち状態のままです。

WebSphere Application Server によってサポートされている Web サーバーはすべてクローズ・キューであり、WebSphere Application Server データ・ソースも同様です。 Web コンテナーは、オープン・キューまたはクローズ・キューのどちらにも構成できます。通常は、クローズ・キューにすることをお勧めします。 EJB コンテナーはオープン・キューです。プール内に使用可能なスレッドがない場合は、要求の期間に新規スレッドが作成されます。

Enterprise Bean がサーブレットによって呼び出されている場合、 Web コンテナーは EJB コンテナーへの合計同時要求数を制限します。これは、Web コンテナーにも限度があるためです。 このことは、Enterprise Bean をサーブレットの実行スレッドから呼び出している場合だけ当てはまります。 ユーザーがスレッドを作成して、EJB コンテナーに大量の要求を出すことを防ぐ手段はありません。これは、サーブレットが自身の作業スレッドを作成することがよくない理由の 1 つです。

WebSphere Application Server のキュー設定値

以下で、さまざまなキュー設定値を概説します。

設定値の決定

以下のセクションでは、WebSphere Application Server キューを構成するための方法論について概説します。リソースの移動 (たとえば、データベース・サーバーの他のマシンへの移動など)、またはより高速でメモリーもより多い CPU などの、より強力なリソースの提供によって、システムのダイナミックスは変化する場合があるので、チューニング・パラメーターも変化する場合があります。そのため、実稼動環境の特定の構成に合わせて、チューニング・パラメーターを調整してください。

WebSphere の前のキューイング

チューニングの最初の規則は、WebSphere Application Server のキューの要求数を最小化することです。 一般に、要求がネットワーク内 (Web サーバーの前) で待つことは、WebSphere Application Server 内で待つよりも良いことです。この構成では、処理準備済みの要求だけが、キューイング・ネットワーク内にあることになります。 この構成を実現するには、最もアップストリームにある (クライアントに近い) キューをやや大きく指定し、ダウンストリームのキュー (クライアントから遠い) は徐々に小さくなるように指定します。

このキューイング・ネットワーク内のキューは、作業がダウンストリームに流れるにつれて小さくなります。 Web サーバーに 200 のクライアントが到着すると、125 の要求がネットワーク内でキューに入ったままになります。これは、Web サーバーが 75 の同時クライアントを処理するように設定されているためです。 75 の要求が Web サーバーから Web コンテナーに渡されるので、 25 の要求は Web サーバー内のキューに入ったままになり、残りの 50 は Web コンテナーによって処理されます。このプロセスは、25 ユーザーが最終宛先であるデータベース・サーバーに到着するまで、データ・ソース内を進行していきます。アップストリームの各ポイントに、コンポーネントに入るのを待っている作業があるので、作業の到着を待つ必要があるコンポーネントはこのシステムにありません。要求の大部分は、WebSphere Application Server の外部のネットワーク内で待機しています。これにより、どのコンポーネントも過負荷にならないため、安定性が増します。 IBM の Network Dispatcher などのルーティング・ソフトウェアを使用すれば、待機中のユーザーを WebSphere Application Server クラスター内の他のサーバーに誘導できます。

スループット・カーブの描画

実動アプリケーションのすべてのフロー (たとえば、意味のあるコード・パスすべて) に相当するテスト・ケースまたは実動アプリケーションをそのまま使用し、稼働実験を行って、システムの能力が最大化される飽和点を見つけます。これらのテストは、アプリケーションからほとんどのボトルネックが除去された後で実行してください。これらのテストの一般的なゴールは、CPU を活用して 100% に近い使用率にすることです。

初期のベースラインとして、キューを大きくして実験を開始してください。 これにより、システム全体で最大の並行処理能力を発揮できます。たとえば、キューイング・ネットワーク (Web サーバー、 Web コンテナー、およびデータ・ソース) 内の各サーバーで、キュー・サイズを 100 として、最初の実験を開始します。

次に、同時ユーザーの負荷を増やしながら、一連の実験を開始し、スループット・カーブを作図します。たとえば、1 ユーザー、2 ユーザー、5 ユーザー、10、25、50、100、150 および 200 ユーザーで、実験を行います。 1 回ごとに、スループット (要求数 / 秒) と応答時間 (秒数 / 要求) を記録します。

基礎実験から得られるカーブは、以下に示す典型的なスループット・カーブと共通点があるはずです。

WebSphere Application Server のスループットは、システム全体に存在する同時要求の数の関数です。 セクション A は軽負荷ゾーンです。このゾーンは、同時ユーザー要求の数が増えるにつれて、スループットが要求の数と共にほとんど直線的に増えることを示しています。 これは、負荷が軽い場合、同時要求が WebSphere Application Server のシステム・キュー内ではほとんど輻輳 (ふくそう) 状態にならないことを示しています。WebSphere Application Server システム内のボトルネックによって、ある点からは、輻輳状態が徐々に増え、スループットは、最大スループット値を表す飽和点に達するまではるかに遅い速度で増えます。最も管理しやすいタイプのボトルネックは、WebSphere Application Server マシンの CPU が飽和点に達したときに発生するものです。 このボトルネックが望ましい理由は、CPU を追加または強化することによって CPU のボトルネックを改善できることです。

重負荷ゾーン、つまりセクション B では、同時クライアントの負荷は増えますが、スループットは比較的変化しません。ただし、応答時間はユーザーの負荷に比例して増えます。つまり、重負荷ゾーンでユーザーの負荷を倍にすると、応答時間も倍になります。 セクション C、バックル・ゾーンに達すると、システム・コンポーネントの 1 つが使い尽くされてしまいます。 この点から、スループットの低下が始まります。たとえば、Web サーバーでのネットワーク接続がネットワーク・アダプターの限度を超えたり、オペレーティング・システムがファイルを処理するための限度を超えたりすると、システムはバックル・ゾーンに入ります。

システム CPU の使用率が 100% 近くになって飽和点に達した場合は、次のステップに進んでください。 CPU の使用率が 100% 近くになっていない場合は、アプリケーションによってボトルネックが悪化している可能性があります。たとえば、ガーベッジ・コレクションのボトルネックを過度に起こす Java オブジェクトを、アプリケーションが作成していることがあります。

アプリケーションのボトルネックを管理する方法は 2 つあります。ボトルネックを除去するか、ボトルネックのクローンを作成することです。ボトルネックを管理する最良の方法は、それを除去することです。Java ベース・アプリケーション・プロファイラーを使用して、全体的なオブジェクト使用率を調査してください。 Performance Trace Data Visualizer(PTDV)、JProbe、Jinsight などのプロファイラーを使用できます。

キューの調整

スループットの飽和点の同時ユーザーの数は、アプリケーションの最大並行数を表します。 たとえば、アプリケーションがユーザー数 50 で WebSphere Application Server の飽和点に達した場合は、ユーザー数 48 がスループットと応答時間の最良の組み合わせになります。この値は、最大アプリケーション並行数の値と呼ばれます。 最大アプリケーション並行数は、ユーザーの WebSphere Application Server システム・キューを調整するための、基本として使用する値になります。 ユーザーの大部分がネットワーク内で待機していることが望ましいので、クライアントからダウンストリームに進むにつれて、キューのサイズを減らすことを覚えておいてください。たとえば、最大アプリケーション並行数の値が 48 の場合、システム・キューの値は、Web サーバー 75、Web コンテナー 50、データ・ソース 45 から始めます。 最適な設定値を見つけるために、上記の値を少し高くしたり、低くしたり調整して追加の実験を続けてください。

リソース・アナライザーを使用して、サーブレット・エンジンのスレッド・プールの並行アクティブ・スレッド数を測定基準として、並行ユーザー数を判別できます。

パフォーマンスの実験では、Web コンテナーのトランスポートのキープアライブの最大数が Web コンテナーのスレッドの最大数と一致するように調整した場合に、スループットが 10 〜 15% 増えました。

アクセス・パターンに関するキュー設定値の調整

通常は、わずかな要求だけが 1 つのキューを通過して、次のダウンストリームに入ります。多数の静的ページがあるサイトでは、要求の多くが Web サーバー・サイドで処理され、Web コンテナーには渡されません。このような環境では、Web サーバーのキューを Web コンテナーのキューよりもかなり大きくすることができます。 前のセクションでは、Web サーバー・キューを 75 に設定しましたが、この値は最大アプリケーション並行数に近い値ではありませんでした。 それぞれのコンポーネントの実行時間が異なる場合にも、同様な調整が必要です。

たとえば、アプリケーションの実行時間の 90% が複雑なサーブレットに費やされ、10% だけが短い時間の JDBC 照会を行う場合、任意の時点でデータベース接続を使用するサーブレットは平均 10 % なので、データベース接続キューは Web コンテナーのキューよりかなり小さく設定できます。 逆に、サーブレット実行時間の多くがデータベースへの複雑な照会に費やされている場合は、Web コンテナーとデータ・ソースの両方でキューの値を増やすことを検討してください。 CPU もメモリーも飽和状態になっていないことを確認するために、常に WebSphere Application Server とデータベース・サーバーの両方で、CPU とメモリーの使用率をモニターしてください。

キューイングと Enterprise Bean

Enterprise Bean に対するメソッド呼び出しは、メソッド呼び出しを実行しているクライアントがリモート側にある、たとえば、EJB クライアントが Enterprise Bean とは分離した Java 仮想マシン (別のアドレス・スペース) 内で稼働している場合にだけ、キューに入れられます。 これに対し、EJB クライアント (サーブレットまたは別の Enterprise Bean ) が同一の JVM にインストールされている場合、EJB メソッドは EJB クライアントと同一の実行スレッド上で稼働し、キューイングは行われません。

リモート Enterprise Bean は、RMI/IIOP プロトコルを使用して通信します。 RMI/IIOP によって開始されたメソッド呼び出しは、サーバー・サイドの ORB によって処理されます。スレッド・プールは、着信要求のキューの役割を果たします。ただし、リモート・メソッド要求が発行されて、スレッド・プール内にもう使用可能なスレッドがない場合、新しいスレッドが作成されます。 メソッド要求が完了した後で、そのスレッドは破棄されます。したがって、ORB がリモート・メソッド要求を処理するために使用された場合、そのスレッドの使用に制限がないため、EJB コンテナーはオープン・キューです。 次の図は、Enterprise Bean の 2 つのキューイング・オプションを表しています。

スレッド・プールを構成する際は、EJB クライアントの呼び出しパターンを理解することが重要です。サーブレットがリモート Enterprise Bean を呼び出す回数が少なく、各メソッド呼び出しが比較的高速の場合、ORB スレッド・プール内のスレッド数を、Web コンテナーのスレッド・プールのサイズの値よりも小さな値に設定することを検討してください。

リソース・アナライザーには、構成されるスレッドすべてが使用中である時間を判別するために使用する、最大パーセントと呼ばれるメトリックが示されます。この値が常に 2 桁の場合、ORB がボトルネックになっている可能性があり、スレッドの数は増えるはずです。

ORB スレッド・プール値を増やす必要がある度合いは、 Enterprise Bean を呼び出す同時サーブレット (つまり、クライアント) の数と、各メソッド呼び出しの存続期間の関数です。 メソッド呼び出しが長い場合、リモート・メソッド呼び出しのインターリービングが小さいので、ORB スレッド・プール・サイズを Web コンテナーのサイズと等しくすることを考えてください。サーブレットが ORB に対して短期間または高速の呼び出しだけを行う場合は、ORB スレッド・プールを小さくすることができます。 サーブレットが複数あると、同一の ORB スレッドを再利用できる可能性があります。この場合、ORB スレッド・プールを小さくでき、場合によっては Web コンテナーのスレッド・プール・サイズ設定値の半分にすることもできます。 ORB 内でのアプリケーションの実行時間が長い場合は、 Web コンテナーと ORB がより対等の関係になるように構成します。

キューイングとクラスター化

アプリケーション・サーバーのクローンを作成する機能は、高度に拡張性のある実動環境を構成するために貴重な強みになります。このことは特に、対称型マルチプロセッシング (SMP) サーバーの CPU のフル活用を妨げるボトルネックがあるアプリケーションには重要です。 クラスター化構成の WebSphere Application Server のシステム・キューを調整する場合は、サーバーをクラスターに追加すると、サーバーのダウンストリームの負荷は 2 倍になることに注意してください。

2 つの Web コンテナー・クローンが、Web サーバーとデータ・ソースの間に配置されています。Web サーバー、サーブレット・エンジン、およびデータ・ソース (データベースではない) は、すべて単一の SMP サーバー上で稼働していると想定されます。 これらの制約がある場合、キューについて次のことを考慮する必要があります。

セキュア・ソケット・レイヤーのチューニング

以下は、2 種類の セキュア・ソケット・レイヤー (SSL) のパフォーマンスです。

ハンドシェークとバルク暗号化 / 暗号化解除の概説

SSL 接続が確立されると、SSL ハンドシェークが起こります。 接続が確立した後に、SSL は読み取り / 書き取りそれぞれに対して、バルク暗号化と暗号化解除を実行します。 SSL ハンドシェークのパフォーマンス・コストは、バルク暗号化と暗号化解除よりもはるかに大きくなります。

SSL パフォーマンスの拡張方法

SSL パフォーマンスを拡張するには、個々の SSL 接続数およびハンドシェーク数を減少させる必要があります。

接続数を減少させることにより、単純な TCP 接続を通じてのセキュアでない通信と同様に、SSL 接続を通じてのセキュアな通信のパフォーマンスも向上します。個々の SSL 接続を減少させる 1 つの方法は、HTTP 1.1. をサポートするブラウザーを使用することです。ユーザーが HTTP 1.1. にアップグレードできない場合には、個々の SSL 接続を減少させることは不可能である場合があります。

2 つの WebSphere Application Server コンポーネント間の接続数 (TCP と SSL の両方) を減少させることの方がよく行われます。 Web サーバーのプラグインがアプリケーション・サーバーに対して新規接続を繰り返し再オープンしないように、アプリケーション・サーバーの HTTP トランスポートが構成されていることを確認する際に、以下のガイドラインが役に立ちます。

準備済みステートメント・キャッシュのサイズ

その他の JDBC パラメーター
準備済みステートメント・キャッシュのサイズに加えて、他の JDBC ドライバー固有のプロパティーを設定できます。たとえば、Oracle を使用する場合、行の数を増やして、以下のステートメントで結果を取得している間に取り出すことができます。
name="defaultRowPrefetch", value="25"
このタイプのカスタム・プロパティーは、データベースの「一般 (General)」タブに入力します。

DB2

DB2 には、データベース・パフォーマンスを最適化するために構成可能な、多数のパラメーターがあります。 DB2 のチューニングに関する詳細については、「DB2 UDB Administration Guide: Performance」を参照してください。
DB2 Linux 版に TCP ソケットを使用
DB2 MaxAppls
DB2 MaxAgents
DB2 buffpage
DB2 照会最適化レベル
DB2 reorgchk
DB2 MinCommit

セッション管理

セッション管理パラメーターの設定について詳しくは、インフォセンターの項目 4.4.1.1 Session programming model and environment を参照してください。

WebSphere Application Server Enterprise Extensions Message Listener

WebSphere Application Server Enterprise Extensions には、Extended Messaging Support 用のサポートがあります。このセクションには、Extended Messaging Support の一部である JMS Listener 機能に関するチューニング上の提案を記載します。

最大セッション

同じキューで listen する複数のアプリケーション・サーバー

その他の参照資料

パフォーマンス・ツールの操作手順

Windows NT/2000 パフォーマンス・モニターの開始

以下のステップに従ってください。
「スタート (Start)」メニューから、「プログラム (Programs)」> 「管理ツール (Administrative Tools)」>「パフォーマンス・モニター (Performance Monitor)」の順に選択します。