トランスポート・チャネル・サービスの調整
トランスポート・チャネル・サービスは、HTTP および JMS 要求の クライアント接続と I/O 処理を管理します。 これらの I/O サービスは Java™ で使用可能な非ブロッキング I/O (NIO) 機能を基にしています。これらのサービスは、WebSphere® Application Server 要求処理に拡張が容易な基盤を提供します。Java NIO ベースのアーキテクチャーには、パフォーマンス、スケーラビリティー、およびユーザーのユーザビリティーに関する制限があります。 したがって、真の非同期入出力の統合が実現されます。この実装により、使用可能度が大幅に高まり、I/O 処理の複雑さが緩和され、実行する必要があるパフォーマンス調整作業が削減されます。
このタスクについて
- スケーラビリティー。これにより、製品は多くの並行する要求を処理することができます。
- 非同期要求処理。Web コンテナー・スレッドにクライアント要求の多対 1 マッピングを提供します。
- リソース共有および分離。スレッド・プールを Web コンテナーとメッセージング・サービス間で共有することができます。
- 使用可能度の改善
- オートノミック調整と構成機能の取り込み
トランスポート・チェーンと関連する 1 つ以上のトランスポート・チャネルで 設定のデフォルト値を変更すると、そのチェーンのパフォーマンスを改善することができます。

手順
- TCP トランスポート・チャネルの設定を調整します。 管理コンソールで、「サーバー」>「サーバー・タイプ」>「WebSphere Application Server」>「server_name」>「ポート」をクリックします。
次に、適切なポートで「関連トランスポートの表示」をクリックします。
- プロパティーを変更するトランスポート・チェーンを選択します。
- そのチェーンに定義した TCP トランスポート・チャネルをクリックします。
- 「最大のオープン接続数」プロパティーに指定された値を減らします。 このパラメーターは、使用するサーバーで使用可能な最大接続数を制御します。 このパラメーター (最大接続数) をデフォルト値 20000 のままにすると、 Web サイトが障害状態になり停止する場合があります。 これは、製品が接続を受け入れ続け、それにより、接続数や関連した作業、バックログが増加するためです。 デフォルトを大幅に低い数値 (500 など) に変更してから、追加の調整とテストを行い、特定の Web サイトまたはアプリケーション・デプロイメント向けに指定すべき最適な値を決定する必要があります。
- データがクライアントに書き込まれることなくクライアント接続がクローズされる場合は、
「非活動タイムアウト」パラメーターに指定された値を変更します。 このパラメーターは、サーバーで使用可能な最大接続数を制御します。
TCP トランスポート・チャネルは、新規接続を受信すると、TCP トランスポート・チャネルの上の
プロトコル固有のチャネルに接続をディスパッチするのに十分なデータを受信するまで待ちます。
「非活動タイムアウト」パラメーターに指定した時間内に
十分なデータを受信しなかった場合、TCP トランスポート・チャネルは接続をクローズします。
このパラメーターのデフォルト値は 60 秒です。ほとんどのアプリケーションでは、この値で十分に対応することができます。ワークロードが多くの接続を必要とし、これらの接続が 60 秒以内にすべて処理されない場合は、 このパラメーターに指定した値を増やしてください。
特定の HTTP ポートにスレッド・プールを割り当てます。 各 TCP トランスポート・チャネルは、特定のスレッド・プールに割り当てられます。 スレッド・プールは、1 つ以上の TCP トランスポート・チャネルとその他のコンポーネントの間で共有することができます。 TCP トランスポート・チャネルのデフォルト設定では、 すべての HTTP-based ベースのトラフィックが Web コンテナー・スレッド・プールに割り当てられ、 その他すべてのトラフィックは Default のスレッド・プールに割り当てられています。 「スレッド・プール (Thread pool)」メニュー・リストを使用して、各 TCP トランスポート・チャネルに特定のスレッド・プールを割り当てます。このパラメーターのデフォルト設定では、すべての HTTP-based ベースの トラフィックが Web コンテナー・スレッド・プールに割り当てられ、 その他すべてのトラフィックは Default のスレッド・プールに割り当てられています。 スレッド・プール・コレクションの情報に、追加スレッド・プールの作成方法が説明されています。
スレッド・プールのサイズを調整します。 デフォルトでは、スレッド・プールのスレッド数は、最小で 10、最大で 50 となっています。これらの値を調整するには、「スレッド・プール (Thread pools)」>「threadpool_name」をクリックし、そのスレッド・プールの「最小サイズ」および「最大サイズ」パラメーターに指定された値を調整します。
通常のアプリケーションは、プロセッサーごとに 10 より多いスレッドを必要としません。 ただし、非常に遅いバックエンド要求など、一部がオフ・サーバー状態となり、そのバックエンド要求が 完了するまでサーバー・スレッドが待機するような場合は例外です。 このような場合、プロセッサー使用率は低く、ワークロードを増やしてもプロセッサーのスループットは増加しません。 スレッド・メモリー・ダンプでは、ほとんどすべてのスレッドが、バックエンド・リソースへコールアウトしていることが示されます。この状態で、バックエンドが正しく調整されている場合は、スループットが改善され、スレッド・メモリー・ダンプで、バックエンド呼び出し以外のランタイムの領域内にスレッドが表示されるまで、プールの最小スレッド数を増やすことを試してください。
バックエンドが長時間ハングする傾向にない限り、「必要に応じて拡張」パラメーターの設定を変更します。この状態は、すべてのランタイム・スレッドが、ハングしているバックエンドに関係のない 他の作業を処理する代わりに、バックエンドを待機してブロックされていることを示している場合があります。
- HTTP トランスポート・チャネルの設定を調整します。 管理コンソールで、「サーバー」>「サーバー・タイプ」>「WebSphere Application Server」>「server_name」>「ポート」をクリックします。
次に、適切なポートで「関連トランスポートの表示」をクリックします。
- プロパティーを変更するトランスポート・チェーンを選択します。
- そのチェーンに定義した HTTP トランスポート・チャネルをクリックします。
- HTTP キープアライブを調整します。
「パーシスタント (キープアライブ) 接続の使用」の設定は、要求間で接続をオープンのままにするかどうかを制御します。接続をオープンのままにすると、ワークロードのクライアントが複数の要求を送信する場合に、 ソケットのセットアップと取り壊しの手間を省くことができます。 デフォルト値は true で、通常はこれが最適な設定値です。
クライアントがかなり長い時間をかけて単一の要求のみを送信する場合は、HTTP トランスポート・チャネルを使用して後から接続をクローズするようタイムアウトをセットアップするよりも、このオプションを使用不可にして、すぐに接続をクローズすることをお勧めします。
- 「最大のパーシスタント要求数」パラメーターに指定された値を変更し、
接続のクローズ前に接続を介して流すことができる要求数を増やします。
「Use persistent connections」オプションを使用可能にすると、「最大のパーシスタント要求数」パラメーターは、接続のクローズ前に接続を介して流すことができる要求数を制御します。デフォルト値は 100 です。この値は、ほとんどのクライアント (すべてでない場合) が同じセッション中に複数の要求を行うときに、 クライアントの接続が常にオープンになるような値に設定する必要があります。 このパラメーターを適切に設定することによって、ソケットの不必要なセットアップと取り壊しを 除去することができます。
クライアントが決してクローズされないテスト・シナリオでは、 値 -1 を指定すると、 単一の接続を介した要求の数を制限する処理が使用不可になります。 パーシスタント・タイムアウトは、一部のアイドル状態ソケットをシャットダウンして、サーバーでのオープン・ソケットがなくならないようにします。
- 「パーシスタント・タイムアウト」パラメーターに指定された値を変更して、 接続が非活動によってクローズされるまでオープンされている時間を長くします。 「パーシスタント・タイムアウト」パラメーターは、 接続に活動がないためクローズされるまで、その接続がオープンされている時間の長さを制御します。 デフォルト値は 30 秒です。このパラメーターは、ほとんどのクライアントが要求を行う際に 使用可能な接続を取得できるように、十分なオープン接続を保持する値に設定します。
- クライアントがデータを送信するのに 60 秒より長くかかったため、要求を完了する際に問題が起きた場合は、「読み取りタイムアウト」パラメーターに指定された値を変更します。 一部のクライアントは、要求の一部としてデータを送信する間、60 秒より長く一時停止します。要求を完了できるようにするには、このパラメーターに指定された値を、クライアントがデータ送信を完了するのに十分な時間 (秒) に変更します。この値を変更する際には、サーバーに対してクライアントが未完了のデータを送信し、 そのためにリソース (ソケット) が長時間使用されることのないように注意してください。
- 一部のクライアントで、そのクライアントに書き込まれるデータの受信に 60 秒より長くかかる場合は、「書き込みタイムアウト」パラメーターに指定された値を変更してください。 一部のクライアントは遅いため、送信されるデータを受信するのに 60 秒より長い時間が必要です。クライアントがすべてのデータを確実に取得できるようにするには、このパラメーターの値を、すべてのデータを受信するのに十分な時間 (秒) に変更します。この値を変更する際に、サーバーを悪意のあるクライアントから保護することに注意してください。
- Web コンテナー・トランスポート・チャネル設定を調整します。 管理コンソールで、「サーバー」>「サーバー・タイプ」>「WebSphere Application Server」>「server_name」>「ポート」をクリックします。
次に、適切なポートで「関連トランスポートの表示」をクリックします。
- プロパティーを変更する必要があるトランスポート・チェーンを選択します。
- そのチェーンに定義した Web コンテナー・トランスポート・チャネルをクリックします。
- 複数の書き込みがクライアントに対する応答を処理するために必要な場合、
「書き込みバッファー・サイズ」パラメーターに指定された値を、クライアントに適した値に変更します。 「書き込みバッファー・サイズ」パラメーターは、
処理のために要求を送信する前に、Web コンテナーがバッファーに入れるスレッドごとのデータの最大量を制御します。
デフォルト値は 32768 バイトで、この値はほとんどのアプリケーションに十分な大きさです。
応答のサイズが書き込みバッファーのサイズより大きい場合、応答はチャンク化され、
複数の TCP 書き込みに書き込まれます。
このパラメーターに指定された値を変更する必要がある場合は、新規の値がほとんどの要求を単一の書き込みに書き出されることを確認します。このパラメーターに適切な値を判別するには、戻されたページ・サイズを見て、HTTP ヘッダーのために数バイトを追加します。
- バウンド・バッファーの設定を調整します。
バウンド・バッファーのデフォルト・パラメーターはほとんどの環境に対して最適ですが、特定の状況および一部のオペレーティング・システムでは、デフォルト値を変更してパフォーマンスを強化する必要があります。 バウンド・バッファーのパラメーターを変更すると、パフォーマンスが低下することがあります。 したがって、バウンド・バッファーのパラメーターを変更する前に、Web コンテナーや ORB スレッド・プールなど、その他の関連領域を調整する必要があります。
バウンド・バッファーのパラメーターを変更するには、次のようにします。
- 管理コンソールで、「サーバー」 >「サーバー・タイプ」>「WebSphere Application Server」> server_name とクリックします。
- 「サーバー・インフラストラクチャー」セクションで、「Java およびプロセス管理」>「プロセス定義」>「Java 仮想マシン」をクリックします。
- 「カスタム・プロパティー」をクリックします。
- 「名前」フィールドに以下のカスタム・プロパティーの 1 つを入力し、「値」フィールドに適切な値を入力してから、「適用」をクリックしてカスタム・プロパティーおよびその設定を保存します。
- com.ibm.ws.util.BoundedBuffer.spins_take=value
Web コンテナー・スレッドを中断してエンキューするまでに、このスレッドを使用してバッファーから要求を検索できる回数を指定します。このパラメーターを使用すると、検索試行に失敗した場合のコストと、 スレッドを中断してから PUT 操作に応答して再度有効にするコストをトレードオフすることができます。
情報 値 デフォルト: オペレーティング・システムで使用可能なプロセッサー数マイナス 1。 推奨: 任意の負でない整数値を使用します。実際には、2 から 8 までの整数を使用すると、最適なパフォーマンス結果が得られます。 使用法: com.ibm.ws.util.BoundedBuffer.spins_take=6。スレッドを中断するまでの試行回数は、6 回です。 - com.ibm.ws.util.BoundedBuffer.yield_take=true または false。
バッファーから要求を取得するための作業を所定の回数だけ試行した後、プロセッサーをその他のスレッドに譲るよう指定します。 通常は、試行回数を少なくすることをお勧めします。
情報 値 デフォルト: false 推奨: 各プラットフォームごとに、効果は異なります。 使用法: com.ibm.ws.util.BoundedBuffer.spins_take=ブール値 - com.ibm.ws.util.BoundedBuffer.spins_put=値
InboundReader スレッドを中断してエンキューするまでに、このスレッドが要求をバッファーに格納する回数を指定します。 この値を使用すると、要求をバッファーに格納するための (おそらく失敗する) 試行を繰り返す場合のコストと、 スレッドを中断してから取得操作に応答して再度有効にする場合のコストをトレードオフすることができます。
情報 値 デフォルト: com.ibm.ws.util.BoundedBuffer.spins_take の値を 4 で除算した値。 推奨: 任意の負でない整数値を使用します。実際は、2 から 8 の整数を使用すると、パフォーマンスが最適化されます。 使用法: com.ibm.ws.util.BoundedBuffer.spins_put=6。スレッドを中断するまでの試行回数は、6 回です。 - com.ibm.ws.util.BoundedBuffer.yield_put=true または false。
バッファーに要求を格納するための作業を所定の回数だけ試行した後、プロセッサーをその他のスレッドに譲るよう指定します。 通常は、試行回数を少なくすることをお勧めします。
情報 値 デフォルト: false 推奨: 各プラットフォームごとに、効果は異なります。 使用法: com.ibm.ws.util.BoundedBuffer.yield_put=ブール値 - com.ibm.ws.util.BoundedBuffer.wait=ミリ秒数
バッファーが完全にいっぱいの場合、またはバッファーが空の場合に、要求を不必要に遅延する最大期間をミリ秒単位で指定します。
情報 値 デフォルト: 10000 ミリ秒 推奨: 通常は、値に 10000 ミリ秒を指定すると適切に機能します。まれに、バッファーがいっぱい、または空の場合に、より小さな値を指定すると、要求が適切なタイミングで確実に処理されますが、通常はパフォーマンスが低下します。 使用法: com.ibm.ws.util.BoundedBuffer.wait=8000。要求には最大 8000 ミリ秒の不必要な遅延が発生することがあります。
- com.ibm.ws.util.BoundedBuffer.spins_take=value
- 「適用」をクリックしてから、「保存」をクリックして、これらの変更を保存します。


http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tprf_tunechain
ファイル名:tprf_tunechain.html