ヘッダーをスキップ
Oracle® Fusion Middleware Oracle WebLogic Serverパフォーマンスおよびチューニング
12c リリース1 (12.1.1)
B65905-02
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストヘ移動
製品
目次へ移動
目次

前
 
次
 

19 Webサービスのチューニング

この章では、WebLogic Webサービス・アプリケーションとアプリケーション・リソースの設計、開発、およびデプロイにおけるベスト・プラクティスを紹介します。

Webサービスのベスト・プラクティス

設計およびアーキテクチャにおける決定は、実行時のパフォーマンスやWebサービス・アプリケーションのスケーラビリティに大きく影響します。ここでは、最高のパフォーマンスを得るために重要な推奨事項を紹介します。

Webサービスの信頼性のあるメッセージング・エージェントのチューニング

Webサービスの信頼性のあるメッセージングでは、ローカル・サーバーのインスタンスからリモート宛先への高パフォーマンス・メッセージ転送のためにストア・アンド・フォワードの高度な機能が用意されています。『Oracle WebLogic Serverストア・アンド・フォワードの構成と管理』のストア・アンド・フォワード・サービスに関する項を参照してください。次の項では、ストア・アンド・フォワード(SAF)アプリケーションでベストなパフォーマンスを得る方法について説明します。

Webサービスのパフォーマンス改善のための負荷の大きいシステムのチューニング

非同期のリクエストとレスポンス、信頼性のあるメッセージング、バッファリングなどの機能はすべて、最小のシステム・リソースを使用して少ないクライアント数(10未満)に対応するように、あらかじめチューニングされています。多数のクライアントや大量のメッセージを処理する予定である場合は、次の項に記載されているように、負荷の増大に対応できるようチューニング・パラメータを調整してください。

ワーク・マネージャのスレッド・プールの最小サイズ制約の設定

ワーク・マネージャを定義して、最低でもサービスへの同時リクエストまたはレスポンスの想定数と同じ値にスレッド・プール最小サイズ制約(min-threads-constraint)を設定します。

たとえば、Webサービス・クライアントが高速で連続して20個のリクエストを発行する場合、このクライアントをホストするアプリケーションの推奨されるスレッド・プール最小サイズ制約値は20です。構成されている制約値が小さすぎる場合、受信された処理で空き処理スレッドを待機するため、パフォーマンスが大幅に低下します。

スレッド・プールの最小サイズ制約の詳細は、『Oracle WebLogic Serverサーバー環境の構成』の制約に関する項を参照してください。

バッファリング・セッションの設定

信頼性のあるメッセージングやバッファリングの機能ではJMSキュー・セッションを使用してメッセージを信頼性/バッファ・キューに送信します。デフォルトでは、WebLogic Serverはバッファリングに10個のセッションを割り当てるので、10個のクライアントが同時に信頼性/バッファ・キューにメッセージを入れることができます。

非同期のリクエストとレスポンスの場合、通信のやり取りのリクエスト部分とレスポンス部分は別々に2つのクライアントとしてカウントされます。この場合、セッションのデフォルト・プールは非同期のリクエストとレスポンスのクライアントに同時に5つまで対応できます。アプリケーションで予期される同時クライアント数に対応するには、次のパラメータを予期されるクライアント・スレッド数の2倍に設定します。

-Dweblogic.wsee.buffer.QueueSessionPoolSize=size

非同期リソースの解放

非同期のリクエストとレスポンスの機能を使用する場合、WebLogic Serverは非同期レスポンスがクライアントに返されるまで、そのリクエストに関する情報を永続的に格納します。これらのリソースは、「ストア・クリーナ」と呼ばれるバックグラウンドのスレッドによって解放されるまで、永続ストアに保持されます。

これらのリソースはより早く解放できる場合もあります。ストア・クリーナを頻繁に実行すれば、永続ストアのサイズを削減して、クリーニングに要する時間を最小限に抑えることができます。

デフォルトでは、ストア・クリーナは2分(120000 ms)ごとに実行されます。次のJavaシステム・プロパティを使用して、ストア・クリーナの間隔を1分(60000 ms)に設定することをお薦めします。

-Dweblogic.wsee.StateCleanInterval=60000