以下、本発明の実施の形態を図面を参照して説明する。
図1は、本実施の形態の概略を示す図である。図1に示すように、サービス処理状況分析装置1は、ネットワーク2を介して複数のサーバ3a,3b,3c,3dに接続されている。また、サービス処理状況分析装置1は、メッセージ観測手段1a、メッセージ解析手段1b、メッセージ記憶手段1c、確定トランザクション生成手段1d、トランザクション候補生成手段1e、評価手段1f、推定トランザクション識別手段1g、および出力手段1hを有する。
メッセージ観測手段1aは、ネットワークを介して受け渡されるメッセージを収集する。
メッセージ解析手段1bは、収集したメッセージの内容を解析して、解析されたメッセージの情報をメッセージ記憶手段1cに格納する。このとき、解析されるメッセージの内容としては、例えば、処理を要求するメッセージ(要求メッセージ)か、応答するメッセージ(応答メッセージ)かがある。また、メッセージの発生時刻、送信元、宛先も解析される。
確定トランザクション生成手段1dは、メッセージ記憶手段1cに格納されたメッセージの情報から、メッセージ間の呼び出し関係に関する所定の制約条件を満たし、かつ、すべての呼び出し関係が一意に確定するメッセージの組み合わせを抽出する。そして、確定トランザクション生成手段1dは、抽出したメッセージの組み合わせに基づいて確定トランザクションを生成する。
ここで、トランザクションとは、メッセージ間の呼び出し関係でつながるメッセージの集合に、呼び出し関係に基づいて階層情報を付けたものである。トランザクションは、1個の呼び出し元メッセージ(宛先のサーバに他のメッセージを発生させるメッセージ)と0個以上の呼び出し先メッセージ(他のメッセージに応じてサーバが出力したメッセージ)で構成される。
以下、クライアントからサーバ宛に出されるメッセージ(トランザクションの最初に発生するメッセージ)を開始メッセージとする。また、開始メッセージ以外のメッセージを子孫メッセージとする。
トランザクション候補生成手段1eは、確定トランザクションおよび先に識別されている推定トランザクションに含まれない未識別メッセージを順次選択し、制約条件を満たし、かつ選択した未識別メッセージを含むメッセージの組み合わせを複数抽出する。そして、トランザクション候補生成手段1eは、抽出したメッセージの組み合わせに基づいて、1以上のトランザクション候補を生成する。
ここで、呼び出し関係の制約条件は、例えば、メッセージの発生時刻や継続時間などの時間的な関係や、メッセージの種別、IPアドレス等で与えられる。
評価手段1fは、生成されたトランザクション候補について、同種類のトランザクションがこれまでに確定トランザクションまたは推定トランザクションとして識別された回数に基づいてトランザクション候補それぞれの確からしさを評価する。
推定トランザクション識別手段1gは、生成されたトランザクション候補の1つを、それぞれの確からしさに基づいて推定トランザクションとして識別する。例えば、推定トランザクション識別手段1gは、最も確からしいトランザクション候補を推定トランザクションとする。このとき、推定トランザクション識別手段1gは、最も確からしいトランザクション候補の確からしさが、所定の閾値以上の場合にのみ、そのトランザクション候補を推定トランザクションと識別することもできる。
出力手段1hは、確定トランザクションと推定トランザクションとを識別結果として出力する。
このようなサービス処理状況分析装置によれば、ネットワーク2を介してサーバ3a,3b,3c,3dに対して受け渡されるメッセージが、メッセージ観測手段1aで収集される。すると、メッセージ解析手段1bにより、収集したメッセージの内容が解析され、解析されたメッセージの情報がメッセージ記憶手段1cに格納される。
図2は、収集されたメッセージの例を示す図である。図中、横方向に時間軸を取っており、各メッセージに関し、開始時刻から終了時刻までの時間帯を線で表している。各メッセージにはIDが振られていると共に、処理内容を示す記号(A、p、q)が線の上に示されている。
そして、確定トランザクション生成手段1dが、メッセージ記憶手段1cに格納されたメッセージから、呼び出し関係の制約条件を満たす確定トランザクションを構成する。例えば、制約条件として、「処理Aを行うメッセージが開始メッセージである」、「子孫メッセージは、必ず開始メッセージから呼び出される」、「呼び出し元のメッセージの処理期間内に、呼び出し先のメッセージの処理期間が包含される」という条件が定義されているものとする。この条件に従って、図2に示すメッセージを解析すると、4つの確定トランザクション4a,4b,4c,4dが生成される。すなわち、これらの確定トランザクション4a,4b,4c,4dに含まれる子孫メッセージは、そのトランザクションの開始メッセージ以外の開始メッセージから呼び出されることが有り得ない。そのため、呼び出し関係が一意に確定する。
ここで、ID「01」〜ID「05」のメッセージは、ID「04」のメッセージが従属すべき開始メッセージが確定しないため、確定トランザクションを構成できない。すなわち、ID「01」のメッセージからID「02」のメッセージが呼び出されることは確定する。同様に、ID「03」のメッセージからID「05」のメッセージが呼び出されることも確定する。しかし、ID「04」のメッセージが、ID「01」のメッセージから呼び出されるのか、ID「03」のメッセージから呼び出されるのかが確定しない。
そこで、トランザクション候補生成手段1eが、トランザクション候補を生成する。この例では、開始メッセージを選択して、同時に成立できない複数のトランザクション候補を生成するものとする。
まず、ID「01」のメッセージを含むトランザクション候補5a,5bが生成される。トランザクション候補5aは、ID「01」、「02」のメッセージで構成される。トランザクション候補5bは、ID「01」、「02」、「04」のメッセージで構成される。
トランザクション候補5a,5bが生成されると、評価手段1fにより、確からしさが評価される。確からしさは、各トランザクション候補5a,5bと同種類のトランザクションが確定トランザクションや推定トランザクションとして識別された回数で求められる。また、トランザクションの種類の同一性は、例えば、メッセージによる処理の内容およびメッセージの呼び出し関係の同一性で判断される。
図2の例では、トランザクション候補5aは、処理Aのメッセージから処理pのメッセージを呼び出している。すると、同じ種類の3つの確定トランザクション4a,4b,4cが既に生成されている。そこで、評価手段1fは、処理Aと処理pとで構成されるトランザクションの確からしさを、確定回数(関数f(A,p))=3で表す。
同様に、トランザクション候補5bについて、確からしさが判定される。トランザクション候補5bは、処理Aのメッセージから処理pのメッセージを2回呼び出している。このような呼び出し関係を有する確定トランザクションは存在しないため、確からしさは0となる。すると、推定トランザクション識別手段1gにより、評価の高いトランザクション候補5aが、推定トランザクションとして識別される。
次に、ID「03」のメッセージを含むトランザクション候補5c,5dが生成される。トランザクション候補5cは、ID「03」、「04」のメッセージで構成される。トランザクション候補5dは、ID「03」、「04」、「05」のメッセージで構成される。
トランザクション候補5c,5dが生成されると、評価手段1fにより、確からしさが評価される。
図2の例では、トランザクション候補5cは、処理Aのメッセージから処理pのメッセージを呼び出している。同じ種類のトランザクションとしては、3つの確定トランザクション4a,4b,4cと、トランザクション候補5aに基づく推定トランザクションが既に生成されている。そこで、評価手段1fは、処理Aと処理pとで構成されるトランザクションの確からしさを、確定回数(関数f(A,p))+α×推定回数(関数g(A,p))で表す。ここで、αは、予め設定された係数であり、0以上の実数である。αを0.2とすると、確からしさは、3+0.2×1=3.2となる。
同様に、トランザクション候補5dについて、確からしさが判定される。トランザクション候補5dは、処理Aのメッセージから処理pのメッセージと処理qのメッセージとを呼び出している。同じ種類のトランザクションとしては、1つの確定トランザクション4dが生成されている。そこで、評価手段1fは、処理A、処理p、および処理qで構成されるトランザクションの確からしさを、確定回数(関数f(A,p,q))=1で表す。すると、推定トランザクション識別手段1gにより、評価の高いトランザクション候補5cが、推定トランザクションとして識別される。
すると、ID「05」のメッセージが未確定で残される。そこで、トランザクション候補生成手段1eは、ID「05」のメッセージを含むトランザクション候補5dを再度生成する。この場合、1つのトランザクション候補5dしか生成されず、このトランザクション候補5dの確からしさは1である。
推定トランザクション識別手段1gは、トランザクション候補5dを推定トランザクションとして識別すると共に、先に識別したトランザクション候補5cを、推定トランザクション候補から除外する。
このようにして、トランザクション候補5dのような出現頻度の低い種別のトランザクションを認識することが可能となる。
すなわち、よく似たトランザクション(A,p)、(A,p,q)の一方(A,p)が非常に高頻度で出現し、もう一方(A,p,q)が非常に低頻度で出現する場合、従来手法(特願2004−185909号)では、高頻度のトランザクション(A,p)のみが識別され、低頻度のトランザクション(A,p,q)が識別されない可能性が高い。それに対して、本実施の形態の手法では、もしも、(A,p,q)が(A,p)であると推定されてしまった場合でも、最初のトランザクション推定の後に残った子孫メッセージについて、それらを組み込むことが可能なトランザクションの確からしさを再度評価して、トランザクションを構築しなおす仕組みがある。そのため、その段階で(A,p,q)に識別しなおされる可能性が高い。
なお、トランザクションの確からしさの尺度には、適当な確定回数f(S)と推定回数g(S)との少なくとも何れか一方に係数を乗算した関数を用いることができる。関数に用いる係数については、分析者がこれまでの分析結果に基づいて調整することができる。
ここで、本実施の形態によるトランザクション識別の効果を、特願2004−185909号に示された技術(従来手法)と比較する。
図3は、従来手法と本実施の形態とのトランザクションの識別結果を比較する図である。図3(A)は、従来手法による識別結果を示しており、図3(B)は、本実施の形態の手法による識別結果を示している。図中、横軸は、識別されたトランザクションの処理時間であり、縦軸は、処理時間毎のトランザクションの数である。この例では、100回のトランザクションが発生し、そのうち90回が処理Aと処理pとで構成されるトランザクション(A,p)であり、10回が処理A、処理p、および処理qで構成されるトランザクション(A,p,q)であるものとする。
従来手法では、各呼び出し元IDに対して、呼び出し可能な呼び出し先IDの組み合わせに基づいて、(呼び出し元、呼び出し先)で表されるトランザクションの起こりやすさを計算する。そして、所定の閾値を超えるものをトランザクションモデルとして選択する。すなわち、起こりやすさが閾値以下となるような出現頻度の低いトランザクションは、トランザクションモデルとして選択されない。
そのため、従来手法では、トランザクション (A,p,q)が10回含まれているにもかかわらず、トランザクション(A, p)の1種類として識別されてしまう。そのため、トランザクションの処理時間の分布等の分析精度が低下する。
一方、本実施の形態の手法では、トランザクション(A,p)とトランザクション (A, p,q)との2種類のトランザクションとして識別できる。そのため、処理時間分布等を分析する場合、トランザクション(A,p)処理時間の分布とトランザクション(A, p,q)の処理時間の分布とを個別に分析できる。その結果、処理時間分布等の分析精度を上げることができる。
また、検出されたトランザクションの種別における確定トランザクションと推定トランザクションとの比率に基づいて、異常パターンを検出することもできる。例えば、推定トランザクションの比率を定期的に計測することにより、もしもある期間のみ推定トランザクションの比率が異常に高くなるなど変化が生じたならば、該当する種別のトランザクションの処理に何らかのトラブルが発生したものと推定できる。
以下、本発明の実施の形態について詳細に説明する。
本実施の形態では、インターネットバンキングの業務サービスを提供するWeb3階層システムにおいて、「残高確認」と「入金」との2つのサービスを提供する場合の例である。
なお、本実施形態では、管理対象となる要素として「メッセージ」、および「トランザクション」がある。
「メッセージ」は、TCP(Transmission Control Protocol)セッション上で複数の機器がやり取りするデータの最小単位である。例えば、HTTPでのリクエスト(要求)やそれに対するレスポンス(応答)が、メッセージに該当する。
なお、本実施の形態ではメッセージの概念を広くとらえ、要求と応答からなるメッセージの対、およびそのメッセージによって実行される処理を纏めて、1つのメッセージとする。特に要求なのか応答なのかを特定する必要がある場合には、要求メッセージ、応答メッセージと呼ぶこととする。
またメッセージのうち、トランザクションの最初に実行されるものを特に「開始メッセージ」と呼び、他のメッセージの実行中に呼び出されるメッセージを特に「子孫メッセージ」と呼ぶ。
「トランザクション」は、システムに対する要求によって発生するオブジェクト処理の集合である。特に、構成が一意に確定したトランザクションを「確定トランザクション」、確からしさによって推定されたトランザクションを「推定トランザクション」と呼ぶ。また、推定トランザクションのうち、一度推定された構成に含まれるメッセージの変更が行われたものを、特に「置換トランザクション」と呼ぶ。
図4は、本実施の形態に係るシステム構成を示す図である。図4の例では、スイッチ10を介して、クライアント21,22,23、Webサーバ31、アプリケーションサーバ32、データベース(DB)サーバ33、およびサービス処理状況分析装置100が接続されている。Webサーバ31、アプリケーションサーバ32、およびDBサーバ33は、クライアント21,22,23からの要求に応じて、サービスを提供する。
サービスを提供するためのトランザクションにおいて、Webサーバ31、アプリケーションサーバ32、およびDBサーバ33間で、スイッチ10を介してメッセージの送受信が行われる場合がある。このスイッチ10を介して送受信されるメッセージをサービス処理状況分析装置100が監視することで、システムの動作状態の分析を行うことができる。
図5は、サービス処理状況分析装置のハードウェア構成例を示す図である。サービス処理状況分析装置100は、CPU101によって装置全体が制御されている。CPU101には、バス107を介してRAM(Random Access Memory)102、ハードディスクドライブ(HDD:Hard Disk Drive)103、グラフィック処理装置104、入力インタフェース105、および通信インタフェース106が接続されている。
RAM102には、CPU101に実行させるOS(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、RAM102には、CPU101による処理に必要な各種データが格納される。HDD103には、OSやアプリケーションプログラムが格納される。
グラフィック処理装置104には、モニタ11が接続されている。グラフィック処理装置104は、CPU101からの命令に従って、画像をモニタ11の画面に表示させる。入力インタフェース105には、キーボード12とマウス13とが接続されている。入力インタフェース105は、キーボード12やマウス13から送られてくる信号を、バス107を介してCPU101に送信する。
通信インタフェース106は、スイッチ10に接続されている。通信インタフェース106は、スイッチ10を介して、他のコンピュータとの間でデータの送受信を行う。
以上のようなハードウェア構成によって、本実施の形態の処理機能を実現することができる。なお、図5には、サービス処理状況分析装置100のハードウェア構成例を示したが、クライアント21,22,23、Webサーバ31、アプリケーションサーバ32、およびDBサーバ33も同様のハードウェア構成で実現することができる。
図6は、サービス処理状況分析装置の機能ブロックを示す図である。サービス処理状況分析装置100は、パケットデータ記憶部111、メッセージ履歴112、トランザクション記憶部113、分析結果記憶部114、メッセージ観測部120、メッセージ解析部130、トランザクション識別部140、分析部150、および出力部160を有している。
パケットデータ記憶部111は、スイッチ10を介して送受信されたメッセージを構成するパケットを記憶するための記憶装置である。メッセージ履歴112は、パケットを解析することにより取得したメッセージの情報を記憶するための記憶装置である。トランザクション記憶部113は、トランザクションを完了するまでに送受信されるメッセージのリスト(トランザクション)を記憶する記憶装置である。分析結果記憶部114は、メッセージの分析結果を記憶する記憶装置である。
メッセージ観測部120は、スイッチ10を介して送受信されるメッセージを観測し、そのメッセージを構成するパケットをパケットデータ記憶部111に格納する。
メッセージ解析部130は、パケットデータ記憶部111に格納されたパケットの内容を解析し、解析結果をメッセージ履歴112に格納する。
トランザクション識別部140は、メッセージ履歴112に格納された情報に基づいてトランザクションを生成し、トランザクション記憶部113に格納する。
なお、トランザクション識別部140は、トランザクションを生成するためのトランザクション識別段階で、メッセージ履歴112に登録されたメッセージを、開始メッセージ集合Aと子孫メッセージ集合Bとに分類する。開始メッセージ集合Aは、トランザクションの最初に実行されるメッセージの集合である。子孫メッセージ集合Bは、トランザクション中で、他のメッセージの処理によって呼び出されるメッセージの集合である。
トランザクション識別部140は、開始メッセージ集合A内のメッセージと子孫メッセージ集合B内のメッセージとの呼び出し関係を識別し、呼び出し関係があるメッセージからトランザクションを構成する。そして、トランザクション識別部140は、構成されたトランザクションから、種別が同一となるトランザクションを纏め、そのトランザクション内のメッセージ間の関係をトランザクションとして定義する。
分析部150は、トランザクション記憶部113に格納された各トランザクションの処理時間等の統計情報を分析する。そして、分析部150は、分析結果を分析結果記憶部114に格納する。
出力部160は、分析結果記憶部114に格納されている分析結果を、グラフ等でモニタ11等に出力する。
このような構成のサービス処理状況分析装置100で、次のようなシステム分析処理が実行される。以下、トランザクション識別部140によるトランザクション識別処理について、詳細に説明する。
図7は、トランザクション識別処理の手順を示すフローチャートである。以下、図7に示す処理をステップ番号に沿って説明する。
[ステップS11]トランザクション識別部140は、メッセージ履歴112に登録されているメッセージに番号を付し、1番目から順番にメッセージを読み込む。以下、処理対象として選択されたメッセージをメッセージkと呼ぶことする。そして、トランザクション識別部140は、メッセージ履歴112からメッセージkの情報を読み込む。
[ステップS12]トランザクション識別部140は、メッセージkが開始メッセージか否かを判定する。開始メッセージであるか否かは、予め定義された開始メッセージ条件を満たすか否かで判断できる。開始メッセージ条件は、分析対象のシステムの性質に基づいて、下記のような条件が設定される。
1.メッセージ種別が所定の値であること(例えば、メッセージ種別=HTTP)。例えば、クライアント21〜23からの要求として、HTTP要求のみが認められている場合、所定のメッセージ種別として、HTTPが設定される。
2.処理内容が所定の値であること(例えば、処理内容=/root/program.cgi?x=*&y=*)。処理内容は、例えば、処理を実行するプログラムのファイル名によって予め設定されている。
3.クライアントIPアドレスが所定の値であること(例えば、クライアントIPアドレス=210.98.76.54)。予めサービス対象のクライアントのIPアドレスが分かっている場合、そのIPアドレスが設定される。
4.サーバIPアドレスが所定の値であること(例えば、サーバIPアドレス=12.34.56.78)。例えば、常にWebサーバ31が開始メッセージを処理する場合、Webサーバ31のアドレスが予め設定される。
メッセージkが開始メッセージであれば、処理がステップS13に進められる。メッセージkが開始メッセージでなければ、処理がステップS14に進められる。
[ステップS13]トランザクション識別部140は、開始メッセージ集合Aに情報を登録する。具体的には、トランザクション識別部140は、メッセージkに関連づけて、空の確定子孫メッセージリスト、推定子孫メッセージリスト、および未識別子孫メッセージリストを作成する。そして、トランザクション識別部140は、トランザクション識別状況を「未識別(U)」と設定し、メッセージkに関する情報を開始メッセージ集合Aに登録する。その後、処理がステップS15に進められる。
[ステップS14]トランザクション識別部140は、メッセージkについて開始メッセージ候補リストを作成し、子孫メッセージ集合Bに登録する。
[ステップS15]トランザクション識別部140は、メッセージ履歴112から、トランザクション識別に使用する所定数のメッセージを読み込んだか否かを判定する。所定数のメッセージの読み込みが完了していれば、処理がステップS16に進められる。読み込んだメッセージ数が所定数に達していなければ、処理がステップS11に進められ、次のメッセージの読み込みが行われる。
[ステップS16]トランザクション識別部140は、確定トランザクションの識別処理を行う。
[ステップS17]トランザクション識別部140は、推定トランザクションの識別処理を行う。
[ステップS18]トランザクション識別部140は、未識別子孫メッセージによる推定トランザクションの置換処理を行う。
[ステップS19]トランザクション識別部140が、トランザクション識別終了条件を満たしたか否かを判断する。トランザクション識別終了条件は、分析者の目的に合わせて、分析者が下記のような条件の少なくとも1つを適宜設定する。
1.すべてのメッセージが識別されたら終了する。
2.新たにトランザクション識別されたメッセージ数が所定の閾値未満になったら終了する。
3.所定の繰り返し数に達したら終了する。
トランザクション識別終了条件が満たされた場合、処理がステップS20に進められる。トランザクション識別終了条件が満たされていない場合、処理がステップS17に進められ、トランザクション識別処理が続行される。
[ステップS20]トランザクション識別部140は、トランザクション識別結果をトランザクション記憶部113に出力する。
次に、ステップS14に示した子孫メッセージ集合への情報の登録処理について、詳細に説明する。
図8は、子孫メッセージ集合への情報の登録処理の手順を示すフローチャートである。以下、図8に示す処理をステップ番号に沿って説明する。
[ステップS31]トランザクション識別部140は、ステップS11で読み込まれたメッセージkについて、呼び出し関係に基づいて可能な開始メッセージ候補のID{j1,j2,・・・,jN}をリストアップする。ここで、n番目(nは、1以上の整数)の開始メッセージ候補がjnで表され、開始メッセージ候補の総数がN(Nは、0以上の整数)である。
具体的には、トランザクション識別部140は、メッセージkと開始メッセージ候補を比較し、所定の呼び出し可能条件を満たしたときに、呼び出し関係有りを判断する。呼び出し可能条件としては、例えば、「開始メッセージ候補の要求時刻から応答時刻までの期間が、子孫メッセージ候補(メッセージk)の要求時刻から応答時刻までの期間を包含する」という条件がある。呼び出し可能条件の詳細は後述する(図15参照)。
[ステップS32]トランザクション識別部140は、開始メッセージ候補数Nを判断する。開始メッセージ候補数Nが0であれば、処理が終了する。開始メッセージ候補数Nが1であれば、処理がステップS33に進められる。開始メッセージ候補数が2以上であれば、処理がステップS35に進められる。
[ステップS33]トランザクション識別部140は、メッセージkの開始メッセージ識別状況を「確定(D)」にして、開始メッセージ候補リストにj1(唯一の開始メッセージ候補)を登録する。
[ステップS34]トランザクション識別部140は、IDがj1のメッセージに対する確定子孫メッセージリストにメッセージkのIDを登録する。その後、処理がステップS39に進められる。
[ステップS35]トランザクション識別部140は、開始メッセージ候補数が2以上の場合、変数n(n=1,2,・・・,N)が取り得る値毎に、ステップS36〜ステップS37の処理を実行する。
[ステップS36]トランザクション識別部140は、メッセージkの開始メッセージ識別状況を「未識別(U)」にして、開始メッセージ候補リストにjnを登録する。
[ステップS37]トランザクション識別部140は、jnの未識別子孫メッセージリストにメッセージkのIDを登録する。
[ステップS38]トランザクション識別部140は、変数n(n=1,2,・・・,N)が取り得る全ての値についてステップS36,S37の処理を行ったら、処理をステップS39に進める。
[ステップS39]トランザクション識別部140は、kを子孫メッセージ集合Bに登録する。その後、処理が終了する。
このようにして、メッセージkを、開始メッセージの候補となるメッセージの子孫メッセージ集合に登録することができる。
次に、確定トランザクションの識別処理(図7のステップS16)を詳細に説明する。
図9は、確定トランザクションの識別処理の手順を示すフローチャートである。以下、図9に示す処理をステップ番号に沿って説明する。
[ステップS41]トランザクション識別部140は、開始メッセージ集合Aに含まれる各メッセージkについて、ステップS42〜ステップS46の処理を実行する。
[ステップS42]トランザクション識別部140は、メッセージkの未識別子孫メッセージリストは空か(子孫となるメッセージが全て確定したか)否かを判断する。未識別子孫メッセージリストにメッセージが登録されていれば、処理がステップS47に進められる。未識別子孫メッセージリストにメッセージが登録されていなければ、処理がステップS43に進められる。
[ステップS43]トランザクション識別部140は、メッセージkおよびメッセージkの確定子孫メッセージリストに含まれるメッセージによって、トランザクションSを構成する。このとき、トランザクション識別部140は、メッセージkのトランザクション識別状況を「確定(D)」とする。
[ステップS44]トランザクション識別部140は、確定したトランザクションSの情報をHDD103等の記録媒体に記録する。HDDに記録された確定トランザクションSの情報は、トランザクション識別結果の出力時(ステップS20)にまとめて出力される。なお、トランザクションSが確定する毎に、画面等に出力することもできる。
[ステップS45]トランザクション識別部140は、確定トランザクションSの確定回数F(S)を1だけ増やす。
[ステップS46]トランザクション識別部140は、開始メッセージ集合Aから、ステップS43〜ステップS45の処理を実行したメッセージkを削除する。
[ステップS47]トランザクション識別部140は、開始メッセージ集合Aに含まれるすべてのメッセージについて、ステップS42〜ステップS46の処理が完了したら、処理を終了する。未処理のメッセージがあれば、そのメッセージに対するステップS42〜ステップS46の処理が実行される。
このようにして、確定トランザクションを識別することができる。次に、推定トランザクションの識別処理(図7のステップS17)を詳細に説明する。
図10は、推定トランザクションの識別処理の手順を示すフローチャートである。以下、図10に示す処理をステップ番号に沿って説明する。
[ステップS51]トランザクション識別部140は、開始メッセージ集合Aの各メッセージkについて、ステップS52〜ステップS58の処理を行う。
[ステップS52]トランザクション識別部140は、メッセージkのトランザクション識別状況が「未識別(U)」か否かを判断する。未識別であれば、処理がステップS53に進められる。「識別」であれば、処理がステップS59に進められる。
[ステップS53]トランザクション識別部140は、メッセージkおよび確定子孫メッセージリスト、推定子孫メッセージリストによってトランザクションを構成し、推定トランザクションS1とする。
[ステップS54]トランザクション識別部140は、メッセージkの未識別子孫メッセージリストが空か否かを判断する。未識別子孫メッセージリストが空であれば、処理がステップS58に進められる。未識別子孫メッセージリストが空でなければ、処理がステップS55に進められる。
[ステップS55]トランザクション識別部140は、ダミーのトランザクションを推定トランザクションS2とし、推定トランザクションS2の確からしさをh(S2)=所定値とする。
[ステップS56]トランザクション識別部140は、メッセージkが属する最も確からしい推定トランザクションS1を選択する。この処理の詳細は後述する(図11参照)。
[ステップS57]トランザクション識別部140は、ステップS56の処理において推定トランザクションS1が選択されたか否かを判断する。推定トランザクションが選択された場合、処理がステップS58に進められる。推定トランザクションが選択されなかった場合、処理がステップS59に進められる。
[ステップS58]トランザクション識別部140は、メッセージkのトランザクション識別状況を「識別(S)」と設定し、推定トランザクションS1の情報をHDD103等に記録し、さらに、推定トランザクションS1の推定回数g(S1)を1だけ増やす。
[ステップS59]トランザクション識別部140は、開始メッセージ集合Aに含まれる全てのメッセージについて、ステップS52〜ステップS58の処理が完了した場合、処理をステップS60に進める。
[ステップS60]トランザクション識別部140は、推定トランザクションの識別終了条件が満たされたか否かを判断する。なお、推定トランザクションの識別終了条件については、分析者の目的に合わせて、下記のような条件の少なくとも1つを適宜設定することができる。
1.すべての開始メッセージのトランザクション識別状況が「識別(S)」になったら終了する。
2.新たにトランザクション識別されたメッセージ数が所定の閾値未満になったら終了する。
3.所定の繰り返し数に達したら終了する。
トランザクション識別部140は、識別終了条件が満たされた場合、推定トランザクションの識別処理を終了する。また、トランザクション識別部140は、識別終了条件が満たされていない場合、処理をステップS51に進める。
図11は、確からしいトランザクションの選択処理手順を示すフローチャートの前半である。以下、図11に示す処理をステップ番号に沿って説明する。
[ステップS71]トランザクション識別部140は、m=1,2,・・・、min{M,Mc}(Mは、kの未識別子孫メッセージリストに登録されたメッセージ数、Mcは予め設定された値、min{M,Mc}はMとMcとの小さい方の値のmの取り得る値毎に、ステップS72〜ステップS78の処理を実行する。
[ステップS72]トランザクション識別部140は、未識別子孫メッセージリストUから、m個のメッセージの組み合わせUsを選択する。そして、トランザクション識別部140は、選択可能な全ての組み合わせに対して、ステップS73〜ステップS77の処理を実行する。
[ステップS73]トランザクション識別部140は、メッセージk、確定子孫メッセージリスト、推定子孫メッセージリスト、および選択されたメッセージの組み合わせUsによって構成されるトランザクションSを構成し、トランザクションSの確からしさh(S)=f(S)+α×g(S)を計算する。αは、予め設定された係数(例えば0.2)である。
[ステップS74]トランザクション識別部140は、ステップS73で計算したトランザクションSの確からしさh(S)が、最も確からしさが大きいと判定されたトランザクションS1の確からしさh(S1)より大きいか否かを判定する。h(S)がh(S1)より大きい場合、処理がステップS75に進められる。h(S)がh(S1)未満の場合、処理がステップS76に進められる。
[ステップS75]トランザクション識別部140は、トランザクションS1を、2番目に確からしさが大きいトランザクションS2とする。また、トランザクション識別部140は、ステップS73で構成したトランザクションSを、最も確からしさが大きいトランザクションS1とする。その後、処理がステップS78に進められる。
[ステップS76]トランザクション識別部140は、ステップS73で計算したトランザクションSの確からしさh(S)が、2番目に確からしさが大きいトランザクションS2の確からしさh(S2)より大きいか否かを判定する。h(S)がh(S2)より大きい場合、処理がステップS77に進められる。h(S)がh(S2)未満の場合、処理がステップS78に進められる。
[ステップS77]トランザクション識別部140は、ステップS73で構成したトランザクションSを、2番目に確からしさが大きいトランザクションS2とする。
[ステップS78]トランザクション識別部140は、m個のメッセージからなる全ての組み合わせ全てについてステップS73〜ステップS77の処理が完了した場合、処理をステップS79に進める。
[ステップS79]トランザクション識別部140は、mの取り得るすべての値に応じて、ステップS72〜ステップS78の処理が完了した場合、処理をステップS81(図12に示す)に進める。
図12は、確からしいトランザクションの選択処理手順を示すフローチャートの後半である。以下、図12に示す処理をステップ番号に沿って説明する。
[ステップS81]トランザクション識別部140は、最も確からしさが大きいと判定されたトランザクションS1の確からしさh(S1)を、2番目に確からしさが大きいトランザクションS2の確からしさh(S2)で除算した値が、所定の閾値より大きいか否かを判定する。除算結果が所定の閾値より大きければ、処理がステップS82に進められる。除算結果が所定の閾値以下であれば、処理がステップS89に進められる。
[ステップS82]トランザクション識別部140は、最も確からしさが大きいと判定されたトランザクションS1に属する各未識別子孫メッセージuについて、ステップS83〜ステップS86の処理を実行する。
[ステップS83]トランザクション識別部140は、未識別子孫メッセージuの開始メッセージ識別状況を「推定(E)」にして、メッセージkの推定子孫メッセージリストに未識別子孫メッセージuを登録する。
[ステップS84]トランザクション識別部140は、処理対象の未識別子孫メッセージuに対して設定された開始メッセージ候補リストに含まれる各開始メッセージjについて、ステップS85の処理を実行する。
[ステップS85]トランザクション識別部140は、開始メッセージjの未識別子孫メッセージリストから、未識別子孫メッセージuを除去する。
[ステップS86]トランザクション識別部140は、処理対象の未識別子孫メッセージuに対して設定された開始メッセージ候補リストに含まれるすべての開始メッセージjについて、ステップS85の処理が完了した場合、処理をステップS87に進める。
[ステップS87]トランザクション識別部140は、最も確からしさが大きいと判定されたトランザクションS1に属する全ての未識別子孫メッセージuについて、ステップS83〜ステップS86の処理が完了した場合、処理がステップS88に進める。
[ステップS88]トランザクション識別部140は、推定トランザクションとして、最も確からしさが大きいと判定されたトランザクションS1を返す。その後、確からしいトランザクション選択処理が終了する。
[ステップS89]トランザクション識別部140は、最も確からしいトランザクションが未選択である旨を返す。その後、確からしいトランザクション選択処理が終了する。
このようにして、最も確からしさが大きいトランザクションが、2番目に確からしさが大きいトランザクションよりも確からしさが十分に大きければ、最も確からしさが大きいトランザクションが推定トランザクションとして決定される。
次に、推定トランザクションの置換処理(図7のステップS18)について説明する。
図13は、推定トランザクションの置換処理手順を示すフローチャートの前半である。以下、図13に示す処理をステップ番号に沿って説明する。
[ステップS91]トランザクション識別部140は、子孫メッセージ集合Bに含まれる各メッセージkについて、ステップS92〜ステップS108の処理を実行する。
[ステップS92]トランザクション識別部140は、メッセージkの開始メッセージ識別状況が「未識別」か否かを判断する。開始メッセージ識別状況が「未識別」であれば、処理がステップS93に進められる。開始メッセージ識別状況が「確定」であれば、処理がステップS109(図14に示す)に進められる。
[ステップS93]トランザクション識別部140は、ダミーのトランザクションS#を生成し、置換トランザクション候補S*の初期値とする。また、トランザクション識別部140は、置換トランザクション候補S*の確からしさh(S*)=h(S#)=所定値とする。
[ステップS94]トランザクション識別部140は、メッセージkの開始メッセージ候補リスト内の各メッセージjについて、ステップS95〜ステップS97の処理を実行する。
[ステップS95]トランザクション識別部140は、メッセージj、メッセージjの確定子孫メッセージリストおよび推定子孫メッセージリスト、およびメッセージkによってトランザクションSを構成し、トランザクションSの確からしさh(S)=f(S)+α×g(S)を計算する。
[ステップS96]トランザクション識別部140は、ステップS95で構成したトランザクションSの確からしさh(S)が、トランザクションS*の確からしさh(S*)より大きいか否かを判断する。h(S)の方がh(S*)より大きければ、処理がステップS97に進められる。h(S)がh(S*)以下であれば、処理がステップS98に進められる。
[ステップS97]トランザクション識別部140は、ステップS95で構成したトランザクションSをS*とする。
[ステップS98]トランザクション識別部140は、メッセージkの開始メッセージ候補リスト内の全てのメッセージjについて、ステップS95〜ステップS97の処理が完了した場合、処理をステップS99に進める。
[ステップS99]トランザクション識別部140は、置換トランザクション候補S*の確からしさh(S*)が所定の閾値より大きいか否かを判断する。h(S*)が所定の閾値より大きい場合、処理がステップS101(図14に示す)に進められる。h(S*)が所定の閾値以下の場合、処理がステップS109(図14に示す)に進められる。
図14は、推定トランザクションの置換処理手順を示すフローチャートの後半である。以下、図14に示す処理をステップ番号に沿って説明する。
[ステップS101]トランザクション識別部140は、トランザクションS*の開始メッセージj*のトランザクション識別状況はトランザクション識別状況が「識別」か否かを判定する。トランザクション識別状況が「識別」であれば、処理がステップS102に進められる。トランザクション識別状況が「未識別」であれば、処理がステップS103に進められる。
[ステップS102]トランザクション識別部140は、メッセージj*、メッセージj*の確定子孫メッセージリストおよび推定子孫メッセージリストによって構成されるトランザクションSの推定回数g(S)を1だけ減らす。その後、処理がステップS104に進められる。
[ステップS103]トランザクション識別部140は、メッセージj*のトランザクション識別状況を「識別」にする。
[ステップS104]トランザクション識別部140は、メッセージkの開始メッセージ識別状況を「置換(F)」にして、メッセージj*の推定子孫メッセージリストにメッセージkを登録する。
[ステップS105]トランザクション識別部140は、メッセージkの開始メッセージ候補リストに含まれる各メッセージjについて、ステップS106の処理を実行する。
[ステップS106]トランザクション識別部140は、メッセージjの未識別子孫メッセージリストからメッセージkを除去する。
[ステップS107]トランザクション識別部140は、メッセージkの開始メッセージ候補リストに含まれるすべてのメッセージjについてステップS106の処理が完了すると、処理をステップS108に進める。
[ステップS108]トランザクション識別部140は、推定トランザクションS*の情報を記録し、推定回数g(S*)を1だけ増やす。
[ステップS109]トランザクション識別部140は、子孫メッセージ集合Bに含まれる全てのメッセージkについてステップS92〜ステップS108の処理が完了したら、推定トランザクションの置換処理を終了する。
以上のような処理によって得られたトランザクションが、トランザクションモデルとして、トランザクション記憶部113に格納される。
以下、フローチャートによって示した個々の処理内容を詳細に説明する。
まず、図8のステップS31におけるメッセージ間の呼び出し関係の判定処理について説明する。呼び出し条件の第1の例は、「開始メッセージ候補の要求時刻から応答時刻までの期間が、子孫メッセージ候補の要求時刻から応答時刻までの期間を包含する」というものである。
図15は、呼び出し条件の第1の例を示す図である。図15には、4つのメッセージ41〜44が示されている。図中、横軸に時間軸が取られている。また、各メッセージ41〜44に示される黒い三角が要求時刻を示し、白い三角が応答時刻を示している。各メッセージ41〜44には、それぞれ「ID01」、「ID02」、「ID03」、「ID04」の識別番号が付与されている。
なお、メッセージ41〜44は、それぞれステップS12(図7に示す)の処理によって、開始メッセージ候補なのか子孫メッセージ候補なのかが判別されているものとする。この例では、メッセージ41は開始メッセージ候補であり、メッセージ42〜44は子孫メッセージ候補である。
ここで、開始メッセージ候補であるメッセージ41と、子孫メッセージ候補であるメッセージ42〜44との間の関係が、「開始メッセージ候補の要求時刻から応答時刻までの期間が、子孫メッセージ候補の要求時刻から応答時刻までの期間を包含する」という呼び出し条件を満たすか否かが判断される。
この呼び出し条件に従ってメッセージ41〜44間の関係を見ると、メッセージ42,43の要求時刻から応答時刻までの期間は、メッセージ41の要求時刻から応答時刻までの期間に包含されている。一方、メッセージ44の要求時刻から応答時刻までの期間は、メッセージ41の要求時刻から応答時刻までの期間に包含されていない。従って、メッセージ42,43は、メッセージ41の子孫としての条件を満たしているが、メッセージ44は、メッセージ41の子孫としての条件を満たしていない。
メッセージ間の呼び出し関係の第2の条件としては、「開始メッセージ候補の要求時刻から所定の時間(呼び出し制限時間)内に子孫メッセージ候補の要求時刻が含まれる」という条件を設定できる。
図16は、呼び出し条件の第2の例を示す図である。図16には、4つのメッセージ51〜54が示されている。図中、横軸に時間軸が取られている。また、各メッセージ51〜54に示される黒い三角が要求時刻を示し、白い三角が応答時刻を示している。各メッセージ51〜54には、それぞれ「ID01」、「ID02」、「ID03」、「ID04」の識別番号が付与されている。また、メッセージ51が開始メッセージ候補であり、メッセージ52〜54が子孫メッセージ候補である。
ここで、開始メッセージ候補であるメッセージ51と、子孫メッセージ候補であるメッセージ52〜54との間の関係が、「開始メッセージ候補の要求時刻から所定の時間(呼び出し制限時間)内に子孫メッセージ候補の要求時刻が含まれる」という呼び出し条件を満たすか否かが判断される。なお、図16では、メッセージ51の要求時刻からの呼び出し制限時間56を、斜線入りの矩形で示している。
この呼び出し条件に従ってメッセージ51〜54間の関係を見ると、メッセージ52,53の要求時刻は、メッセージ51の要求時刻から呼び出し制限時間56経過前である。一方、メッセージ54の要求時刻は、メッセージ51の要求時刻から呼び出し制限時間56経過後である。従って、メッセージ52,53は、メッセージ51の子孫としての条件を満たしているが、メッセージ54は、メッセージ51の子孫としての条件を満たしていない。
メッセージ間の呼び出し関係の第3の条件としては、「呼び出し元メッセージのサーバIPアドレスと呼び出し先メッセージのクライアントIPアドレスが一致するものどうしをつなげていくと、開始メッセージ候補から直接または間接に呼び出される子孫メッセージ候補につながる」という条件を設定できる。
図17は、呼び出し条件の第3の例を示す図である。図17には、4つのメッセージ61〜64が示されている。図中、横軸に時間軸が取られている。また、各メッセージ61〜64に示される黒い三角が要求時刻を示し、白い三角が応答時刻を示している。各メッセージ61〜64には、それぞれ「ID01」、「ID02」、「ID03」、「ID04」の識別番号が付与されている。また、メッセージ61が開始メッセージ候補であり、メッセージ62〜64が子孫メッセージ候補である。
ここで、開始メッセージ候補であるメッセージ61と、子孫メッセージ候補であるメッセージ62〜64との間の関係が、「呼び出し元メッセージのサーバIPアドレスと呼び出し先メッセージのクライアントIPアドレスが一致するものどうしをつなげていくと、開始メッセージ候補からすべての子孫メッセージ候補につながる」という呼び出し条件を満たすか否かが判断される。なお、図17では、各メッセージ61〜64のサーバIPアドレスを「s_ip」で示しており、クライアントIPアドレスを「c_ip」で示している。
この呼び出し条件に従ってメッセージ61〜64間の関係を見ると、メッセージ61の呼び出し元メッセージのサーバIPアドレスと、メッセージ62の呼び出し先クライアントIPアドレスが一致する。また、メッセージ62の呼び出し元メッセージのサーバIPアドレスと、メッセージ63の呼び出し先クライアントIPアドレスが一致する。一方、メッセージ61〜63の呼び出し元メッセージのサーバIPアドレスとメッセージ64の呼び出し先クライアントIPアドレスとは一致しない。従って、メッセージ62,63は、メッセージ61の子孫としての条件を満たしているが、メッセージ64は、メッセージ61の子孫としての条件を満たしていない。
次に、図4に示したように、Webサーバ31、アプリケーションサーバ32、DBサーバ33によってクライアント21〜23に対してサービスを提供する場合のトランザクションの分析例を具体的に説明する。この例では、クライアント21〜23とWebサーバ31との間のメッセージ交換は、HTTPで行われる。また、Webサーバ31とアプリケーションサーバ32との間のメッセージ交換は、IIOPで行われる。さらに、アプリケーションサーバ32とDBサーバ33との間のメッセージ交換は、RDB2で行われる。
ところで、このシステムでは、トランザクションは多階層のメッセージで構成される。すなわち、Webサーバ31からの要求がアプリケーションサーバ32に渡され、アプリケーションサーバ32からの要求がDBサーバ33に渡される。本実施の形態では、このような多階層のトランザクションの構造情報を、以下のように表すものとする。
図18は、トランザクションの構造情報の第1の例を示す図である。トランザクション71は3階層構造である。
まず、処理内容が同一のメッセージの組み合わせで、かつ呼び出し関係が同一の階層構造を持つ複数のトランザクションは、同一種類のトランザクションであるとみなす。この場合、トランザクションの種類毎に0,1,・・・のようにIDを与えて、トランザクションの種類を区別する。
トランザクション種類IDの付け方は、分析者の都合に合わせて適宜設定できるものとする。例えば、新しいトランザクションの種類が識別された順でトランザクション種類のIDをつけることができる。また、トランザクション識別処理中には仮のIDを付けておき、識別処理終了後にメッセージの文字列の辞書順にソートして、トランザクション種類のIDを付けなおすこともできる。
各トランザクション種類について、どのようなメッセージの組み合わせでどのような階層構造になっているか分かるように、所定の形式でトランザクションの構造情報72を記述するものとする。
具体的には、トランザクション種類のID、およびトランザクション内で各メッセージがどのメッセージから何番目に呼び出されるかについての情報を組み合わせて、構造情報72を記述する。
例えば、図18に示す種類IDが「0」のトランザクション71は、開始メッセージHTTP;A(種別HTTP、処理内容A)が、メッセージIIOP;i(種別IIOP、処理内容i)を呼び出し、さらにそのメッセージが別のメッセージRDB2;p(種別RDB2、処理内容p)を呼び出すという階層構造を持っている。つまり、開始メッセージHTTP;Aに対して、メッセージIIOP;iは子メッセージ、RDB2;pは孫メッセージにあたり、それぞれ、第0階層、第1階層、第2階層に存在する。
このとき、例えば、孫メッセージRDB2;pの構造情報を「0-0-0;RDB2;p」のように記述するものとする。ここで、「0-0-0」は、トランザクション種類ID、子メッセージが呼び出された順番、孫メッセージが呼び出された順番をハイフンでつなげたものであり、このRDB2;pがトランザクション種類0(の開始メッセージ)の0番目の子メッセージの0番目の孫メッセージであることを意味する。
また、このトランザクション全体の構造情報72を「0;HTTP;A、0-0;IIOP;i、0-0-0;RDB2;p」のように記述するものとする。
図19は、トランザクションの構造情報の第2の例を示す図である。図19に示す種類「1」のトランザクション73の階層構造では、開始メッセージHTTP;A(種別HTTP、処理内容A)が、メッセージIIOP;i(種別IIOP、処理内容i)とメッセージIIOP;j(種別IIOP、処理内容j)との2つのメッセージをこの順に呼び出す。また、メッセージIIOP;iが、メッセージRDB2;p(種別RDB2、処理内容p)とメッセージRDB2;q(種別RDB2、処理内容q)との2つのメッセージをこの順に呼び出す。さらに、メッセージIIOP;jが、メッセージRDB2;r(種別RDB2、処理内容r)を呼び出す。このように、トランザクション73では、開始メッセージHTTP;A(第0階層)に対して、メッセージIIOP;i、IIOP;j(第1階層)は子メッセージ、RDB2;p、RDB2;q、RDB2;r(第2階層)は孫メッセージに当たる。
このとき、例えば、孫メッセージRDB2;rの構造情報を「1-1-0;RDB2;r」のように記述するものとする。ここで、「1-1-0」は、トランザクション種類ID、子メッセージが呼び出された順番、孫メッセージが呼び出された順番をハイフンでつなげたものであり、このRDB2;rがトランザクション種類1(の開始メッセージ)の1番目の子メッセージの0番目の孫メッセージであることを意味する。
また、このトランザクション全体の構造情報74を「1;HTTP;A、1-0;IIOP;i、1-0-0;RDB2;p、1-0-1;RDB2;q、1-1;IIOP;j、1-1-0;RDB2;r」のように記述する。
以下に、このような構造情報に基づいて、具体的なトランザクション識別処理例について説明する。
[第1のトランザクション識別例]
図20は、メッセージ履歴の例を示す図である。このメッセージ履歴112には、メッセージID=0,1,・・・,40の41個のメッセージ情報が記録されている。各メッセージ情報は、「,」でデータが区切られており、各データは、左から順に「メッセージID」、「要求時刻」、「応答時刻」、「種別」、「処理内容」、「クライアントIPアドレス」、「サーバIPアドレス」を表している。
このようなメッセージ履歴112に基づいて、トランザクション識別部140は、各メッセージが開始メッセージか子孫メッセージかを判別する。そして、トランザクション識別部140は、開始メッセージを開始メッセージリストに登録し、子孫メッセージを子孫メッセージリストに登録する。
ここで、トランザクション識別に用いる制約条件を、以下のように定義する。
・開始メッセージ条件として、「種別がHTTPである」という条件を設定する。
・メッセージ間の呼び出し関係の条件として、「開始メッセージ候補の要求時刻から応答時刻までの期間は、子孫メッセージ候補の要求時刻から応答時刻までの期間を包含する」という条件を設定する。
これらの条件に基づいて、トランザクション識別部140は、メッセージ履歴内の各メッセージが、開始メッセージであるか子孫メッセージであるかを識別し、それぞれ開始メッセージリスト、子孫メッセージリストに登録する。
そして、トランザクション識別部140は、各開始メッセージに関連づけて、確定子孫メッセージリスト、未識別子孫メッセージリスト、および空の推定子孫メッセージリストを作成し、トランザクション識別状況を「未識別(U)」と設定し、開始メッセージ集合に登録する。また、トランザクション識別部140は、子孫メッセージに関連づけて、開始メッセージ候補リストを作成し、開始メッセージ識別状況を設定し、子孫メッセージ集合に登録する。なお、開始メッセージ識別状況の設定方法は、以下の通りである。
a.その開始メッセージ候補リストの要素数が1の場合は、その子孫メッセージについて開始メッセージが確定するので、その開始メッセージ識別状況を「確定(D)」にする。
b.その開始メッセージ候補リストの要素数が2以上の場合は、その子孫メッセージについて開始メッセージがまだ識別できないので、その開始メッセージ識別状況を「未識別(U)」にする。
c.その開始メッセージ候補リストの要素数が0の場合は、その子孫メッセージについて開始メッセージが存在しないので、分析対象外として子孫メッセージ集合に登録しない。
図21は、開始メッセージ集合の例を示す図である。この開始メッセージ集合Aには、図20に示したメッセージのうち、開始メッセージ条件を満たしたメッセージの情報が登録されている。メッセージの情報内の各データは「、」で区切られており、「メッセージID」、「要求時刻」、「応答時刻」、「種別」、「処理内容」、「{確定子孫メッセージリスト}」、「{推定子孫メッセージリスト}」、「{未識別子孫メッセージリスト}」、「トランザクション識別状況」の順でデータが並べられている。
図22は、子孫メッセージ集合の例を示す図である。この子孫メッセージ集合Bには、図20に示したメッセージのうち、開始メッセージ条件を満たしていないメッセージの情報が登録されている。メッセージの情報内の各データは「、」で区切られており、「メッセージID」、「要求時刻」、「応答時刻」、「種別」、「処理内容」、「{開始メッセージ候補リスト}」、「開始メッセージ識別状況」の順でデータが並べられている。
なお、図20に示すID「40」のメッセージは、開始メッセージ候補が存在しないため分析対象からは除外される。そのため、ID「40」のメッセージは、子孫メッセージ集合Bに登録されていない。
その後、トランザクション識別部140は、開始メッセージ集合Aに登録されたメッセージを順番に処理対象のメッセージkとする。そして、トランザクション識別部140は、メッセージkの未識別子孫メッセージリストが空ならばトランザクションが確定するので、そのメッセージkと確定子孫メッセージリストに登録されたメッセージによって確定トランザクションを構成する。
図23は、未識別子孫メッセージリストが空の開始メッセージの例を示す図である。この図では、開始メッセージ集合A内の未識別子孫メッセージリストが空の開始メッセージのみを示している。未識別子孫メッセージリストが空の開始メッセージの「{確定子孫メッセージリスト}」のフィールドを参照することで、子孫メッセージ集合Bから、未識別子孫メッセージリストが空の開始メッセージに関連する子孫メッセージを抽出できる。
図24は、未識別子孫メッセージリストが空の開始メッセージに関連する子孫メッセージの例を示す図である。この図では、子孫メッセージ集合B内のメッセージのうち、未識別子孫メッセージリストが空の開始メッセージに関連するもののみを示している。
図25は、確定トランザクションの構成結果を示す図である。この図には、図23、図24に示されたメッセージに基づいて確定したトランザクション71〜78が示されている。
この例では、各トランザクション71〜78の構成が、メッセージを要求側と応答側の情報に分けて2レコード1組で記述されている。要求側のレコードには、「トランザクションID」、「要求/応答時刻」、「種別」、「req」、「メッセージID」、「トランザクションの構造情報」、「処理内容」、「クライアントIPアドレス」、「サーバIPアドレス」、「(開始メッセージ識別状況)」の順でデータが並べられている。また、応答側のレコードには、「トランザクションID」、「応答時刻」、「種別」、「res」、「メッセージID」、「トランザクションの構造情報」の順でデータが並べられている。
このとき、トランザクション識別部140は、トランザクションの確定回数f(S)を数え上げる。その結果、処理内容がAであるHTTPメッセージと処理内容がpであるRDB2メッセージとからなるトランザクション71,72,74,75,77,78の確定回数f(HTTP;A,RDB2;p)=6が算出される。同様に、処理内容がAであるHTTPメッセージ、処理内容がpであるRDB2メッセージ、および処理内容がqであるRDB2メッセージからなるトランザクション73,76の確定回数f(HTTP;A,RDB2;p,RDB2;q)=2が算出される。
トランザクション71〜78が構成されると、トランザクション識別部140は、確定したトランザクション71〜78に含まれるメッセージを、開始メッセージ集合Aと子孫メッセージ集合Bから削除する。
図26は、確定トランザクションに属するメッセージ削除後の開始メッセージ集合を示す図である。開始メッセージ集合Aに残された各メッセージは、トランザクション識別状況が「未識別(U)」の状態である。
図27は、確定トランザクションに属するメッセージ削除後の子孫メッセージ集合を示す図である。子孫メッセージ集合Bに残されたメッセージには、開始メッセージ識別状況が「未識別(U)」のものが多数存在する。
その後、トランザクション識別部140は、推定トランザクションの識別処理を行う。具体的には、トランザクション識別部140は、開始メッセージ集合A内に残った各メッセージを処理対象のメッセージkとして、そのメッセージk、メッセージkの確定子孫メッセージリストに含まれるメッセージ、メッセージkの推定子孫メッセージリストに含まれるメッセージ、およびメッセージkの未識別子孫メッセージリストから選択される最大2個のメッセージの組み合わせによって、トランザクションを構成する。このとき、未識別子孫メッセージリストから選択されるメッセージの組み合わせの数に応じたトランザクションが構成される。そして、トランザクション識別部140は、構成された各トランザクションの中から、最も確からしいトランザクションを選択する。
この例では、トランザクションSの確からしさをh(S)=f(S)+0.2×g(S)と定義する(f(S)は確定回数、g(S)は推定回数)。トランザクション識別部140は、確からしさの値が最大のトランザクションをS1、2番目の値を持つトランザクションをS2で表す。
この例では、初期状態として、メッセージkとメッセージkの確定子孫メッセージリストで構成されるトランザクションをS1とし、ダミーのトランザクション(S#と表記する)をS2とする。S#の確からしさh(S#)=0.9とする。
最も確からしいトランザクションを選択する条件「h(S1)/h(S2)>閾値」において、閾値=2とする。
まず、ID「2」の開始メッセージに対する最も確からしいトランザクションの選択処理が行われる。ID「2」の開始メッセージは、確定子孫メッセージのIDが「3」、未識別子孫メッセージのIDが「5」である。従って、可能なメッセージの組み合わせは、(HTTP;A,RDB2;p)、あるいは(HTTP;A,RDB2;p,RDB2;q)である。
これらの組み合わせによって構成されるトランザクションの確からしさは、h(HTTP;A,RDB2;p)=6、h(HTTP;A,RDB2;p,RDB2;q)=2と計算される。このとき、最も確からしいトランザクションの確からしさと、2番目に確からしいトランザクションの確からしさの比は、(S1)/h(S2)=6/2=3となり、閾値2よりも大きい。
その結果、トランザクション識別部140は、推定トランザクションとして(HTTP;A,RDB2;p)を選択し、推定回数g(HTTP;A,RDB2;p)を1だけ増やす。
また、トランザクション識別部140は、ID「2」のメッセージのトランザクション識別状況を「識別(S)」に変える。
図28は、トランザクション識別状況変更後の開始メッセージ集合を示す図である。このように、開始メッセージに対するトランザクションが確定する毎に、トランザクション識別状況をSに変更することで、開始メッセージ集合A内での未処理のメッセージと処理済みのメッセージとを容易に判別できる。
以下同様に、ID「4」の開始メッセージについての推定トランザクションが構成される。具体的には、ID「4」の開始メッセージは、ID「6」の確定子孫メッセージおよびID「5」の未識別子孫メッセージを有している。従って、可能なメッセージの組み合わせは、(HTTP;A,RDB2;p)あるいは(HTTP;A,RDB2;q,RDB2;p)である。これらのトランザクションの確からしさは、h(HTTP;A,RDB2;p)=6.2、h(HTTP;A,RDB2;q,RDB2;p)=0と計算される。この場合、S1=(HTTP;A,RDB2;p),S2=S#になる。従って、h(S1)/h(S2)=6.2/0.9>2となり、推定トランザクションとして(HTTP;A,RDB2;p)が選択される。そして、トランザクション識別部140は、推定回数g(HTTP;A,RDB2;p)を1だけ増やす。さらに、トランザクション識別部140は、ID「4」のメッセージのトランザクション識別状況を「識別(S)」に変える。
次に、ID「12」の開始メッセージについての推定トランザクションが構成される。具体的には、開始メッセージ12は、ID「13」の確定子孫メッセージおよびID「15」の未識別子孫メッセージを有する。従って、可能なメッセージの組み合わせは、(HTTP;A,RDB2;p)あるいは(HTTP;A,RDB2;p,RDB2;p)である。これらのトランザクションの確からしさは、h(HTTP;A,RDB2;p)=6.4、h(HTTP;A,RDB2;p,RDB2;p)=0と計算される。この場合,S1=(HTTP;A,RDB2;p),S2=S#になる。従って、h(S1)/h(S2)=6.4/0.9>2となり、推定トランザクションとして(HTTP;A,RDB2;p)が選択される。そして、トランザクション識別部140は、推定回数g(HTTP;A,RDB2;p)を1だけ増やす。さらに、トランザクション識別部140は、ID「12」のメッセージのトランザクション識別状況を「識別(S)」に変える。
次に、ID「14」の開始メッセージについての推定トランザクションが構成される。具体的には、ID「14」の開始メッセージは,確定子孫メッセージを持たず、ID「15」の未識別子孫メッセージを有する。従って、可能なメッセージの組み合わせは、(HTTP;A)あるいは(HTTP;A,RDB2;p)である。これらのトランザクションの確からしさは、h(HTTP;A)=0、h(HTTP;A,RDB2;p)=6.6と計算される。この場合,S1=(HTTP;A,RDB2;p),S2=S#になる。従って、h(S1)/h(S2)=6.6/0.9>2となり、推定トランザクションとして(HTTP;A,RDB2;p)が選択される。そして、トランザクション識別部140は、推定回数g(HTTP;A,RDB2;p)を1だけ増やす。さらに、トランザクション識別部140は、ID「14」のメッセージのトランザクション識別状況を「識別(S)」に変えると共に、ID「15」のメッセージの開始メッセージ識別状況を「推定(E)」に変える。
図29は、開始メッセージ識別状況変更後の子孫メッセージ集合を示す図である。このように、子孫メッセージに対する開始メッセージが推定されると、開始メッセージ識別状況をEに変更され、開始メッセージが確定している子孫メッセージと区別される。
また、ID「14」の開始メッセージについて、ID「15」の未識別子孫メッセージが選択されたので、トランザクション識別部140は、開始メッセージ集合A内のID「14」のメッセージの情報において、ID「15」を未識別子孫メッセージリストから推定子孫メッセージリストに移動する。
さらに、トランザクション識別部140は、ID「15」の子孫メッセージの開始メッセージ候補リストを調べる。すると、開始メッセージ候補としてID「12」、「14」が登録されているので、選択されたID「14」の開始メッセージ以外の開始メッセージ候補(ID「12」)の情報において、未識別子孫メッセージリストからID「15」を削除する。
図30は、子孫のメッセージが推定された後の開始メッセージ集合を示す図である。ID「15」のメッセージが、ID「14」のメッセージの子孫と推定されたため、ID「14」のメッセージの情報では、ID「15」が未識別子孫メッセージリストから推定子孫メッセージリストに移動され、ID「12」のメッセージの情報では、ID「15」が未識別子孫メッセージリストから削除されている。
次に、ID「16」の開始メッセージについての推定トランザクションが構成される。ID「16」の開始メッセージは、ID「17」、「18」の確定子孫メッセージおよびID「20」の未識別子孫メッセージを有する。従って、可能なメッセージの組み合わせは、(HTTP;A,RDB2;p,RDB2;q)あるいは(HTTP;A,RDB2;p,RDB2;q,RDB2;p)である。これらのトランザクションの確からしさは、h(HTTP;A,RDB2;p,RDB2;q)=2、h(HTTP;A,RDB2;p,RDB2;q,RDB2;p)=0と計算される。この場合,S1=(HTTP;A,RDB2;p,RDB2;q),S2=S#になる。従って、h(S1)/h(S2)=2/0.9>2となり、推定トランザクションとして(HTTP;A,RDB2;p,RDB2;q)が選択される。そして、トランザクション識別部140は、推定回数g(HTTP;A,RDB2;p,RDB2;q)を1だけ増やす。さらに、トランザクション識別部140は、ID「16」のメッセージのトランザクション識別状況を「識別(S)」に変える。
次に、ID「19」の開始メッセージについての推定トランザクションが構成される。ID「19」の開始メッセージは、確定子孫メッセージを持たず、ID「20」の未識別子孫メッセージを有する。従って、可能なメッセージの組み合わせは、(HTTP;A)あるいは(HTTP;A,RDB2;p)である。これらのトランザクションの確からしさは、h(HTTP;A)=0、h(HTTP;A,RDB2;p)=6.8と計算される。この場合,S1=(HTTP;A,RDB2;p),S2=S#になる。従って、h(S1)/h(S2)=6.8/0.9>2となり、推定トランザクションとして(HTTP;A,RDB2;p)が選択される。そして、トランザクション識別部140は、推定回数g(HTTP;A,RDB2;p)を1だけ増やす。さらに、トランザクション識別部140は、ID「19」のメッセージのトランザクション識別状況を「識別(S)」に変えると共に、ID「20」のメッセージの開始メッセージ識別状況を「推定(E)」に変える。
このとき、トランザクション識別部140は、ID「19」の開始メッセージについて、ID「20」の未識別子孫メッセージが選択されたので、ID「20」のメッセージを未識別子孫メッセージリストから推定子孫メッセージリストに移動する。また、トランザクション識別部140は、ID「20」の子孫メッセージの開始メッセージ候補リストを調べると、ID「16」、ID「19」の開始メッセージ候補を有しているので、選択されたID「19」の開始メッセージ以外のID「16」の開始メッセージ候補の情報において、未識別子孫メッセージリストからID「20」を削除する。
次に、ID「30」のメッセージに対する最も確からしいトランザクションの選択が行われる。ID「30」の開始メッセージは、ID「31」、「37」の確定子孫メッセージ、ID「33」、「34」、「36」の未識別子孫メッセージを有する。開始メッセージと確定子孫メッセージ、および未識別子孫メッセージからの最大2個による可能なメッセージの組み合わせは下記の6通りになる。
1.(30,31,37)による(HTTP;A,RDB2;p,RDB2;q)
2.(30,31,33,37)あるいは(30,31,36,37)による(HTTP;A,RDB2;p,RDB2;p,RDB2;q)
3.(30,31,34,37)による(HTTP;A,RDB2;p,RDB2;q,RDB2;q)
4.(30,31,33,34,37)による(HTTP;A,RDB2;p,RDB2;p,RDB2;q,RDB2;q)
5.(30,31,33,36,37)による(HTTP;A,RDB2;p,RDB2;p,RDB2;p,RDB2;q)
6.(30,31,34,36,37)による(HTTP;A,RDB2;p,RDB2;q,RDB2;p,RDB2;q)
これらのトランザクションの確からしさは、h(HTTP;A,RDB2;p,RDB2;q)=2.2、それ以外=0と計算される。従って、S1=(HTTP;A,RDB2;p,RDB2;q),S2=S#となる。このとき,h(S1)/h(S2)=2.2/0.9>2なので,推定トランザクションとして(HTTP;A,RDB2;p,RDB2;q)が選択される。そして、トランザクション識別部140は、推定回数g(HTTP;A,RDB2;p,RDB2;q)を1だけ増やす。また、トランザクション識別部140は、ID「30」のメッセージのトランザクション識別状況を「識別(S)」に変える。
次に、ID「32」のメッセージに対する最も確からしいトランザクションの選択が行われる。ID「32」の開始メッセージは、確定子孫メッセージを持たず、ID「33」、「34」の未識別子孫メッセージを有する。従って、可能なメッセージの組み合わせは、(HTTP;A)、(HTTP;A,RDB2;p)、(HTTP;A,RDB2;q)、(HTTP;A,RDB2;p,RDB2;q)である。トランザクションSの確からしさは,h(HTTP;A,RDB2;p,RDB2;q)=2.4、それ以外は0と計算される。従って、S1=(HTTP;A,RDB2;p,RDB2;q)、S2=S#となる。このとき、h(S1)/h(S2)=2.4/0.9>2なので、推定トランザクションとして(HTTP;A,RDB2;p,RDB2;q)が選択される。そして、トランザクション識別部140は、推定回数g(HTTP;A,RDB2;p,RDB2;q)を1だけ増やす。さらに、トランザクション識別部140は、ID「32」のメッセージのトランザクション識別状況を「識別(S)」に変えると共に、ID「33」、「34」のメッセージの開始メッセージ識別状況を「推定(E)」に変える。
このとき、トランザクション識別部140は、以下のように開始メッセージ集合Aを更新する。ID「32」の開始メッセージについて、ID「33」、「34」の未識別子孫メッセージが選択されたので、ID「33」、「34」のメッセージを未識別子孫メッセージリストから推定子孫メッセージリストに移動する。次に、トランザクション識別部140は、ID「33」、「34」の子孫メッセージの各開始メッセージ候補リストを調べる。すると、それぞれID「30」、「32」の開始メッセージ候補を有しているので、トランザクション識別部140は、選択されたID「32」の開始メッセージ以外のID「30」の開始メッセージ候補について、未識別子孫メッセージリストからID「33」、「34」を削除する。
次に、ID「35」のメッセージに対する最も確からしいトランザクションの選択処理が行われる。ID「35」の開始メッセージは、確定子孫メッセージを持たず、ID「36」の未識別子孫メッセージを有している。従って、可能なメッセージの組み合わせは、(HTTP;A)あるいは(HTTP;A,RDB2;p)である。これらのトランザクションの確からしさは、h(HTTP;A)=0,h(HTTP;A,RDB2;p)=7.0と計算される。この場合,S1=(HTTP;A,RDB2;p),S2=S#になる。従って、h(S1)/h(S2)=7.0/0.9>2であり、推定トランザクションとして(HTTP;A,RDB2;p)が選択される。そして、トランザクション識別部140は、推定回数g(HTTP;A,RDB2;p)を1だけ増やす。さらに、トランザクション識別部140は、ID「35」のメッセージのトランザクション識別状況を「識別(S)」に変更し、ID「36」のメッセージの開始メッセージ識別状況を「推定(E)」に変更する。
以上のようにして、開始メッセージ集合Aに含まれる各メッセージに応じて、最も確からしいトランザクションが選択される。
図31は、最も確からしいトランザクションの選択処理で選択されたトランザクションを示す図である。最も確からしいトランザクションの選択処理によって、図31に示すようなトランザクション81〜89が生成される。
トランザクション81は、ID「2」の開始メッセージとID「3」の子孫メッセージとにより構成された推定トランザクションである。トランザクション82は、ID「4」の開始メッセージとID「6」の子孫メッセージとにより構成された推定トランザクションである。トランザクション83は、ID「12」の開始メッセージとID「13」の子孫メッセージとにより構成された推定トランザクションである。トランザクション84は、ID「14」の開始メッセージとID「15」の子孫メッセージとにより構成された推定トランザクションである。トランザクション85は、ID「16」の開始メッセージとID「17」、「18」の子孫メッセージとにより構成された推定トランザクションである。トランザクション86は、ID「19」の開始メッセージとID「20」の子孫メッセージとにより構成された推定トランザクションである。トランザクション87は、ID「30」の開始メッセージとID「31」、「37」の子孫メッセージとにより構成された推定トランザクションである。トランザクション88は、ID「32」の開始メッセージとID「33」、「34」の子孫メッセージとにより構成された推定トランザクションである。トランザクション89は、ID「35」の開始メッセージとID「36」の子孫メッセージとにより構成された推定トランザクションである。
図32は、最も確からしいトランザクションの選択処理終了後の開始メッセージ集合を示す図である。このように、最も確からしいトランザクションの選択処理が終了すると、開始メッセージ集合A内の各メッセージにおけるトランザクション識別状況は、全て「識別(S)」となる。
図33は、最も確からしいトランザクションの選択処理終了後の子孫メッセージ集合を示す図である。このように、開始メッセージ識別状況が「未識別(U)」であったメッセージのうち、生成された推定トランザクションに含まれるメッセージの開始メッセージ識別状況が「推定(E)」に変更されている。
次に、トランザクション識別部140は、推定トランザクションの置換処理を行う。推定トランザクションの置換処理では、子孫メッセージ集合Bの中で、開始メッセージ識別状況が「未識別(U)」のメッセージ(未識別子孫メッセージ)について推定トランザクションの置換を試みる。この例では、置換トランザクション候補S*の置換条件「h(S*)>閾値」について、閾値=0を用いる。なお、初期値を、S*=S#、h(S*)=h(S#)=0とする。
図33に示す状況では、子孫メッセージ集合Bの中で未識別なのはID「5」の子孫メッセージである。トランザクション識別部140は、そのメッセージの開始メッセージ候補として設定されているID「2」、「4」のメッセージについて、以下のように置換トランザクション候補を構成する。
(a)ID「2」の開始メッセージが属する推定トランザクションは、S1=(HTTP;A,RDB2;p)である。これにID「5」のメッセージを組み合わせた置換トランザクション候補は、S1*=(HTTP;A,RDB2;p,RDB2;q)である。
(b)開始メッセージ4が属する推定トランザクションは、S2=(HTTP;A,RDB2;p)である。これにID「5」のメッセージを組み合わせた置換トランザクション候補は、S2*=(HTTP;A,RDB2;q,RDB2;p)である。
これらの置換トランザクション候補の確からしさは、h(S1*)=2.6,h(S2*)=0と計算される。確からしさが最大のS1*は、置換条件h(S1*)>0を満たすので、トランザクション識別部140は、推定トランザクションS1をS1*に置換する。また、トランザクション識別部140は、S1の推定回数g(HTTP;A,RDB2;p)を1だけ減らし、S1*の推定回数g(HTTP;A,RDB2;p;RDB2;q)を1だけ増やす。さらに、トランザクション識別部140は、ID「5」の開始メッセージ識別状況を「置換(F)」に変更する。
図34は、推定トランザクション置換処理後の子孫メッセージ集合を示す図である。図34に示すように、推定トランザクションの置換処理によって推定トランザクションに追加されたメッセージの開始メッセージ識別状況には、「置換(F)」が設定される。
図35は、推定トランザクション置換処理によって構成された置換トランザクションを示す図である。元のトランザクション81(推定トランザクション)に、ID「5」のメッセージが追加されることで、トランザクション81a(置換トランザクション)が生成される。
その後、トランザクション識別部140は、ID「2」の開始メッセージについて、ID「5」の未識別子孫メッセージが新たに選択されたので、ID「5」のメッセージを未識別子孫メッセージリストから推定子孫メッセージリストに移動する。また、トランザクション識別部140は、ID「5」の子孫メッセージの開始メッセージ候補リストを調べると、ID「2」、「4」の開始メッセージ候補を有しているため、選択されたID「2」以外のID「4」の開始メッセージについて、未識別子孫メッセージリストからID「5」を削除する。
図36は、推定トランザクション置換処理後の開始メッセージ集合を示す図である。図36の開始メッセージ集合Aでは、全てのメッセージに関して、未識別子孫メッセージリストが空となっている。すなわち、識別不能の子孫メッセージが存在していないことを示す。
以上の処理により、全てのメッセージが識別されたので、トランザクション識別処理が終了し、識別結果が出力される。
図37は、トランザクション識別結果を示す第1の図である。図38は、トランザクション識別結果を示す第2の図である。図37にはトランザクション識別結果90の前半部分が示されており、図38にはトランザクション識別結果90の後半部分が示されている。この例では、トランザクション識別結果90には、確定トランザクション、推定トランザクション、および置換トランザクションが識別された順に登録されている。
なお、トランザクション識別結果として、トランザクションの開始時刻順に各トランザクションを並べて出力することもできる。
また、トランザクションの種類別に識別結果を出力することもできる。
図39は、種類別のトランザクション識別結果を示す図である。このトランザクション識別結果91において、「0;HTTP;A,0-0;RDB2;p[11/6/5/7.0]」は、トランザクション種類ID0のトランザクションを示している。また、「1;HTTP;A,1-0;RDB2;p,1-1;RDB2;q[6/2/4/2.8]」は、トランザクション種類ID1のトランザクションを示している。
図40は、トランザクション種類ID0のトランザクションを示す図である。このトランザクション92は、2階層のトランザクションである。ここで、図39に示す「0;HTTP;A,0-0;RDB2;p[11/6/5/7.0]」における[11/6/5/7.0]の部分は、メッセージ履歴内で11回識別され、そのうち6回は確定、5回は推定であり、トランザクションの確からしさ=6+0.2*5=7.0であることを示している。
図41は、トランザクション種類ID1のトランザクションを示す図である。このトランザクション93は、2階層のトランザクションである。ここで、図39に示す「1;HTTP;A,1-0;RDB2;p,1-1;RDB2;q[6/2/4/2.8]」における[6/2/4/2.8]の部分は、メッセージ履歴内で6回識別され、そのうち2回は確定、4回は推定であり、トランザクションの確からしさ=2+0.2*4=2.8であることを示している。
[第2のトランザクション識別例]
次に、メッセージ情報に応答内容を含む場合のトランザクション識別例について説明する。この例では、メッセージ情報にHTTPのステータスコード等の応答内容が含まれる。
図42は、応答内容を含むメッセージのメッセージ履歴を示す図である。図42に示すメッセージ履歴112に登録されたメッセージは、データが「メッセージID」、「要求時刻」、「応答時刻」、「種別」、「処理内容」、「応答内容」、「クライアントIPアドレス」、「サーバIPアドレス」の順で並べられている。ここで、応答内容は、要求に応じた処理の結果が示される。例えば、HTTPのメッセージでは、正常に処理された場合、応答内容として「OK」が設定され、正常に処理できなかった場合、応答内容として「NG」が設定される。また、RDB2のメッセージでは、正常に処理された場合にのみ、応答内容として「OK」が設定される。
このようなメッセージから、まず確定トランザクションが構成される。具体的には、開始メッセージ集合Aの各メッセージkについて、未識別子孫メッセージリストが空であれば、そのメッセージkを開始メッセージとしたトランザクションが確定する。この場合、メッセージkと、そのメッセージkの確定子孫リストに含まれる各メッセージとによって、確定トランザクションが構成される。
図43は、確定トランザクションの構成結果を示す図である。この図には、図42に示されたメッセージに基づいて確定したトランザクション211〜218が示されている。このトランザクション211〜218のデータフォーマットは、要求側のレコードについては、図25に示した例と同様である。応答側のレコードは、「トランザクションID」、「応答時刻」、「種別」、「res」、「メッセージID」、「トランザクションの構造情報」、「応答内容」の順でデータが並べられている。このように、構成されたトランザクション内に「応答内容」のデータが追加されている。
確定トランザクションを構成すると、トランザクション識別部140は、トランザクション確定回数f(S)を数えあげる。このとき、トランザクションを構成するメッセージの種別、処置内容、および応答内容が一致するトランザクションを、同じトランザクションとしてカウントする。その結果、f(HTTP;A;OK,RDB2;p;ok)=5、f(HTTP;A;OK,RDB2;p;ok,RDB2;q;ok)=1、f(HTTP;A;NG,RDB2;p;ok)=1、f(HTTP;A;NG,RDB2;p;ok,RDB2;q;ok)=1と算出される。
その後、推定トランザクション識別処理が行われる。すなわち、トランザクション識別部140は、確定トランザクションに属する開始メッセージと子孫メッセージとを、開始メッセージ集合Aと子孫メッセージ集合Bとからそれぞれ削除する。
図44は、確定トランザクションに属する開始メッセージ削除後の開始メッセージ集合を示す図である。開始メッセージ集合Aに残された各メッセージは、トランザクション識別状況が「未識別(U)」の状態である。
図45は、確定トランザクションに属する子孫メッセージ削除後の子孫メッセージ集合を示す図である。子孫メッセージ集合Bに残されたメッセージには、開始メッセージ識別状況が「未識別(U)」のものが多数存在する。
次に、第1のトランザクション識別例と同様に、最も確からしいトランザクションの選択が行われる。
まず、ID「2」の開始メッセージに対する最も確からしいトランザクションの選択処理が行われる。ID「2」の開始メッセージは、ID「3」の確定子孫メッセージおよびID「5」の未識別子孫メッセージを有する。従って、可能なメッセージの組み合わせは、(HTTP;A;OK,RDB2;p;ok)あるいは(HTTP;A;OK,RDB2;p;ok,RDB2;q;ok)である。これらのトランザクションの確からしさは、h(HTTP;A;OK,RDB2;p;ok)=5、h(HTTP;A;OK,RDB2;p;ok,RDB2;q;ok)=1と計算される。従って、h(S1)/h(S2)=5/1>2であり、推定トランザクションとして(HTTP;A;OK,RDB2;p;ok)が選択され、トランザクション識別部140は、推定回数g(HTTP;A;OK,RDB2;p;ok)を1だけ増やす。さらに、トランザクション識別部140は、ID「2」のメッセージのトランザクション識別状況を「識別(S)」に変える。
次に、ID「4」の開始メッセージに対する最も確からしいトランザクションの選択処理が行われる。ID「4」の開始メッセージは、ID「6」の確定子孫メッセージおよびID「5」の未識別子孫メッセージを有する。従って、可能なメッセージの組み合わせは、(HTTP;A;NG,RDB2;p;ok)あるいは(HTTP;A;NG,RDB2;q;ok,RDB2;p;ok)である。これらのトランザクションの確からしさは、h(HTTP;A;NG,RDB2;p;ok)=1、h(HTTP;A;NG,RDB2;q;ok,RDB2;p;ok)=0と計算される。この場合,S1=(HTTP;A;OK,RDB2;p;ok),S2=S#になる。従って、h(S1)/h(S2)=1/0.9<2なので、トランザクション識別部140は、推定トランザクションを選択しない。
次に、ID「12」の開始メッセージに対する最も確からしいトランザクションの選択処理が行われる。ID「12」の開始メッセージは、ID「13」の確定子孫メッセージおよびID「15」の未識別子孫メッセージを有する。従って、可能なメッセージの組み合わせは、(HTTP;A;OK,RDB2;p;ok)あるいは、(HTTP;A;OK,RDB2;p;ok,RDB2;p;ok)である。これらのトランザクションの確からしさは、h(HTTP;A;OK,RDB2;p;ok)=5.2、h(HTTP;A;OK,RDB2;p;ok,RDB2;p;ok)=0と計算される。この場合、S1=(HTTP;A;OK,RDB2;p;ok)、S2=S#になる。従って、h(S1)/h(S2)=5.2/0.9>2となり、推定トランザクションとして(HTTP;A;OK,RDB2;p;ok)が選択される。そして、トランザクション識別部140は、推定回数g(HTTP;A;OK,RDB2;p;ok)を1だけ増やす。さらに、トランザクション識別部140は、ID「12」のメッセージのトランザクション識別状況を「識別(S)」に変える。
次に、ID「14」の開始メッセージに対する最も確からしいトランザクションの選択処理が行われる。ID「14」の開始メッセージは、確定子孫メッセージを持たず、ID「15」の未識別子孫メッセージを有する。従って、可能なメッセージの組み合わせは、(HTTP;A;OK)あるいは(HTTP;A;OK,RDB2;p;ok)である。これらのトランザクションの確からしさは、h(HTTP;A;OK)=0、h(HTTP;A;OK,RDB2;p;ok)=5.4と計算される。この場合、S1=(HTTP;A;OK,RDB2;p;ok),S2=S#になる。従って、h(S1)/h(S2)=5.4/0.9>2なので、推定トランザクションとして(HTTP;A;OK,RDB2;p;ok)が選択される。そして、トランザクション識別部140は、推定回数g(HTTP;A;OK,RDB2;p;ok)を1だけ増やす。さらに、トランザクション識別部140は、ID「14」のメッセージのトランザクション識別状況を「識別(S)」に変えると共に、ID「15」のメッセージの開始メッセージ識別状況を「推定(E)」に変える。
ここで、ID「14」の開始メッセージについて、ID「15」の未識別子孫メッセージが選択されたので、トランザクション識別部140は、ID「15」を未識別子孫メッセージリストから推定子孫メッセージリストに移動する。次に、トランザクション識別部140は、ID「15」の子孫メッセージの開始メッセージ候補リストを調べる。すると、ID「12」、「14」を開始メッセージ候補として持っているので、トランザクション識別部140は、選択されたID「14」の開始メッセージ以外のID「12」の開始メッセージ候補について、未識別子孫メッセージリストからID「15」を削除する。
次に、ID「16」の開始メッセージに対する最も確からしいトランザクションの選択処理が行われる。ID「16」の開始メッセージは、ID「17」、「18」の確定子孫メッセージおよびID「20」の未識別子孫メッセージを有する。従って、可能なメッセージの組み合わせは、(HTTP;A;OK,RDB2;p;ok,RDB2;q;ok)あるいは(HTTP;A;OK,RDB2;p;ok,RDB2;q;ok,RDB2;p;ok)である。これらのトランザクションの確からしさは、h(HTTP;A;OK,RDB2;p;ok,RDB2;q;ok)=1、h(HTTP;A;OK,RDB2;p;ok,RDB2;q;ok,RDB2;p;ok)=0と計算される。この場合、S1=(HTTP;A,RDB2;p,RDB2;q)、S2=S#になる。従って、h(S1)/h(S2)=1/0.9<2となり、トランザクション識別部140は、推定トランザクションを選択しない。
次に、ID「19」の開始メッセージに対する最も確からしいトランザクションの選択処理が行われる。ID「19」の開始メッセージは、確定子孫メッセージを持たず、ID「20」の未識別子孫メッセージを有する。従って、可能なメッセージの組み合わせは、(HTTP;A;OK)あるいは(HTTP;A;OK,RDB2;p;ok)である。これらのトランザクションの確からしさは、h(HTTP;A;OK)=0、h(HTTP;A;OK,RDB2;p;ok)=5.6と計算される。この場合、S1=(HTTP;A;OK,RDB2;p;ok)、S2=S#になる。従って、h(S1)/h(S2)=5.6/0.9>2となり、推定トランザクションとして(HTTP;A;OK,RDB2;p;ok)が選択される。そこで、トランザクション識別部140は、推定回数g(HTTP;A;OK,RDB2;p;ok)を1だけ増やす。さらに、トランザクション識別部140は、ID「19」のメッセージのトランザクション識別状況を「識別(S)」に変えると共に、ID「20」のメッセージの開始メッセージ識別状況を「推定(E)」に変える。
ここで、ID「19」の開始メッセージについて、ID「20」の未識別子孫メッセージが選択されたので、トランザクション識別部140は、ID「20」のメッセージを未識別子孫メッセージリストから推定子孫メッセージリストに移動する。次に、ID「20」の子孫メッセージの開始メッセージ候補リストを調べると、ID「16」、「19」の開始メッセージ候補を有しているので、トランザクション識別部140は、選択されたID「19」の開始メッセージ以外のID「16」の開始メッセージ候補について、未識別子孫メッセージリストからID「20」を削除する。
次に、ID「30」の開始メッセージに対する最も確からしいトランザクションの選択処理が行われる。ID「30」の開始メッセージは、ID「31」、「37」の確定子孫メッセージID「33」、「34」、「36」の未識別子孫メッセージを有する。開始メッセージと確定子孫メッセージ、および未識別子孫メッセージから選択された最大2個のメッセージによる可能なメッセージの組み合わせは、下記の6通りになる。
1.(30,31,37)による(HTTP;A;OK,RDB2;p;ok,RDB2;q,ok)
2.(30,31,33,37)あるいは(30,31,36,37)による(HTTP;A;OK,RDB2;p;ok,RDB2;p;ok,RDB2;q;ok)
3.(30,31,34,37)による(HTTP;A;OK,RDB2;p;ok,RDB2;q;ok,RDB2;q;ok)
4.(30,31,33,34,37)による(HTTP;A;OK,RDB2;p;ok,RDB2;p;ok,RDB2;q;ok,RDB2;q;ok)
5.(30,31,33,36,37)による(HTTP;A;OK,RDB2;p;ok,RDB2;p;ok,RDB2;p;ok,RDB2;q;ok)
6.(30,31,34,36,37)による(HTTP;A;OK,RDB2;p;ok,RDB2;q;ok,RDB2;p;ok,RDB2;q;ok)
ここで、トランザクションSの確からしさは、h(HTTP;A;OK,RDB2;p;ok,RDB2;q;ok)=2.2、それ以外=0と計算される。従って、S1=(HTTP;A;OK,RDB2;p;ok,RDB2;q;ok)、S2=S#となる。このとき、h(S1)/h(S2)=1/0.9<2なので、推定トランザクションが選択されない。
次に、ID「32」の開始メッセージに対する最も確からしいトランザクションの選択処理が行われる。ID「32」の開始メッセージは、確定子孫メッセージを持たず、ID「33」、「34」の未識別子孫メッセージを有する。従って、可能なメッセージの組み合わせは、(HTTP;A;NG)、(HTTP;A;NG,RDB2;p;ok)、(HTTP;A;NG,RDB2;q;ok)、あるいは(HTTP;A;NG,RDB2;p;ok,RDB2;q;ok)である。トランザクションSの確からしさは、h(HTTP;A;NG,RDB2;p;ok,RDB2;q;ok)=1、それ以外=0と計算される。従って、S1=(HTTP;A,RDB2;p,RDB2;q)、S2=S#となる。このとき、h(S1)/h(S2)=1/0.9<2となり、トランザクション識別部140は、推定トランザクションを選択しない。
次に、ID「35」の開始メッセージに対する最も確からしいトランザクションの選択処理が行われる。ID「35」の開始メッセージは、確定子孫メッセージを持たず、ID「36」の未識別子孫メッセージを有する。従って、可能なメッセージの組み合わせは、(HTTP;A;OK)あるいは(HTTP;A;OK,RDB2;p;ok)である。これらのトランザクションの確からしさは、h(HTTP;A;OK)=0、h(HTTP;A;OK,RDB2;p;ok)=5.8と計算される。この場合、S1=(HTTP;A;OK,RDB2;p;ok)、S2=S#になる。従って、h(S1)/h(S2)=5.8/0.9>2なので、推定トランザクションとして(HTTP;A;OK,RDB2;p;ok)が選択される。そして、トランザクション識別部140は、推定回数g(HTTP;A;OK,RDB2;p;ok)を1だけ増やす。さらに、トランザクション識別部140は、ID「35」のメッセージのトランザクション識別状況を「識別(S)」に変え、ID「36」のメッセージの開始メッセージ識別状況を「推定(E)」に変える。
ここで、ID「35」の開始メッセージについて、ID「36」の未識別子孫メッセージが選択されたので、トランザクション識別部140は、ID「36」のメッセージを未識別子孫メッセージリストから推定子孫メッセージリストに移動する。つぎに、ID「36」の子孫メッセージの開始メッセージ候補リストを調べると、ID「30」、「35」の開始メッセージ候補を有しているので、選択されたID「35」の開始メッセージ以外のID「30」の開始メッセージ候補について、未識別子孫メッセージリストからID36を削除する。
以上で、各開始メッセージに対して、推定トランザクション識別処理が一回ずつ行われたことになる。
図46は、推定トランザクション識別処理を1回ずつ行った後の開始メッセージ集合を示す図である。図46に示すように、この例では、トランザクション識別状況が「未識別(U)」の開始メッセージが複数存在している。
図47は、推定トランザクション識別処理を1回ずつ行った後の子孫メッセージ集合を示す図である。推定トランザクションに含まれるメッセージは、開始メッセージ識別状況が「推定(E)」とされている。
このとき、トランザクション識別終了条件を満たしていない。そこで、トランザクション識別部140は、トランザクション識別状況が「未識別(U)」の開始メッセージに対して、推定トランザクション識別を繰り返し実行する。具体的には、ID「4」、「16」、「30」、「32」の開始メッセージのトランザクション識別状況が「未識別(U)」であるため、これらのメッセージについて、再び推定トランザクションの識別を試みられる。
まず、ID「4」の開始メッセージについて、可能なメッセージの組み合わせによって構成されるトランザクション(HTTP;A;NG,RDB2;q;ok)あるいは(HTTP;A;NG,RDB2;q;ok,RDB2;p;ok)の確からしさは、いずれも所定の閾値に達しない。そのため、推定トランザクションが選択されない。
次に、トランザクション識別部140は、ID「16」の開始メッセージについて、推定トランザクション識別処理を行う。ところで、ID「16」の開始メッセージの未識別子孫メッセージリストには、初期段階ではID「20」が設定されていた(図44参照)が、ID「19」の開始メッセージに応じた推定トランザクションが選択されたときに、そのID「20」が削除されている。その結果、ID「16」の開始メッセージにおける未識別子孫メッセージリストが空になっている。そこで、トランザクション識別部140は、ID「17」、「18」の確定子孫メッセージとの組み合わせによって構成されるトランザクション(HTTP;A;OK,RDB2;p;ok,RDB2;q;ok)を推定トランザクションとして選択する。そして、トランザクション識別部140は、推定回数g(HTTP;A;OK,RDB2;p;ok,RDB2;q;ok)を1だけ増やす。また、トランザクション識別部140は、ID「16」のメッセージのトランザクション識別状況を「識別(S)」に変える。
以降、同様にトランザクション識別部140は、ID「30」、「32」の開始メッセージについて、推定トランザクション識別処理を行う。ID「30」の開始メッセージについては、可能なメッセージの組み合わせによって構成されるトランザクションの確からしさがいずれも所定の閾値に達しない。そのため、推定トランザクションは選択されない。また、ID「32」の開始メッセージについては、可能なメッセージの組み合わせによって構成されるトランザクションの確からしさが、いずれも所定の閾値に達しない。そのため、推定トランザクションは選択されない。
このような推定トランザクションの識別の繰り返しが行われる。すると、これ以上新たに識別されるメッセージの数は増えないので、推定トランザクションの識別処理が終了する。
図48は、推定トランザクションの識別処理によって生成された推定トランザクションを示す図である。最も確からしいトランザクションが選択されることによって、図48に示すようなトランザクション221〜226が生成される。
次に、トランザクション識別部140は、推定トランザクションの置換処理を行う。図47に示す子孫メッセージ集合Bを参照すると、開始メッセージ識別状況が「未識別(U)」なのは、ID「5」、「33」、「34」の子孫メッセージである。そこで、トランザクション識別部140は、これらの子孫メッセージを対象として、推定トランザクションの置換処理を試みる。
トランザクション識別部140は、まず、ID「5」の子孫メッセージについて、推定トランザクションの置換処理を行う。ID「5」の子孫メッセージは、ID「2」、「4」の開始メッセージ候補を有している。そこで、トランザクション識別部140は、以下のように置換トランザクション候補を構成する。
(a)ID「2」の開始メッセージが属する推定トランザクションは、S1=(HTTP;A;OK,RDB2;p;ok)である。これにID「5」のメッセージを組み合わせた置換トランザクション候補はS1*=(HTTP;A;OK,RDB2;p;ok,RDB2;q;ok)となる。
(b)ID「4」の開始メッセージはトランザクション未識別であり、ID「4」の開始メッセージ、その確定子孫メッセージ(ID「6」のメッセージ)、およびID「5」のメッセージを組み合わせた置換トランザクション候補はS2*=(HTTP;A;NG,RDB2;q;ok,RDB2;p;ok)である。
これらの置換トランザクション候補の確からしさは、h(S1*)=1、h(S2*)=0と計算される。確からしさが最大のS1*は、置換条件h(S1*)>0を満たす。そこで、トランザクション識別部140は、推定トランザクションS1をS1*に置換する。そして、トランザクション識別部140は、S1の推定回数g(HTTP;A;OK,RDB2;p;ok)を1だけ減らし、S1*の推定回数g(HTTP;A;OK,RDB2;p;ok,RDB2;q;ok)を1だけ増やす。さらに、トランザクション識別部140は、ID「5」のメッセージの開始メッセージ識別状況を「置換(F)」に変える。
図49は、推定トランザクション置換処理によって構成された置換トランザクションを示す図である。元のトランザクション221(推定トランザクション)に、ID「5」のメッセージが追加されることで、トランザクション221a(置換トランザクション)が生成される。
その後、トランザクション識別部140は、ID「2」の開始メッセージについて、ID「5」の未識別子孫メッセージが新たに選択されたので、ID「5」のメッセージを未識別子孫メッセージリストから推定子孫メッセージリストに移動する。また、トランザクション識別部140は、ID「5」の子孫メッセージの開始メッセージ候補リストを調べると、ID「2」、「4」の開始メッセージ候補を有しているため、選択されたID「2」以外のID「4」の開始メッセージについて、未識別子孫メッセージリストからID「5」を削除する。
次に、トランザクション識別部140は、ID「33」の子孫メッセージについて、推定トランザクションの置換処理を行う。ID「33」の未識別子孫メッセージは、ID「30」、「32」の開始メッセージ候補を有している。そこで、トランザクション識別部140は、以下のように置換トランザクション候補を構成する。
(a)ID「30」の開始メッセージはトランザクション未識別であり、ID「30」の開始メッセージ、その確定子孫メッセージ(ID「31」、「37」のメッセージ)、およびID「33」のメッセージを組み合わせた置換トランザクション候補はS1*=(HTTP;A;OK,RDB2;p;ok,RDB2;p;ok;RDB2;q;ok)となる。
(b)ID「32」の開始メッセージはトランザクション未識別であり、ID「32」の開始メッセージとID「33」のメッセージと組み合わせた置換トランザクション候補はS2*=(HTTP;A;NG,RDB2;p;ok)となる。
これらの置換トランザクション候補の確からしさは、h(S1*)=0、h(S2*)=1と計算される。確からしさが最大のS2*は、置換条件h(S2*)>0を満たすので、トランザクション識別部140は、ID「32」の開始メッセージが属する置換トランザクションをS2*にして、S2*の推定回数g(HTTP;A;NG,RDB2;p;ok)を1だけ増やす。また、トランザクション識別部140は、ID「32」のメッセージのトランザクション識別状況を「識別(S)」に変えると共に、ID「33」のメッセージの開始メッセージ識別状況を「置換(F)」に変える。
図50は、推定トランザクション置換処理によって新たに生成されたトランザクションを示す図である。推定トランザクション置換処理により、図50に示すようなトランザクション227(置換トランザクション)が生成される。この例では、ID「32」の開始メッセージに関して、推定トランザクションが生成されていないため、推定トランザクション置換処理において新たに生成されている。
ここで、トランザクション識別部140は、ID「32」の開始メッセージについて、ID「33」の未識別子孫メッセージが新たに選択されたので、ID「33」のメッセージを未識別子孫メッセージリストから推定子孫メッセージリストに移動する。また、トランザクション識別部140は、ID「33」の子孫メッセージの開始メッセージ候補リストを調べ、ID「30」、「32」の開始メッセージ候補があることを確認する。そこで、トランザクション識別部140は、選択されたID「32」以外のID「30」の開始メッセージ候補について、未識別子孫メッセージリストからID「33」を削除する。
次に、トランザクション識別部140は、ID「34」の子孫メッセージについて、推定トランザクションの置換処理を行う。ID「34」の未識別子孫メッセージについて、その各開始メッセージ候補(ID「30」、「32」)について、下記のように置換トランザクション候補を構成する。
(a)ID「30」の開始メッセージはトランザクション未識別であり、ID「30」の開始メッセージとその確定子孫メッセージ(ID「31」、「37」)とID「34」のメッセージを組み合わせた置換トランザクション候補はS1*=(HTTP;A;OK,RDB2;p;ok,RDB2;q;ok;RDB2;q;ok)である。
(b)ID「32」の開始メッセージが属する推定トランザクションは、S2=(HTTP;A;NG,RDB2;p;ok)である。これにID「34」のメッセージを組み合わせた置換トランザクション候補はS2*=(HTTP;A;NG,RDB2;p;ok,RDB2;q;ok)である。
これらの置換トランザクション候補の確からしさはh(S1*)=0、h(S2*)=1と計算される。確からしさが最大のS2*は、置換条件h(S2*)>0を満たすので、トランザクション識別部140は、ID「32」の開始メッセージが属する推定トランザクションS2をS2*に置換する。また、トランザクション識別部140は、S2の推定回数g(HTTP;A;NG,RDB2;p;ok)を1だけ減らし、S2*の推定回数g(HTTP;A;NG,RDB2;p;ok,RDB2;q;ok)を1だけ増やす。さらに、トランザクション識別部140は、ID「34」のメッセージの開始メッセージ識別状況を「置換(F)」に変える。
図51は、推定トランザクション置換処理によって構成された置換トランザクションを示す図である。元のトランザクション227(推定トランザクション)に、ID「34」のメッセージが追加されることで、トランザクション227a(置換推定トランザクション)が生成される。
その後、トランザクション識別部140は、ID「32」の開始メッセージについて、ID「34」の未識別子孫メッセージが新たに選択されたので、ID「34」のメッセージを未識別子孫メッセージリストから推定子孫メッセージリストに移動する。次に、トランザクション識別部140は、ID「34」の子孫メッセージの開始メッセージ候補リストを調べる。すると、ID「30」、「32」の開始メッセージ候補を有しているので、選択されたID「32」開始メッセージ以外のID「30」のメッセージにおける識別子孫メッセージリストからID「34」を削除する。
これによりすべての未識別子孫メッセージが識別されたので、トランザクション識別部140は推定トランザクションの置換処理を終了する。
トランザクション識別部140は、推定トランザクションの置換処理の終了後、トランザクション識別状況が「未識別(U)」の開始メッセージ(ID「4」、ID「30」)が残っているので、推定トランザクションの識別処理に戻る。
まず、ID「4」の開始メッセージについて、未識別子孫メッセージリストが空になっているので、トランザクション識別部140は、ID「6」の確定子孫メッセージとの組み合わせによって構成されるトランザクション(HTTP;A;NG,RDB2;p;ok)を推定トランザクションとして選択する。そして、トランザクション識別部140は、推定回数g(HTTP;A;NG,RDB2;p;ok)を1だけ増やす。さらに、トランザクション識別部140は、ID「4」メッセージのトランザクション識別状況を「識別(S)」に変える。
図52は、推定トランザクション識別処理によって新たに生成されたトランザクションを示す図である。図52に示すように、ID「4」の開始メッセージと、ID「6」の子孫メッセージとにより、トランザクション228(推定トランザクション)が生成される。
次に、ID30の開始メッセージについて、未識別子孫メッセージリストが空になっているので、トランザクション識別部140は、ID「31」、「37」の確定子孫メッセージの組み合わせによって構成されるトランザクション(HTTP;A;OK,RDB2;p;ok,RDB2;q;ok)を推定トランザクションとして選択する。そして、トランザクション識別部140は、推定回数g(HTTP;A;OK,RDB2;p;ok,RDB2;q;ok)を1だけ増やす。また、トランザクション識別部140は、ID「30」のメッセージのトランザクション識別状況を「識別(S)」に変える。
図53は、推定トランザクション識別処理によって新たに生成されたトランザクションを示す図である。図53に示すように、ID「30」の開始メッセージとID「31」、「37」の子孫メッセージとにより、トランザクション229(推定トランザクション)が構成される。
これにより全てのメッセージが識別され、トランザクション識別処理が終了する。トランザクション識別処理終了後、トランザクション識別部140は、識別結果として、確定トランザクション、推定トランザクション、置換トランザクションを所定の形式で出力する。
トランザクションの出力は、(1)確定トランザクション、(2)推定トランザクションと置換トランザクションというように識別された順に出力しても良いし、あるいは、トランザクションの開始時刻順にソートして出力しても良い。
図54は、トランザクション識別結果を示す第1の図である。図55は、トランザクション識別結果を示す第2の図である。図54にはトランザクション識別結果240の前半部分が示されており、図55にはトランザクション識別結果240の後半部分が示されている。この例では、トランザクション識別結果240には、確定トランザクション、推定トランザクション、および置換トランザクションが識別された順に登録されている。
なお、トランザクション識別結果として、トランザクションの開始時刻順に各トランザクションを並べて出力することもできる。
また、トランザクションの種類別に識別結果を出力することもできる。
図56は、種類別のトランザクション識別結果を示す図である。このトランザクション識別結果241において、「0;HTTP;A;OK,0-0;RDB2;p;ok[9/5/4/5.8]」は、トランザクション種類ID「0」のトランザクションを示している。「1;HTTP;A;OK,1-0;RDB2;p;ok,1-1;RDB2;q;ok[4/1/3/1.6]」は、トランザクション種類ID「1」のトランザクションを示している。「2;HTTP;A;NG,2-0;RDB2;p;ok[2/1/1/1.2]」は、トランザクション種類ID「2」のトランザクションを示している。「3;HTTP;A;NG, 3-0;RDB2;p;ok, 3-1;RDB2;q;ok[2/1/1/1.2]」は、トランザクション種類ID「3」のトランザクションを示している。
図57は、トランザクション種類ID0のトランザクションを示す図である。このトランザクション242は、2階層のトランザクションである。ここで、図56に示す「0;HTTP;A;OK,0-0;RDB2;p;ok[9/5/4/5.8]」における[9/5/4/5.8]の部分は、メッセージ履歴内で9回識別され、そのうち5回は確定、4回は推定であり、トランザクションの確からしさが5.8であることを示している。
図58は、トランザクション種類ID1のトランザクションを示す図である。このトランザクション243は、2階層のトランザクションである。ここで、図56に示す「1;HTTP;A;OK,1-0;RDB2;p;ok,1-1;RDB2;q;ok[4/1/3/1.6]」における[4/1/3/1.6]の部分は、メッセージ履歴内で4回識別され、そのうち1回は確定、3回は推定であり、トランザクションの確からしさが1.6であることを示している。
図59は、トランザクション種類ID2のトランザクションを示す図である。このトランザクション244は、2階層のトランザクションである。ここで、図56に示す「2;HTTP;A;NG, 2-0;RDB2;p;ok[2/1/1/1.2]」における[2/1/1/1.2]の部分は、メッセージ履歴内で2回識別され、そのうち1回は確定、1回は推定であり、トランザクションの確からしさが1.2であることを示している。
図60は、トランザクション種類ID3のトランザクションを示す図である。このトランザクション245は、2階層のトランザクションである。ここで、図56に示す「3;HTTP;A;NG, 3-0;RDB2;p;ok,3-1;RDB2;q;ok[2/1/1/1.2]」における[2/1/1/1.2]の部分は、メッセージ履歴内で2回識別され、そのうち1回は確定、1回は推定であり、トランザクションの確からしさが1.2であることを示している。
このように、メッセージのコードが異なる場合、それぞれを異なる種別のトランザクションと認識することで、コードに応じたトランザクションの処理時間を判別することができる。例えば、HTTPでは、メッセージのCodeが「500」の場合、「Internal Server Error」を示している。また、メッセージのCodeが「200」の場合、「OK」(正常終了)を示している。従って、分析部150がメッセージのコード毎にトランザクションを区別して処理時間等の分析を行うことで、正常終了時とエラー発生時との処理時間の違いを認識することができる。そして、分析部150は、分析結果をグラフ等によって画面表示する。
図61は、コード別の分析結果を示す図である。この例では、横軸にトランザクションの処理開始時刻を取り、縦軸にトランザクションの処理時間を取ったグラフにより、処理終了ステータス別処理時間分布を示している。図中、黒い菱形がCode200のトランザクションを示しており、白い正方形がCode500のトランザクションを示している(コード以外のメッセージ内容は同一である)。
このグラフを参照すると、正常終了(Code200)の場合、処理時間にばらつきがあるが、エラー終了の場合(Code500)、処理時間が集中していることが分かる。具体的には、Code:500(Error)のトランザクションの処理時間は0.34秒前後に集中しており、Code:200(OK)のトランザクションの処理時間は0.3〜1.8秒で長め、かつばらつきが大きい。
また、分析部150は、分析結果から、正常に処理が完了したと判断できる処理時間の範囲や、何らかの問題が発生したと判断できる処理時間の範囲を算出することができる。
図62は、トランザクションの分析結果を示す図である。分析結果251には、トランザクション識別部140で認識されたトランザクションに対して、同じ種別のトランザクションの数([31;30;1]:全体で31個のトランザクションが認識され、そのうち30個が確定トランザクション、1個が推定トランザクションであることを示す)が示されている。
また、処理時間に分布が対数正規分布となる場合、処理時間がm±σ(0.348,0.963)の範囲内のトランザクションを正常なトランザクションとみなしている。ここで、mは処理時間の平均値を示しており、図62の例ではm=0.579である。また、σは標準偏差を表しており、図62の例ではσ=1.66である。この場合、m±σの範囲は、0.348以上、0.963以下となる。
また、処理時間がm±2σ(0.209,1.60)の範囲をはずれたトランザクションを、問題有りのトランザクションとする。また、処理時間が、正常な範囲と問題有りの範囲との時間となるトランザクションは、要注意のトランザクションと判定される。
図63は、処理時間に応じた良否分析を行ったトランザクションの分布状況を示す図である。この例では、横軸にトランザクションの処理開始時刻を取り、縦軸にトランザクションの処理時間を取ったグラフにより、処理終了ステータス別処理時間分布を示している。
このようにトランザクションの処理時間の分布状況を、正常な範囲にあるトランザクション、要注意のトランザクション、問題のあるトランザクションに分けて分かりやすく表示することができる。
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、サービス処理状況分析装置が有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記録装置には、ハードディスク装置(HDD)、フレキシブルディスク(FD)、磁気テープなどがある。光ディスクには、DVD(DigitalVersatileDisc)、DVD−RAM(RandomAccessMemory)、CD−ROM(CompactDiscReadOnlyMemory)、CD−R(Recordable)/RW(ReWritable)などがある。光磁気記録媒体には、MO(Magneto-Opticaldisk)などがある。
プログラムを流通させる場合には、例えば、そのプログラムが記録されたDVD、CD−ROMなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送される毎に、逐次、受け取ったプログラムに従った処理を実行することもできる。
なお、本発明は、上述の実施の形態にのみ限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々の変更を加えることができる。
以上説明した実施の形態の主な技術的特徴は、以下の付記の通りである。
(付記1) 複数のサーバが接続されたネットワークシステムのサービス処理状況を分析するためのサービス処理状況分析プログラムにおいて、
コンピュータを、
ネットワークを介して受け渡されるメッセージを収集するメッセージ観測手段、
収集したメッセージの内容を解析して、解析されたメッセージの情報をメッセージ記憶手段に格納するメッセージ解析手段、
前記メッセージ記憶手段に格納されたメッセージの情報から、メッセージ間の呼び出し関係に関する所定の制約条件を満たし、かつ、すべての呼び出し関係が一意に確定するメッセージの組み合わせを抽出し、抽出したメッセージの組み合わせに基づいて確定トランザクションを生成する確定トランザクション生成手段、
前記確定トランザクションおよび先に識別されている推定トランザクションに含まれない未識別メッセージを順次選択し、前記制約条件を満たし、かつ、選択した前記未識別メッセージを含むメッセージの組み合わせを複数抽出し、抽出したメッセージの組み合わせに基づいて、1以上のトランザクション候補を生成するトランザクション候補生成手段、
生成された前記トランザクション候補について、同種類のトランザクションがこれまでに前記確定トランザクションまたは前記推定トランザクションとして識別された回数に基づいて前記トランザクション候補それぞれの確からしさを評価する評価手段、
生成された前記トランザクション候補の1つを、それぞれの確からしさに基づいて推定トランザクションとして識別する推定トランザクション識別手段、
前記確定トランザクションと前記推定トランザクションとを識別結果として出力する出力手段、
として機能させることを特徴とするサービス処理状況分析プログラム。
(付記2) 前記評価手段は、確定トランザクションとして識別された回数と、推定トランザクションとして識別された回数に1以下の係数を乗算した値とを加算した値を、確からしさとすることを特徴とする付記1記載のサービス処理状況分析プログラム。
(付記3) 前記推定トランザクション識別手段は、最も確からしいと評価されたトランザクション候補の確からしさを示す数値が、所定の閾値以上の場合にのみ、最も確からしいと評価されたトランザクション候補を推定トランザクションとして識別することを特徴とする付記1記載のサービス処理状況分析プログラム。
(付記4) 前記トランザクション候補生成手段は、所定の推定処理終了条件を満たすまで、トランザクション候補の生成を繰り返すことを特徴とする付記1記載のサービス処理状況分析プログラム。
(付記5) 前記トランザクション候補生成手段は、前記推定処理終了条件が満たされた後において前記未識別メッセージが残存するとき、前記未識別メッセージを既に識別されている前記推定トランザクションに追加することにより生成される置換トランザクション候補を含め、生成された前記トランザクション候補を生成し、
前記推定トランザクション識別手段は、前記置換トランザクション候補を前記推定トランザクションとして識別した場合、前記置換トランザクション候補の生成元となった前記推定トランザクションを前記置換トランザクション候補に置き換えることを特徴とする付記4記載のサービス処理状況分析プログラム。
(付記6) 複数のサーバが接続されたネットワークシステムのサービス処理状況を分析するためのサービス処理状況分析方法において、
メッセージ観測手段が、ネットワークを介して受け渡されるメッセージを収集し、
メッセージ解析手段が、収集したメッセージの内容を解析して、解析されたメッセージの情報をメッセージ記憶手段に格納し、
確定トランザクション生成手段が、前記メッセージ記憶手段に格納されたメッセージの情報から、メッセージ間の呼び出し関係に関する所定の制約条件を満たし、かつ、すべての呼び出し関係が一意に確定するメッセージの組み合わせを抽出し、抽出したメッセージの組み合わせに基づいて確定トランザクションを生成し、
トランザクション候補生成手段が、前記確定トランザクションおよび先に識別されている推定トランザクションに含まれない未識別メッセージを順次選択し、前記制約条件を満たし、かつ、選択した前記未識別メッセージを含むメッセージの組み合わせを複数抽出し、抽出したメッセージの組み合わせに基づいて、1以上のトランザクション候補を生成し、
評価手段が、生成された前記トランザクション候補について、同種類のトランザクションがこれまでに前記確定トランザクションまたは前記推定トランザクションとして識別された回数に基づいて前記トランザクション候補それぞれの確からしさを評価し、
推定トランザクション識別手段が、生成された前記トランザクション候補の1つを、それぞれの確からしさに基づいて推定トランザクションとして識別し、
出力手段が、前記確定トランザクションと前記推定トランザクションとを識別結果として出力する、
ことを特徴とするサービス処理状況分析方法。
(付記7) 複数のサーバが接続されたネットワークシステムのサービス処理状況を分析するサービス処理状況分析装置において、
ネットワークを介して受け渡されるメッセージを収集するメッセージ観測手段と、
収集したメッセージの内容を解析して、解析されたメッセージの情報をメッセージ記憶手段に格納するメッセージ解析手段と、
前記メッセージ記憶手段に格納されたメッセージの情報から、メッセージ間の呼び出し関係に関する所定の制約条件を満たし、かつ、すべての呼び出し関係が一意に確定するメッセージの組み合わせを抽出し、抽出したメッセージの組み合わせに基づいて確定トランザクションを生成する確定トランザクション生成手段と、
前記確定トランザクションおよび先に識別されている推定トランザクションに含まれない未識別メッセージを順次選択し、前記制約条件を満たし、かつ選択した前記未識別メッセージを含むメッセージの組み合わせを複数抽出し、抽出したメッセージの組み合わせに基づいて、1以上のトランザクション候補を生成するトランザクション候補生成手段と、
生成された前記トランザクション候補について、同種類のトランザクションがこれまでに前記確定トランザクションまたは前記推定トランザクションとして識別された回数に基づいて前記トランザクション候補それぞれの確からしさを評価する評価手段と、
生成された前記トランザクション候補の1つを、それぞれの確からしさに基づいて推定トランザクションとして識別する推定トランザクション識別手段と、
前記確定トランザクションと前記推定トランザクションとを識別結果として出力する出力手段と、
を有することを特徴とするサービス処理状況分析装置。