Oracle RTDには、インライン・サービスの動作を監視する堅牢なパフォーマンス監視システムが含まれています。パフォーマンス監視パラメータを設定すると、一部の共通カウンタのスナップショット・ビューをJConsoleで監視できます。パフォーマンス監視を有効にすると、時系列のビューを表示できます。有効にすると、カンマ区切り(CSV)ファイルが生成され、これを使用して時間の経過に伴う動作を監視できます。
注意: このファイルのサイズは大きくなりすぎるため、アクティブなトラブルシューティングの場合以外は有効にしないでください。 |
この章の内容は次のとおりです。
パフォーマンス監視パラメータは、「SDManagementCluster」→「Members」→「Properties」→「PerformanceMonitoring」MBeanを使用して設定します。このMBeanには、JConsoleを使用してアクセスできます。詳細は、第15章「Oracle Real-Time Decisionsの管理」を参照してください。
表14-1では、パフォーマンスの監視を統制するプロパティについて説明しています。
表14-1 パフォーマンス監視プロパティ
プロパティ名 | 説明 |
---|---|
DSPerfCounterEnabled |
DSパフォーマンス・カウンタの書込みを有効にします。ただし、ファイルのサイズが大きくなりすぎるため、このプロパティを有効にしたままにはしないでください。 |
DSPerfCounterAppend |
trueの場合、パフォーマンス・データが既存のファイル(存在する場合)に付加されます。falseの場合、サーバーの再起動時に既存のファイルが上書きされます。 |
DSPerfCounterLogFile |
DSパフォーマンス・カウントが定期的に付加されるタブ区切りCSVファイル。MS Excelが利用可能な場合、インストールの |
DSPerfCounterLogInterval |
DSパフォーマンス・カウントの更新間隔(ミリ秒)。 |
一部のパフォーマンス・カウンタのスナップショットは、「SDManagementCluster」→「Members」→「Decision Service」MBeanで表示できます。値をリフレッシュする場合は、[F5]キーを押します。
この表示を使用する場合、パフォーマンス監視を有効にしておく必要はありません。
この項では、パフォーマンス・カウンタを含むCSVファイルのフィールドについて説明します。
表14-2 パフォーマンス・カウンタを含むCSVファイルのフィールド
フィールド名 | 説明 |
---|---|
Date/Time |
カウンタの現在の行がファイルに付加された時刻。ミリ秒単位の精度で、サーバーのログ・ファイル内のメッセージとの関係付けを容易にします。 |
Max Allowable Running Requests |
同時に実行できるインライン・サービス・リクエストの最大数。 値は、構成設定から導かれます。また、オペレーティング・システムのスレッド・スケジューリングのオーバーヘッドを最小化することで、ビジー状態のシステムで最大のスループットを実現するように選択する必要があります。 この値は手動で設定できます。その場合、クラスタ全体の構成プロパティ「SDManagementCluster」→「Properties」→「Misc」→「IntegrationPointMaxConcurrentJobs」、またはサーバー固有のプロパティ「SDManagementCluster」→「Members」→「Properties」→「Misc」→「IntegrationPointMaxConcurrentJobs」で、ゼロ以外の値を設定します。 プロパティをゼロに設定すると優先値が選択されますが、その場合、値は次の式に従って計算されます。 NumCPUs * Math.ceil(1/(1-DSRequestIOFactor)) + 5 この式で使用されている用語は、次のとおりです。
|
Peak Requests Running |
サーバーの起動後に同時に実行されていたリクエストの最大数。 |
Max Requests Running |
現在のロギング期間中に同時に実行されていたリクエストの最大数。 |
Requests Running |
現在実行されているインライン・サービス・リクエストの数。この値は常に、「Max Allowable Running Requests」の値以下になります。 |
Request Queue Capacity |
このサーバーで実行されるまで同時に待機できるリクエストの構成済の最大数。これは、クラスタ全体のプロパティ「SDManagement-Cluster」→「Properties」→「Misc」→「IntegrationPointQueueSize」、またはサーバー固有のプロパティ「SDManagement-Cluster」→「Members」→「Properties」→「Misc」→「IntegrationPointQueueSize」の値です。 リクエストが到着したときにリクエスト・キューがいっぱいになっていると、リクエストは拒否され、サーバーに「Server Too Busy」というエラーが記録されます。 このプロパティは、Webサーバーでサポートされている同時HTTPリクエスト(スレッド)の数よりも若干少ない値に設定する必要があります。そうしないと、リクエストがWebサーバーによって最初に拒否されるため、リクエスト・キューがいっぱいになりません。 |
Peak Queue Length |
サーバーの起動後に、このサーバーで実行されるまで同時に待機していたインライン・サービス・リクエストの最大数。これは常に、「Request Queue Capacity」以下になります。 |
Max Queue Length |
現在のロギング期間中に、このサーバーで実行されるまで同時に待機していたインライン・サービス・リクエストの最大数。これは常に、「Request Queue Capacity」以下になります。 |
Requests Waiting (Queue Length) |
実行されるまで待機中のインライン・サービス・リクエストの数。 |
Requests When Queue Full, Total |
サーバーのリクエスト・キューがいっぱいになっていた間に到着したリクエストの合計数。これらの各リクエストは拒否され、「Server Too Busy」というエラーが発生しました。 |
Requests Queued, Total |
他のリクエストの実行が終了するまで、実行を待つ必要のあったインライン・サービス・リクエストの合計数。 すべてのリクエストがキューに入れられている場合、システムは相当ビジーな状態です。 |
Requests Seen, Total |
このサーバーに対するインライン・サービス・リクエストの合計数。 |
Requests In System |
このサーバーによって処理されているインライン・サービス・リクエストの現在数。この数には、実行されるまで待機しているリクエストと、すでに実行されているリクエストが含まれます。 |
Timed Out Requests, Total |
クラスタ全体のプロパティ「SDManagementCluster」→「Properties」→「Misc」→「IntegrationPointGuaranteedRequestTimeout」で指定されている、保証されるサービス・レベルのタイムアウトまでに実行を終了できなかったリクエストの合計数。 このカウントには、サーバーの起動後にタイムアウトしたリクエストがすべて含まれます。 この数が増えてもキューに入れられたリクエストの数が増えない場合、リクエストを処理しているインライン・サービスのロジックが、たとえアイドル状態のシステムであっても、レスポンス時間の保証を満足できないほど遅いことを示します。1つ以上の統合点リクエストを最適化するか、またはレスポンス時間の保証を増やす必要があります。 |
Timed Out Requests |
保証されるサービス・レベルまでに実行を終了できなかったリクエストの数。 |
Timed Out While Running, Total |
サーバーの起動後、実行は開始したが、レスポンス時間の保証の範囲内で終了しなかったことが認められるリクエストの合計数。 クライアントでは最近のレスポンスが無視されるため、これらのリクエストで消費される処理能力の大部分は無駄になります。システムが相当ビジーな状態の場合には、実行待機状態にあるリクエストがタイムアウトして、リクエストに対するリソースが無駄にならずにすみます。 |
Timed Out While Running |
現在のロギング期間の開始時に、実行は開始したが、レスポンス時間の保証の範囲内で終了しなかったことが認められるリクエストの数。 クライアントでは最近のレスポンスが無視されるため、これらのリクエストで消費される処理能力の大部分は無駄になります。システムが相当ビジーな状態の場合には、実行待機状態にあるリクエストがタイムアウトして、リクエストに対するリソースが無駄にならずにすみます。 |
Timed Out Requests Still Running |
実行を開始し、タイムアウトしても、引き続き実行されているリクエストの数。値がゼロ以外の場合は、1つ以上の統合点にプログラミング上の問題がある可能性があります。 |
Request Run Time, Average (ms) |
リクエストが実行された現在のロギング期間の平均時間(ミリ秒)。待機時間があれば除外されます。 |
Request Run Time, Max (ms) |
現在のロギング期間中に、単一のリクエストが実行された最大時間(ミリ秒)。待機時間があれば除外されます。 |
Run Times < [0.1 GRT] |
現在のロギング期間中に実行が終了し、その実行時間が、構成済の保証されたレスポンス時間の10%未満のリクエストの数。 同じように書式設定された列が9つあり、保証済のレスポンス時間の0.10倍、0.25倍、0.50倍、0.75倍、1.00倍、1.25倍、1.50倍および2.0倍に実行時間が区分されています。 |
Run Times < N and >= M |
現在のロギング期間中に実行が終了し、その実行時間がNミリ秒未満かつMミリ秒以上のリクエストの数。 |
Run Times >= [2.0 GRT] |
現在のロギング期間中に実行が終了し、その実行時間が、構成済の保証されたレスポンス時間の2倍以上のリクエストの数。 |
Request Wait Time, Average (ms) |
実行またはタイムアウトするまでにリクエストがリクエスト・キューで待機した平均時間(ミリ秒)。 |
Request Wait Time, Max (ms) |
現在のロギング期間中に、単一のリクエストがリクエスト・キューで待機した最大時間(ミリ秒)。 現在のロギング期間中に、実行を終了したか、または実行前にタイムアウトしたリクエストのみが含まれます。 |
Wait Times < [0.1 GRT] |
現在のロギング期間中に実行が終了し、実行までリクエスト・キューに置かれていたが、その待機時間が、構成済の保証されたレスポンス時間の10%未満のリクエストの数。 同じように書式設定された列が9つあり、保証済のレスポンス時間の0.10倍、0.25倍、0.50倍、0.75倍、1.00倍、1.25倍、1.50倍および2.0倍に待機時間が区分されています。 |
Wait Times < N and >= M |
現在のロギング期間中に実行が終了し、実行までにリクエスト・キューで待機した時間がNミリ秒未満かつMミリ秒以上のリクエストの数。 |
Wait Times >= [2.0 GRT] |
現在のロギング期間中に実行が終了し、タイムアウトするまでの待機時間が、構成済の保証されたレスポンス時間の2倍以上のリクエストの数。 |
Sessions, Current |
このサーバーでまだオープンしているDecision Serverのセッション数。 |
Sessions, Total |
このサーバーによって作成されたDecision Serverのセッションの合計数。 |
Stale Sessions Closed Asynchronously |
リクエストのスレッドではなく、カーネル・ジョブによってクローズされたDecision Serverのセッションの合計数。 通常の場合、これは重要ではありません。ビジー状態のシステムでは、失効したセッションの大半はリクエストのスレッドによってクローズされ、カーネル・ジョブが関与するのはシステムの状態が緩和されたときのみです。数多くのカーネル・ジョブのアクティビティを監視する担当者にとっては関心のあるものとなる可能性もあります(「Kernel Jobs Running, Current」を参照)。 |
Stale Sessions Closed by Requests |
タイムアウトし、リクエストのスレッドによってクローズされたDecision Serverのセッションの合計数。大半のセッションは、特にビジー状態のサーバーで、このようにクローズされます。 インライン・サービス・リクエストの処理後、コール側スレッドは、コール元に戻るまでに失効したセッションを多くとも1つクローズするように要求されます。 |
Requests Forwarded, Total |
リクエストのセッション・キーが別のサーバーによって現在ホスティングされているため、このサーバーが別のサーバーに転送したインライン・サービス・リクエストの合計数。 値がゼロ以外の場合は、アプリケーション・サーバーまたは外部のロード・バランサが、セッション・アフィニティを保証する方法でリクエストをサーバーに完全にはルーティングしていません。問題はありませんが、アプリケーション・サーバーのセッション・アフィニティ・パラメータを調整するか、または外部のロード・バランシング・システムを入手すると、パフォーマンスを改善できます。 |
Remote Session Keys, Current |
他のサーバーによってホスティングされた参照セッションをこのサーバーが認識しているセッション・キーの現在数。リクエストがこれらのキーのいずれかとともに到着した場合、そのリクエストは他のサーバーに転送されます。 |
Remote Session Keys, Total |
他のサーバーによってホスティングされたセッションに対して、セッション・キーがこのサーバーに登録された合計回数。これは、「Remote Session Keys, Current」の集計です。 |
Kernel Jobs Running, Current |
サーバーで現在実行されているメンテナンス・アクティビティの数。メンテナンス・アクティビティには、モデルのメンテナンス、セッション時間の操作、およびタイムアウトしたリクエストの処理が含まれます。 |
Kernel Jobs Running, Peak |
このサーバーで同時に実行されたメンテナンス・アクティビティの最大数。この値は常に、クラスタ全体のプロパティ「SDManagement-Cluster」→「Properties」→「Misc」→「WorkerThreadPoolSize」以下になるか、 またはサーバー固有のプロパティ「SDManagement-Cluster」→「Members」→「Properties」→「Misc」→「WorkerThreadPoolSize」以下になります。 |
Snapshot Period (ms) |
カウンタのこの行を記録するまでにサーバーがデータを収集した期間(ミリ秒)。 |
この項では、インストールのetc
ディレクトリに含まれているMicrosoft Excelファイルds_perf.xls
の内容について説明します。
先頭のセルB1には、データソースとしてds_perf.xls
をタブ区切りカウンタ・ファイルにリンクする方法を記述するコメントが含まれます。
「ds_perf.csvファイルへのパスを指定するには、カーソルをセルB2に合わせ、「データ」メニューで「外部データの取り込み」→「データの取り込み」を選択して、{$install_directory}\log\フォルダにナビゲートし、ds_perf.csvファイルを選択します。要求されたら、デフォルトの解析設定を使用します。データは、3分ごとに自動的にリフレッシュされます。間隔などの設定を変更するには、「データ」メニューから「外部データの取り込み」→「データ範囲プロパティ」を選択します。」
第2行は、各カウンタの名前を含むヘッダーです。CSVファイルのヘッダーはすべて、値とともにその下に表示されます。
次の列は、CSVファイルの値の後に、CSVの値から計算された値を示す式とともに表示されます。
Gross Throughput (req/sec): 現在のロギング期間中に終了するリクエストの平均速度(リクエスト/秒)。計算式は次のとおりです。
RequestsFinished / SnapshotPeriod * 1000
Net Throughput (req/sec): タイムアウトしたリクエストを除き、現在のロギング期間中に終了するリクエストの平均速度。計算式は次のとおりです。
(RequestsFinished - Timeouts) / SnapshotPeriod * 1000
Utilization (%): 現在のロギング期間中に使用されたサーバーの容量の割合。計算式は次のとおりです。
(RunTimeAverage * RequestsFinished) / (MaxAllowableRunningRequests * SnapshotPeriod) * 100
この値は、以前のロギング期間中に実行を開始したリクエストが終了するとき、一時的に100を超える場合があります。