Oracle® Fusion Middleware Oracle Reports ServicesレポートWeb公開ガイド 11g リリース1(11.1.1) B61375-01 |
|
戻る |
次へ |
この項では、Reports Serverのパフォーマンスと安定性の向上に役立つヒントを示します。このヒントの対象となる処理は次のとおりです。
様々なクライアントからのレポート・リクエストの受入れ
ジョブの実行スケジューリング
Oracle Reportsのエンジンの管理
キャッシュの管理
様々な宛先の管理
セキュリティのチェック
ジョブ・ストア(永続ジョブ・データ)の管理
次に示すように、負荷の大きな操作では、Reports Serverの様々なパラメータを最適な値にチューニングすることが重要です。
サーバー構成ファイルのengine
要素のinitEngine
、maxEngine
、minEngine
の各属性の最適値を決定します。
<engine id="rwEng" class="oracle.reports.engine.EngineImpl" initEngine="1" maxEngine="2" minEngine="1" engLife="50" maxIdle="30" callbackTimeOut="90000">
engine
要素の詳細は、第8.2.1.9項「engine」を参照してください。maxEngine
の値によって、レポートの実行を求めるユーザー・リクエストに応じる準備ができているプロセスの最大数が設定されます。設定した値が低すぎると、キューがユーザー・リクエストでいっぱいになり、マシンの使用可能容量が十分に利用されなくなります。設定した値が高すぎると、同じホストで実行する必要のある他のアクティビティによりReports Serverへの割当てマシン容量を超える容量が奪われ、その結果オペレーティング・システムでクラッシュが発生する可能性があります。
エンジン数の簡単な計算例として、実行に平均10秒かかるレポートのセットがあるとします。システムへの入力でリクエストされるレポート数は、毎分6〜12件です。この例では、計算は次のようになります。
initEngine
= (レポートの実行にかかる平均時間) * (レポート・リクエストの最小入力率) = (10/60) * 6 = 1
maxEngine
= (レポートの実行にかかる平均時間) * (レポート・リクエストの最大入力率) = (10/60) * 12 = 2
minEngine
= 負荷の種類に応じ、0からinitEngine
の範囲
これらの計算結果を使用して、サーバー構成ファイルにminEngine=1
およびmaxEngine=2
を指定できます。これにより、ジョブが受け取られたときは常に、アイドル・エンジンが即座に使用されます。
スケーラビリティとパフォーマンスのテストでは、2〜4のエンジン数にCPUの数を乗じるというガイドラインを使用してmaxEngine
が構成されている場合、スループットの最大値が表示されます。マシンにデュアル・プロセッサが搭載されている場合はmaxEngine=8の最大値を、マシンにクワッド・プロセッサが搭載されている場合はmaxEngine=16の最大値を設定します。
URLエンジンを使用していない場合は、サーバー構成ファイルでengine
要素にID="rwURLEng"
というコメントを付けます。
cache
要素のcacheSize
プロパティ、queue
要素のmaxQueueSize
属性およびEXPIRATION
キーワードの最適値を決定します。
詳細は、第8.2.1.3項「cache」、第 8.2.1.21項「queue」および第A.6.6項「EXPIRATION」を参照してください。cacheSize
、maxQueueSize
およびEXPIRATION
の値は互いに関連しており、Reports Serverが効率的に動作するように慎重に設定する必要があります。
たとえば、EXPIRATION=480
と設定してレポートを実行する場合、これはジョブをキャッシュに4時間(480分)入れておくという意味になります。この場合、4時間ですべてのジョブに対応できるように、maxQueueSize
を設定する必要があります。ここで、1分間に10件のジョブが処理されるとすると、計算は次のようになります。
maxQueueSize
= (レポート・リクエストの入力率) * (有効期間) = 480 * 10 = 4800
cacheSize
も、4800件のジョブに対応できるように、十分高い値に設定する必要があります。各レポートの平均サイズが100Kの場合、計算は次のようになります。
cacheSize
= (maxQueueSize
) * (レポートの平均サイズ) = 4800*100/1000 = 480MB
cache
要素のmaxCacheFileNumber
プロパティの値を計算する場合も、同様のロジックを使用できます。
注意: maxQueueSize の最小値には、1000(デフォルト)をお薦めします。maxQueueSize またはcacheSize の値がデフォルト値を大きく下回ると、Reports Serverのパフォーマンスが低下する場合があります。 |
サーバー構成ファイルのengine
要素のengineResponseTimeOut
属性を、次のように設定します。
<engine id="rwEng" class="oracle.reports.engine.EngineImpl" initEngine="1" maxEngine="2" minEngine="1" engLife="50" maxIdle="30" callbackTimeOut="90000" engineResponseTimeOut="5">
engine
要素の詳細は、第8.2.1.9項「engine」を参照してください。
エンジンが断続的にハングする場合は、engineResponseTimeOut
を設定します。この属性によって、Reports Serverではハングするエンジンを検出してクリーンアップが実行できます。Reports Serverでハングが早く検出されるほど、システムの安定性が増します。このため、engineResponseTimeOut
は、次のように慎重に設定する必要があります。
engineResponseTimeOut
の値を、実在するレポートのセットのうち1つのレポートの実行にかかる最大時間に設定してください。たとえば、実行に10秒から5分かかるレポートのセットがある場合、engineResponseTimeOut="5"
(5分)と設定します。
注意: engineResponseTimeOut に異なる値を指定して、常に別のサーバーでバッチ・レポートを実行することをお薦めします。対話型レポートとバッチ・レポートは、同じサーバーに送信しないでください。 |
サーバー構成ファイルのconnection
要素のmaxConnect
属性を、次のように設定します。
<connection maxConnect="180" idleTimeOut="15">
connection
要素の詳細は、第8.2.1.5項「connection」を参照してください。
maxConnect
属性によって、Reports Serverが任意の時点で同時に処理できるリクエストの合計数が制御されます。maxConnect
の主な目的は、プログラムやプロセスが暴走したりDoS攻撃を受けることからReports Serverを保護することです。これは常に、同時に処理するクライアントの最大数より大きな値に設定する必要があります。
たとえば、150のクライアントを同時に処理する場合、maxConnect
は150より大きな値に設定します。次のように、10〜20%の安全係数を使用します。
maxConnect
= 150 + 150 * 0.2 = 180
HTTPタイムアウト値は、システムで実行時間が最長のレポートの実行に必要な時間に基づいて設定してください。実行時間が最長のレポートの実行に20分かかる場合は、HTTPタイムアウトを20分より長く設定します。そうしないと、サーバーでレポートの実行が終了しないうちにHTTPタイムアウト・エラーが表示されます。このパラメータは、ORACLE_INSTANCE/config/OHS/ohs1/httpd.conf
ファイルで設定できます。
また、Oracle Enterprise Managerを使用してタイムアウト値を設定する方法もあります。