ヘッダーをスキップ
Oracle Real-Time Decisionsプラットフォーム開発者ガイド
リリース3.0
B54059-01
  目次
目次

戻る
戻る
 
次へ
次へ
 

3 インライン・サービスに対する負荷のシミュレート

この章のチュートリアルでは、Load Generatorを使用してシステムのランタイム操作をシミュレートする手順について説明します。一般的にLoad Generatorは、次の3つの目的で使用されます。

この章の内容は次のとおりです。

3.1 負荷下のパフォーマンス

負荷がかかったときのパフォーマンスを評価するために、インライン・サービスに定義されている統合点(Begin Call、Service CompleteおよびCall End)をコールする負荷シミュレーション・スクリプトを作成します。スクリプトでは、顧客ID、通話理由コード、エージェント名および通話の長さを毎回変えて、これら3つの連続する統合点を複数回コールします。この反復実行ごとにReason Analysisモデルで学習が行われ、その分析結果をDecision Centerレポートにおいて参照できます。

このチュートリアルでは、Load GeneratorをCRMアプリケーションのシミュレーション・プログラムとして扱い、Real-Time Decision Serverに対して統合点のコールを反復実行します。作成するLoad Generatorスクリプト(xmlファイルとして保存)には、このシミュレーションの定義が記述されます。


注意:

Load Generatorスクリプトを定義するときは、インライン・サービス・オブジェクトへのすべての参照を、ラベルではなく、オブジェクトIDの形式で記述する必要があります。StudioでオブジェクトIDを表示するには、「Inline Service Explorer」タスクバーにあるオブジェクトID用「Toggle」アイコンを使用します。「Toggle」アイコンは黄色のタグです。

たとえば、Service CompleteインフォーマントのIDはServiceCompleteで、reason codeインフォーマント・パラメータのIDはreasonCodeです。他も同様です。


この項の内容は次のとおりです。

3.1.1 Load Generatorスクリプトの作成

Load Generatorスクリプトを作成する手順は次のとおりです。

  1. RTD_HOME\scripts\loadgen.cmdを実行することで、Load Generatorを開きます。次に、「Create a new Load Generator script」をクリックします。

    [F1]を押すと、Load Generatorのオンライン・ヘルプを参照できます。オンライン・ヘルプでは、このチュートリアルに説明されていないパラメータが説明されています。

  2. General」タブを選択し、表3-1に示されているパラメータの値を入力します。

    表3-1 「General」タブのパラメータ

    パラメータ名 説明

    Client Configuration File

    サーバーとの通信に使用するプロトコル、接続先サーバーおよび使用するポートを指定するプロパティ・ファイル。デフォルトでは、HTTPを使用して、ローカル・サーバーとポート8080で通信します。今回の要件には、デフォルト・ファイルが適しています。

    RTD_HOME\client\clientHttp
    EndPoints.properties
    

    Graph Refresh Interval in Seconds

    ユーザー・インタフェースにのみ影響します。このパラメータにより、UI上のグラフおよびカウンタのリフレッシュ間隔を指定します。デフォルトは2秒間隔のリフレッシュです。

    2

    Inline Service

    前の項で作成したインライン・サービスに割り当てた名前。

    Tutorial

    Random Number Generator Seed

    ランダムな数値の生成に使用するシード。デフォルトは-1です。

    -1

    Think Time

    複数のトランザクション間における時間。セッション指向の負荷シミュレーションでは、必要に応じて異なる値を指定します。このチュートリアルでは、可能なかぎり多くのセッションを送信し、最大スループットを調べます。このパラメータ値には、固定値または範囲値を指定できます。

    グローバルな思考時間を指定する固定値

    Constant

    複数のトランザクション間における思考時間に対する固定の定数。

    0

    Number of concurrent scripts to run

    並行して実行することで、同時にアクティブになるセッションの数。このシミュレーションでは、一度に1セッションのみを実行します。

    1

    Maximum number of scripts to run

    作成されるセッションの合計数。この数値に達した時点で、イベントの送信が停止します。

    2000

    Enable Logging

    loadgenカウンタ・ログの有効化と無効化を切り替えるオプション。このログには、loadgenのパフォーマンス・データ(Load Generatorによって送信されたリクエストの数、エラーの数、リクエストの平均レスポンス時間およびピーク時のレスポンス時間など)の履歴が記録されます。このチェック・ボックスが選択されていない場合は、ログ関連の他の3つのパラメータ(「Append to Existing File」、「Log File」および「Logging Interval in Seconds」)は無視されます。

    選択解除

    Append to Existing File

    loadgenスクリプトを実行するたびに既存のログ・ファイルを上書きするか追加するかを指定するオプション。

    選択解除

    Log File

    asciiファイルへのファイル・パス。Load Generatorのログが、タブ区切りの書式で書き込まれる場所です。

    RTD_HOME\log\loadgen.csv
    

    Logging Interval in Seconds

    Load Generatorのログにのみ影響します。ログへの書込み間隔を指定します。デフォルトは10秒です。

    10


    パス名においてRTD_HOMEは、Real-Time Decision Serverがインストールされている場所(たとえば、C:\OracleBI\RTD)に置き換えてください。

    セッションに関連するパラメータは、実行中に変更できないことに注意してください。正確に言うと変更は可能ですが、Load Generatorスクリプトが停止して再起動されるまで、変更は実行に影響しません。

  3. 構成を保存します。通常、Load Generatorスクリプトは、インライン・サービスのプロジェクト・フォルダ内にあるフォルダ(フォルダ名はetc)に保存します。Tutorialインライン・サービスがデフォルト・ワークスペースに作成されている場合は、このパスはC:\Documents and Settings\Win_User\Oracle RTD Studio\Tutorial\etcのようになります。スクリプト(xmlファイル)に任意の名前を付けます(たとえば、TutorialLoadgen.xml)。

  4. 統合点に対するパラメータの値を定義するには、「Variables」タブをクリックします。「Variables」タブにより、統合点の各パラメータ値を、それぞれ異なるソースから取得できます。


    注意:

    すべてのツリーが左側に表示されていない場合があります。すべてのツリーを表示するには、バーをドラッグして、2つの領域に分割します。

  5. Script」フォルダを右クリックし、「Add Variable」を選択します。名前をvar_customerIdにします。「Contents」で、「Integer Range」を選択し、1から2000までの順次実行を指定します。この定義によって、各セッションで一度処理され、1から2000まで順次実行される変数が作成されます。この例では、最初のセッションがvar_customerId=1となり、最後のセッションがvar_customerId=2000となります。「Script」を右クリックし、「Add Variable」をさらに3回選択し、表3-2に示すように、4つの変数を定義します。

    表3-2 Load Generatorスクリプトの変数の名前と値

    パラメータ名 コンテンツ・タイプ

    var_customerId

    整数値の範囲

    最小 = 1、最大 = 2000、アクセス・タイプ = 順次

    var_reasonCode

    整数値の範囲

    最小 = 17、最大 = 20、アクセス・タイプ = ランダム

    var_agent

    文字列配列

    文字列を配列に追加するには、テーブル領域を右クリックし、「Add Item」を選択します。次に、新しく作成された行を選択(ダブルクリック)してカーソルを取得し、使用する名前を入力します。[Enter]キーを押して、新しい行の値を登録します。エージェント名として、いくつかのサンプル値(John、Peter、Mary、Saraなど)を追加します。

    var_length

    整数値の範囲

    最小 = 75、最大 = 567、アクセス・タイプ = 順次

    この値は秒単位で、通話の長さとして使用されます。


  6. Edit Script」タブを選択し、左側の領域を右クリックして「Add Action」を選択します。それぞれが1つの統合点に対応する3つのアクションを追加します。アクションは適切な順序(つまりCallBeginServiceCompleteCallEndの順)にする必要があります。

  7. 最初のアクションに対して、タイプを「Message」に、統合点の名前をCallBeginにそれぞれ設定します。「Input Fields」で右クリックして「Add item」を選択し、入力フィールドを追加します。「Name」の下のスペースをダブルクリックして値customerIdを入力し、[Enter]を押して新しい値を登録します。customerIdに対応する「Variable」列で、ドロップダウン・リストから「var_customerId」を選択します。「Session Key」を選択し、このフィールドをセッション・キーとして指定します。

  8. ServiceCompleteアクションに対して、表3-3に示されているように、3つのフィールドを追加します。

    表3-3 ServiceComplete用の追加入力フィールド

    名前 変数

    reasonCode

    var_reasonCode

    agent

    var_agent

    length

    var_length


    フィールド名は、Decision Studioに表示されるServiceCompleteインフォーマントの入力パラメータIDと完全に一致する必要があります。オブジェクトのラベルとそのオブジェクトIDとの間における表示を切り替えるには、Decision Studioの「Inline Service Explorer」タスク・バーにある「Toggle」アイコンを使用します。

    「Toggle」アイコンは黄色のタグです。

    図3-1は、ServiceComplete用に設定が完了した「Input Fields」セクションを示しています。

    図3-1 ServiceComplete用の入力フィールド

    図3-1の説明は次にあります。
    「図3-1 ServiceComplete用の入力フィールド」の説明

  9. Edit Script」タブで、左側の領域を右クリックして「Add Action」を選択します。タイプを「Message」に、統合点の名前をCallEndにそれぞれ設定します。「Input Fields」で右クリックして「Add item」を選択し、入力フィールドを追加します。「Name」をcustomerIdに、「Variable」をvar_customerIdにそれぞれ設定し、「Session Key」を選択します。

  10. 再びLoad Generator構成スクリプトを保存します。この時点で、Load Generatorスクリプトに、3つの統合点へのコールが定義されます。「Edit Script」タブにおけるアクションの順序が正しいこと(つまり、CallBeginServiceCompleteCallEndの順になっていること)を確認します。この順序でない場合は、各アクションを右クリックして、上下に移動します。スクリプトを再び保存します。

  11. Run」タブに移動し、「Play」ボタンを押します。Load Generatorにおいてスクリプトの実行が完了するまで待ちます。

    「Play」アイコンは青い右向き矢印です。

    Pause」ボタンと「Stop」ボタンがあることに注意してください。両者の違いは、「Pause」では順次実行が記憶され一時停止した箇所から再開するのに対して、「Stop」では完全にリセットされる点にあります。


    ヒント:

    問題が発生した場合、「Run」タブの「Total Errors」を調べます。この値が0よりも大きい場合は、サーバー出力ウィンドウを調べます。問題を示す情報が存在する場合があります。一般的な間違いは次のとおりです。
    • インライン・サービスがデプロイされていない。

    • インライン・サービスや統合点の名前に、スペルの間違いや大文字と小文字の間違いがある。

    • サーバーが実行していない。

    Total Requests」の値が1から増えていない場合、loadgenスクリプトの定義に間違いがある可能性があります。次の点を調べてください。

    • Integer Range」の変数で、最小値が最大値よりも小さいこと。

    • メッセージで送信される変数への値のマッピングが正しいこと。たとえば、変数名を変更した場合は、そのマッピングをやりなおす必要があります。

    • クライアント構成ファイルが正しいこと。


3.1.2 Decision Centerにおける分析結果の表示

Load Generatorの実行後に、Decision Centerを使用すると、モデルの学習結果を参照できます。その手順は次のとおりです。

  1. Webブラウザを起動してURLにhttp://server_name:8080/uiを指定して、Decision Centerを起動します。第2.2項「デプロイおよびDecision Centerのセキュリティについて」に説明されているように、提供されているユーザー名とパスワードを使用してログインします。

  2. Open Inline Services」をクリックします。「Select Inline Service」ウィンドウが表示されます。「Tutorial」を選択し、「Call Reason」を展開して「Make Payment」などの選択肢を1つ選択します。右側のペインで、「Analysis」タブ→「Best-fit」サブタブにナビゲートします。このレポートには、この通話理由が該当した回数と、このコール理由と各属性値間の相関関係に関する要約がそれぞれ記載されます。

    興味深いデータが表示されます。図3-2に示されているように、call reason codeMake Paymentとの間に、予想外に強い相関関係があります。

    図3-2 Make Paymentと相関関係がある属性の値

    図3-2の説明は次にあります。
    「図3-2 Make Paymentと相関関係がある属性の値」の説明

    通話理由コード(call reason code)のデータはLoad Generator変数によってランダムに生成されているため、強い相関関係は想定範囲にありません。ただし、ここでは、通話理由コード(ServiceCompleteインフォーマントによって送信される)が、この通話理由に大きく関係しています(ロジックの詳細は、第2.9.5項「全体のテスト」を参照)。

    この誘発的な相関関係を解消するには、この属性がモデルへの入力として使用されないように除外します。モデルから除外する属性の別のタイプとして、顧客の電話番号があります。個々の電話番号と通話理由との間には、特定の相関関係が存在する可能性は低いです。一方、顧客の地域コードと通話理由との間には相関関係が存在する場合があるため、この属性はモデルから除外しません。次の項では、通話理由コードの属性をモデルから除外し、Load Generatorスクリプトを再び実行します。

3.1.3 属性の除外

reason code属性を除外する手順は次のとおりです。

  1. Decision Studioで、Tutorialプロジェクトを開きます。

  2. 「Inline Service Explorer」から「Service Metadata」→「Models」を開き、「Reason Analysis」をダブルクリックします。

  3. Attributes」タブに移動します。下側にあるテーブル(テーブルのタイトルは「Excluded Attributes」)で、「Select」をクリックし除外する属性を選択します。「Session」ノード→「call」エンティティを開き、「reason code」を選択します。「OK」をクリックします。

  4. すべてを保存し、ローカル・ホスト・サーバーに再デプロイします。

  5. Load Generatorスクリプトを再び実行できます。

再実行後にDecision Centerを使用してカウントの値を調べると、Load Generatorを2回実行したときのイベントが含まれています。これは、Load Generatorスクリプトを属性除外前に実行してから属性除外後に実行する前にモデルをリセットしていないためです。

3.2 モデルの学習内容のリセット

次に示すように、モデルの学習内容をリセットするには、JConsole管理ツールを使用します。

  1. OC4JまたはWebLogicを使用している場合、JAVA_HOME\bin\jconsole.exeを実行してJConsoleを起動します。WebSphereを使用している場合、JConsoleの構成中に作成したバッチ・スクリプトを実行します。JConsoleのアクセス方法の詳細は、『Oracle Real-Time Decisionsインストレーションおよび管理ガイド』を参照してください。

  2. Remote」タブを選択します。インストール中に作成した管理者資格証明と適切なポート番号(通常は12345)を入力し、「Connect」をクリックします。

  3. MBean」タブをクリックしてから、「OracleRTD」→「InlineServiceManager」→「Tutorial」→「Development」→「Loadable」MBeanに移動します。

  4. Operations」タブをクリックしてから、deleteAllOperationalData()操作を使用して、このインライン・サービスの操作データをすべて(結果も含めて)削除します。

  5. 新しい分析結果をDecision Centerで参照するために、Load Generatorスクリプトを再び実行します。

3.2.1 インライン・サービスの要約

これまで、単純ですが完全な機能を持つインライン・サービスを作成しました。それには、データ環境、データソースおよび顧客エンティティの定義から始めて、現在の通話データのエンティティを定義しました。基本的な機能をテストした後、分析実行用の統合点とモデルを作成しました。顧客の通話理由を調べて通話理由の発生回数を記録するロジックを、モデルに分析目的で追加しました。次に、Load Generatorを使用して、Real-Time Decision ServerおよびTutorialインライン・サービスに対するリクエストをシミュレートしました。最後に、結果をDecision Centerに表示しました。