WebSphere Application Server では、TCP/IP ソケット通信メカニズムを広く使用します。 TCP/IP ソケット接続では、送受信バッファー・サイズによって受信ウィンドウが定義されます。 受信ウィンドウは、送信が可能で、送信が中断されるまで受信が禁止されるデータ・サイズを指定します。 送信データ量が大きすぎると、バッファーがオーバーランし、転送は中断されます。 データ転送の中断を制御する仕組みは、フロー制御といいます。 TCP/IP バッファーの受信ウィンドウ・サイズが小さすぎる場合は、受信ウィンドウ・バッファーが頻繁にオーバーランし、受信バッファーが空になるまでフロー制御メカニズムはデータ転送を停止します。
フロー制御は CPU 時間を大量に消費するため、データ転送が中断した結果、追加のネットワーク遅延が発生することがあります。
バッファー・サイズを大きくして、通常の運用状態でのフロー制御を回避することをお勧めします。
バッファー・サイズを大きくすると、フロー制御の発生確率が低下し、CPU 利用率が高まります。
ただし、バッファー・サイズが大きいと、場合によってはパフォーマンスが低下することがあります。
TCP/IP バッファーが大きすぎて、アプリケーションがデータを十分な速度で処理できない場合は、ページングが増加することがあります。
重要なのは、バッファーに累積されるデータ量がシステムの処理能力を超えない範囲で、フロー制御を回避できる十分大きな値を指定することです。
デフォルトのバッファー・サイズは 8 KB です。
最大サイズは 8 MB (8096 KB) です。最適なバッファー・サイズはスイッチやシステムのタイプ、肯定応答タイミング、エラー率やネットワーク・トポロジー、メモリー・サイズ、およびデータ転送サイズなど、複数のネットワーク環境因子によって決まります。
データ転送サイズが極端に大きい場合は、バッファー・サイズを最大値まで設定して、スループットを高め、フロー制御の発生頻度を低下させ、CPU コストを削減することができます。
Web サーバーと WebSphere Application Server 間のソケット接続のバッファー・サイズは、64 KB に設定されています。通常は、この値で十分です。
アプリケーションで IBM Developer Kit for
Java(TM) JDBC Driver または IBM Toolbox for Java JDBC Driver を使用して、リモート・データベースにアクセスする場合は、フロー制御が問題となることがあります。
データ転送サイズが大きいと、フロー制御が CPU 時間を大量に消費することがあります。
IBM Toolbox for Java JDBC Driver を使用している場合は、カスタム・プロパティーを使用して、各データ・ソースのバッファー・サイズを構成することができます。
大きなバッファー・サイズ (1 MB など) を指定することをお勧めします。
システム全体に関する設定の一部は、ソケットの 8 KB のデフォルト・バッファー・サイズをオーバーライドします。
WebSphere Commerce Suite など一部のアプリケーションでは、バッファー・サイズに 180 KB を指定すると、フロー制御回数が削減され、通常はページングに悪影響が及びません。
最適値は特定のシステム特性によって決まります。
ご使用のシステムに最適なバッファー・サイズを決定する前に、値をいくつか試す必要があります。
システム全体の値を変更するには、以下のステップを実行します。
TCP/IP が原因で、リモート・メソッドが非常に遅くなることがあります。
TCP/IP を調整するために、以下のヒントに従ってください。
最適なバッファー・サイズが決まるまで、この処理を繰り返します。
TCP/IP バッファー・サイズが変更されます。最適なバッファー・サイズが決まるまで、この処理を繰り返します。
TCP/IP パフォーマンスについて詳しくは、「Performance
Capabilities Reference」の第 5 章を参照してください。「Performance Capabilities
Reference」の各エディションへのリンクは、『Performance Management Resource Library』に示されています。