(57)【要約】【課題】  低頻度で発生するトランザクションを含め、複数のサーバ間で処理されるトランザクションの種別を判別できるようにする。【解決手段】  確定トランザクション生成手段１ｄは、呼び出し関係が一意に確定する確定トランザクションを生成する。トランザクション候補生成手段１ｅは、未識別メッセージを含む１以上のトランザクション候補を生成する。評価手段１ｆは、生成されたトランザクション候補について、同種類のトランザクションがこれまでに確定トランザクションまたは推定トランザクションとして識別された回数に基づいてトランザクション候補それぞれの確からしさを評価する。推定トランザクション識別手段１ｇは、生成されたトランザクション候補の１つを、それぞれの確からしさに基づいて推定トランザクションとして識別する。【選択図】  図１
2006323471.tif 000002
【特許請求の範囲】
【請求項１】
複数のサーバが接続されたネットワークシステムのサービス処理状況を分析するためのサービス処理状況分析プログラムにおいて、
コンピュータを、
ネットワークを介して受け渡されるメッセージを収集するメッセージ観測手段、
収集したメッセージの内容を解析して、解析されたメッセージの情報をメッセージ記憶手段に格納するメッセージ解析手段、
前記メッセージ記憶手段に格納されたメッセージの情報から、メッセージ間の呼び出し関係に関する所定の制約条件を満たし、かつ、すべての呼び出し関係が一意に確定するメッセージの組み合わせを抽出し、抽出したメッセージの組み合わせに基づいて確定トランザクションを生成する確定トランザクション生成手段、
前記確定トランザクションおよび先に識別されている推定トランザクションに含まれない未識別メッセージを順次選択し、前記制約条件を満たし、かつ、選択した前記未識別メッセージを含むメッセージの組み合わせを複数抽出し、抽出したメッセージの組み合わせに基づいて、１以上のトランザクション候補を生成するトランザクション候補生成手段、
生成された前記トランザクション候補について、同種類のトランザクションがこれまでに前記確定トランザクションまたは前記推定トランザクションとして識別された回数に基づいて前記トランザクション候補それぞれの確からしさを評価する評価手段、
生成された前記トランザクション候補の１つを、それぞれの確からしさに基づいて推定トランザクションとして識別する推定トランザクション識別手段、
前記確定トランザクションと前記推定トランザクションとを識別結果として出力する出力手段、
として機能させることを特徴とするサービス処理状況分析プログラム。
【請求項２】
前記評価手段は、確定トランザクションとして識別された回数と、推定トランザクションとして識別された回数に１以下の係数を乗算した値とを加算した値を、確からしさとすることを特徴とする請求項１記載のサービス処理状況分析プログラム。
【請求項３】
前記トランザクション候補生成手段は、所定の推定処理終了条件を満たすまで、トランザクション候補の生成を繰り返すことを特徴とする請求項１記載のサービス処理状況分析プログラム。
【請求項４】
複数のサーバが接続されたネットワークシステムのサービス処理状況を分析するためのサービス処理状況分析方法において、
メッセージ観測手段が、ネットワークを介して受け渡されるメッセージを収集し、
メッセージ解析手段が、収集したメッセージの内容を解析して、解析されたメッセージの情報をメッセージ記憶手段に格納し、
確定トランザクション生成手段が、前記メッセージ記憶手段に格納されたメッセージの情報から、メッセージ間の呼び出し関係に関する所定の制約条件を満たし、かつ、すべての呼び出し関係が一意に確定するメッセージの組み合わせを抽出し、抽出したメッセージの組み合わせに基づいて確定トランザクションを生成し、
トランザクション候補生成手段が、前記確定トランザクションおよび先に識別されている推定トランザクションに含まれない未識別メッセージを順次選択し、前記制約条件を満たし、かつ、選択した前記未識別メッセージを含むメッセージの組み合わせを複数抽出し、抽出したメッセージの組み合わせに基づいて、１以上のトランザクション候補を生成し、
評価手段が、生成された前記トランザクション候補について、同種類のトランザクションがこれまでに前記確定トランザクションまたは前記推定トランザクションとして識別された回数に基づいて前記トランザクション候補それぞれの確からしさを評価し、
推定トランザクション識別手段が、生成された前記トランザクション候補の１つを、それぞれの確からしさに基づいて推定トランザクションとして識別し、
出力手段が、前記確定トランザクションと前記推定トランザクションとを識別結果として出力する、
ことを特徴とするサービス処理状況分析方法。
【請求項５】
複数のサーバが接続されたネットワークシステムのサービス処理状況を分析するサービス処理状況分析装置において、
ネットワークを介して受け渡されるメッセージを収集するメッセージ観測手段と、
収集したメッセージの内容を解析して、解析されたメッセージの情報をメッセージ記憶手段に格納するメッセージ解析手段と、
前記メッセージ記憶手段に格納されたメッセージの情報から、メッセージ間の呼び出し関係に関する所定の制約条件を満たし、かつ、すべての呼び出し関係が一意に確定するメッセージの組み合わせを抽出し、抽出したメッセージの組み合わせに基づいて確定トランザクションを生成する確定トランザクション生成手段と、
前記確定トランザクションおよび先に識別されている推定トランザクションに含まれない未識別メッセージを順次選択し、前記制約条件を満たし、かつ、選択した前記未識別メッセージを含むメッセージの組み合わせを複数抽出し、抽出したメッセージの組み合わせに基づいて、１以上のトランザクション候補を生成するトランザクション候補生成手段と、
生成された前記トランザクション候補について、同種類のトランザクションがこれまでに前記確定トランザクションまたは前記推定トランザクションとして識別された回数に基づいて前記トランザクション候補それぞれの確からしさを評価する評価手段と、
生成された前記トランザクション候補の１つを、それぞれの確からしさに基づいて推定トランザクションとして識別する推定トランザクション識別手段と、
前記確定トランザクションと前記推定トランザクションとを識別結果として出力する出力手段と、
を有することを特徴とするサービス処理状況分析装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は複数のサーバが接続されたネットワークシステムのサービス処理状況を分析するためのサービス処理状況分析プログラム、サービス処理状況分析方法、およびサービス処理状況分析装置に関し、特にネットワークシステムのサービス処理状況をトランザクション単位で分析するサービス処理状況分析プログラム、サービス処理状況分析方法、およびサービス処理状況分析装置に関する。
【背景技術】
【０００２】
インターネット・バンキング・システム等のサービス処理システムは、大規模・複雑な構成になっている場合が多く、サービス処理状況の把握や、障害や性能劣化原因の特定が非常に困難になっている。
【０００３】
このようなサービス処理システムは、複数のサーバが組み合わさってサービス処理を行うネットワークシステムになっている場合が多い。このようなシステムの稼働状況を分析するには、従来、個々のサーバで処理履歴を取って個別に分析したり、クライアントからサービス実行のリクエストを送って、サービス処理結果が返ってくるまでの時間を測定・評価する方法が用いられてきた。
【０００４】
また、ネットワークシステム上のサーバ間のやり取りを分析する方法が用いられてきた。例えば、サーバ間で受け渡されるメッセージが既知の場合、そのメッセージの受け渡し状況を分析する技術がある（例えば、非特許文献１）。
【０００５】
また、パケットを収集して、サーバに対するリクエストと、そのリクエストに対するレスポンスの対を作成する技術もある（例えば、非特許文献２）。
【非特許文献１】「IBM Tivoli Monitoring for Transaction Performance helps maximize performance of your applications.」 International Business Machines Corporation, 2003
【非特許文献２】「LonManager Protocol Analyzer User’s Guide Revision 1.0」 Echelon Corporation, 1994
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかし、個々のサーバで処理履歴を取って個別に分析する方法では、各サーバでは特に問題なく動作しているように見えて、サーバ間のやり取りで問題が発生している場合などに原因を特定できないという問題がある。また、クライアント側で、サービス実行のリクエストを送って、サービス処理結果が返ってくるまでの時間を計測する方法では、クライアントとやり取りする部分の処理しか見えてこないという問題がある。
【０００７】
また、サーバ間のやり取りを分析する非特許文献１の技術は、処理内容が未知の場合や、階層構造が未知の場合などの未知のトランザクションについては分析できないという問題がある。
【０００８】
さらに、非特許文献２は、１つ１つの処理要求に対して、確認応答回数、応答時間等を分析するが、１つのサービス要求に対する一連の処理という観点での分析には対応していない。
【０００９】
なお、これらの問題を解決するものとして、特願２００４−１８５９０９号に記載された発明がされている。この発明では、メッセージ間の呼び出し関係の確信度に基づいて、メッセージ履歴からトランザクションのモデルを構築するという手法が用いられている。ただし、この発明を用いた場合においても、低頻度のトランザクションについてはモデル化されにくいという問題がある。
【００１０】
たとえば、メッセージ履歴の中で、HTTP;A-RDB2;p（ＨＴＴＰによる処理ＡのメッセージとＲＤＢ２による処理ｐのメッセージの組み合わせ）というトランザクションが９８０回、HTTP;A-RDB2;p-RDB2;q（ＨＴＴＰによる処理Ａのメッセージ、ＲＤＢ２による処理ｐのメッセージ、およびＲＤＢ２による処理ｑのメッセージの組み合わせ）というトランザクションが２０回出現したとき、特願２００４−１８５９０９号の手法では、呼び出し元メッセージHTTP;Aの出現に対して、トランザクションHTTP;A-RDB2;pの確信度が９８％、トランザクションHTTP;A-RDB2;p-RDB2;qの確信度が２％と評価されるので、確信度の閾値の設定によっては、低確信度のトランザクションHTTP;A-RDB2;p-RDB2;qはモデル化できない場合がある。特に、近年のWebサービス・システムに良く見られる、呼び出し元メッセージに対してトランザクションのバリエーションが非常に多い場合に上記の問題が起こりやすい。
【００１１】
本発明はこのような点に鑑みてなされたものであり、低頻度で発生するトランザクションを含め、複数のサーバ間で処理されるトランザクションの種別を判別できるサービス処理状況分析プログラム、サービス処理状況分析方法、およびサービス処理状況分析装置を提供することを目的とする。
【課題を解決するための手段】
【００１２】
本発明では上記課題を解決するために、図１に示すような機能を実現するサービス処理状況分析プログラムプログラムが提供される。本発明に係るサービス処理状況分析プログラムは、複数のサーバが接続されたネットワークシステムのサービス処理状況を分析するためのものであり、図１に示す機能をコンピュータに実行させることができる。
【００１３】
メッセージ観測手段１ａは、ネットワークを介して受け渡されるメッセージを収集する。メッセージ解析手段１ｂは、収集したメッセージの内容を解析して、解析されたメッセージの情報をメッセージ記憶手段１ｃに格納する。確定トランザクション生成手段１ｄは、メッセージ記憶手段１ｃに格納されたメッセージの情報から、メッセージ間の呼び出し関係に関する所定の制約条件を満たし、かつ、すべての呼び出し関係が一意に確定するメッセージの組み合わせを抽出し、抽出したメッセージの組み合わせに基づいて確定トランザクションを生成する。トランザクション候補生成手段１ｅは、確定トランザクションおよび先に識別されている推定トランザクションに含まれない未識別メッセージを順次選択し、制約条件を満たし、かつ選択した未識別メッセージを含むメッセージの組み合わせを複数抽出し、抽出したメッセージの組み合わせに基づいて、１以上のトランザクション候補を生成する。評価手段１ｆは、生成されたトランザクション候補について、同種類のトランザクションがこれまでに確定トランザクションまたは推定トランザクションとして識別された回数に基づいてトランザクション候補それぞれの確からしさを評価する。推定トランザクション識別手段１ｇは、生成されたトランザクション候補の１つを、それぞれの確からしさに基づいて推定トランザクションとして識別する。出力手段１ｈは、確定トランザクションと推定トランザクションとを識別結果として出力する。
【００１４】
このようなサービス処理状況分析プログラムを実行するコンピュータによれば、ネットワークを介して受け渡されるメッセージが、メッセージ観測手段１ａで収集される。すると、メッセージ解析手段１ｂにより、収集したメッセージの内容が解析され、解析されたメッセージの情報がメッセージ記憶手段１ｃに格納される。その後、確定トランザクション生成手段１ｄにより、メッセージ記憶手段１ｃに格納されたメッセージの情報から、メッセージ間の呼び出し関係に関する所定の制約条件を満たし、かつ、すべての呼び出し関係が一意に確定するメッセージの組み合わせが抽出され、抽出したメッセージの組み合わせに基づいて確定トランザクションが生成される。次に、トランザクション候補生成手段１ｅにより、確定トランザクションおよび先に識別されている推定トランザクションに含まれない未識別メッセージが順次選択され、制約条件を満たし、かつ選択した未識別メッセージを含むメッセージの組み合わせが複数抽出され、抽出したメッセージの組み合わせに基づいて、１以上のトランザクション候補が生成される。次に、評価手段１ｆにより、生成されたトランザクション候補について、同種類のトランザクションがこれまでに確定トランザクションまたは推定トランザクションとして識別された回数に基づいてトランザクション候補それぞれの確からしさが評価される。さらに、推定トランザクション識別手段１ｇにより、生成されたトランザクション候補の１つが、それぞれの確からしさに基づいて推定トランザクションとして識別される。そして、出力手段１ｈにより、確定トランザクションと推定トランザクションとが識別結果として出力される。
【発明の効果】
【００１５】
本発明では、未識別メッセージに応じたトランザクション候補を順次生成し、トランザクション候補の確からしさを同じ種別の確定トランザクションおよび推定トランザクションの絶対数によって評価し、評価された確からしさに基づいて推定トランザクションを識別するようにした。そのため、出現確率が少ない種別のトランザクションであっても、先に確定トランザクションとして認識された種別のトランザクション候補であれば、推定トランザクションとして識別可能となる。
【発明を実施するための最良の形態】
【００１６】
以下、本発明の実施の形態を図面を参照して説明する。
図１は、本実施の形態の概略を示す図である。図１に示すように、サービス処理状況分析装置１は、ネットワーク２を介して複数のサーバ３ａ，３ｂ，３ｃ，３ｄに接続されている。また、サービス処理状況分析装置１は、メッセージ観測手段１ａ、メッセージ解析手段１ｂ、メッセージ記憶手段１ｃ、確定トランザクション生成手段１ｄ、トランザクション候補生成手段１ｅ、評価手段１ｆ、推定トランザクション識別手段１ｇ、および出力手段１ｈを有する。
【００１７】
メッセージ観測手段１ａは、ネットワークを介して受け渡されるメッセージを収集する。
メッセージ解析手段１ｂは、収集したメッセージの内容を解析して、解析されたメッセージの情報をメッセージ記憶手段１ｃに格納する。このとき、解析されるメッセージの内容としては、例えば、処理を要求するメッセージ（要求メッセージ）か、応答するメッセージ（応答メッセージ）かがある。また、メッセージの発生時刻、送信元、宛先も解析される。
【００１８】
確定トランザクション生成手段１ｄは、メッセージ記憶手段１ｃに格納されたメッセージの情報から、メッセージ間の呼び出し関係に関する所定の制約条件を満たし、かつ、すべての呼び出し関係が一意に確定するメッセージの組み合わせを抽出する。そして、確定トランザクション生成手段１ｄは、抽出したメッセージの組み合わせに基づいて確定トランザクションを生成する。
【００１９】
ここで、トランザクションとは、メッセージ間の呼び出し関係でつながるメッセージの集合に、呼び出し関係に基づいて階層情報を付けたものである。トランザクションは、１個の呼び出し元メッセージ（宛先のサーバに他のメッセージを発生させるメッセージ）と０個以上の呼び出し先メッセージ（他のメッセージに応じてサーバが出力したメッセージ）で構成される。
【００２０】
以下、クライアントからサーバ宛に出されるメッセージ（トランザクションの最初に発生するメッセージ）を開始メッセージとする。また、開始メッセージ以外のメッセージを子孫メッセージとする。
【００２１】
トランザクション候補生成手段１ｅは、確定トランザクションおよび先に識別されている推定トランザクションに含まれない未識別メッセージを順次選択し、制約条件を満たし、かつ選択した未識別メッセージを含むメッセージの組み合わせを複数抽出する。そして、トランザクション候補生成手段１ｅは、抽出したメッセージの組み合わせに基づいて、１以上のトランザクション候補を生成する。
【００２２】
ここで、呼び出し関係の制約条件は、例えば、メッセージの発生時刻や継続時間などの時間的な関係や、メッセージの種別、ＩＰアドレス等で与えられる。
評価手段１ｆは、生成されたトランザクション候補について、同種類のトランザクションがこれまでに確定トランザクションまたは推定トランザクションとして識別された回数に基づいてトランザクション候補それぞれの確からしさを評価する。
【００２３】
推定トランザクション識別手段１ｇは、生成されたトランザクション候補の１つを、それぞれの確からしさに基づいて推定トランザクションとして識別する。例えば、推定トランザクション識別手段１ｇは、最も確からしいトランザクション候補を推定トランザクションとする。このとき、推定トランザクション識別手段１ｇは、最も確からしいトランザクション候補の確からしさが、所定の閾値以上の場合にのみ、そのトランザクション候補を推定トランザクションと識別することもできる。
【００２４】
出力手段１ｈは、確定トランザクションと推定トランザクションとを識別結果として出力する。
このようなサービス処理状況分析装置によれば、ネットワーク２を介してサーバ３ａ，３ｂ，３ｃ，３ｄに対して受け渡されるメッセージが、メッセージ観測手段１ａで収集される。すると、メッセージ解析手段１ｂにより、収集したメッセージの内容が解析され、解析されたメッセージの情報がメッセージ記憶手段１ｃに格納される。
【００２５】
図２は、収集されたメッセージの例を示す図である。図中、横方向に時間軸を取っており、各メッセージに関し、開始時刻から終了時刻までの時間帯を線で表している。各メッセージにはＩＤが振られていると共に、処理内容を示す記号（Ａ、ｐ、ｑ）が線の上に示されている。
【００２６】
そして、確定トランザクション生成手段１ｄが、メッセージ記憶手段１ｃに格納されたメッセージから、呼び出し関係の制約条件を満たす確定トランザクションを構成する。例えば、制約条件として、「処理Ａを行うメッセージが開始メッセージである」、「子孫メッセージは、必ず開始メッセージから呼び出される」、「呼び出し元のメッセージの処理期間内に、呼び出し先のメッセージの処理期間が包含される」という条件が定義されているものとする。この条件に従って、図２に示すメッセージを解析すると、４つの確定トランザクション４ａ，４ｂ，４ｃ，４ｄが生成される。すなわち、これらの確定トランザクション４ａ，４ｂ，４ｃ，４ｄに含まれる子孫メッセージは、そのトランザクションの開始メッセージ以外の開始メッセージから呼び出されることが有り得ない。そのため、呼び出し関係が一意に確定する。
【００２７】
ここで、ＩＤ「０１」〜ＩＤ「０５」のメッセージは、ＩＤ「０４」のメッセージが従属すべき開始メッセージが確定しないため、確定トランザクションを構成できない。すなわち、ＩＤ「０１」のメッセージからＩＤ「０２」のメッセージが呼び出されることは確定する。同様に、ＩＤ「０３」のメッセージからＩＤ「０５」のメッセージが呼び出されることも確定する。しかし、ＩＤ「０４」のメッセージが、ＩＤ「０１」のメッセージから呼び出されるのか、ＩＤ「０３」のメッセージから呼び出されるのかが確定しない。
【００２８】
そこで、トランザクション候補生成手段１ｅが、トランザクション候補を生成する。この例では、開始メッセージを選択して、同時に成立できない複数のトランザクション候補を生成するものとする。
【００２９】
まず、ＩＤ「０１」のメッセージを含むトランザクション候補５ａ，５ｂが生成される。トランザクション候補５ａは、ＩＤ「０１」、「０２」のメッセージで構成される。トランザクション候補５ｂは、ＩＤ「０１」、「０２」、「０４」のメッセージで構成される。
【００３０】
トランザクション候補５ａ，５ｂが生成されると、評価手段１ｆにより、確からしさが評価される。確からしさは、各トランザクション候補５ａ，５ｂと同種類のトランザクションが確定トランザクションや推定トランザクションとして識別された回数で求められる。また、トランザクションの種類の同一性は、例えば、メッセージによる処理の内容およびメッセージの呼び出し関係の同一性で判断される。
【００３１】
図２の例では、トランザクション候補５ａは、処理Ａのメッセージから処理ｐのメッセージを呼び出している。すると、同じ種類の３つの確定トランザクション４ａ，４ｂ，４ｃが既に生成されている。そこで、評価手段１ｆは、処理Ａと処理ｐとで構成されるトランザクションの確からしさを、確定回数（関数ｆ（Ａ，ｐ））＝３で表す。
【００３２】
同様に、トランザクション候補５ｂについて、確からしさが判定される。トランザクション候補５ｂは、処理Ａのメッセージから処理ｐのメッセージを２回呼び出している。このような呼び出し関係を有する確定トランザクションは存在しないため、確からしさは０となる。すると、推定トランザクション識別手段１ｇにより、評価の高いトランザクション候補５ａが、推定トランザクションとして識別される。
【００３３】
次に、ＩＤ「０３」のメッセージを含むトランザクション候補５ｃ，５ｄが生成される。トランザクション候補５ｃは、ＩＤ「０３」、「０４」のメッセージで構成される。トランザクション候補５ｄは、ＩＤ「０３」、「０４」、「０５」のメッセージで構成される。
【００３４】
トランザクション候補５ｃ，５ｄが生成されると、評価手段１ｆにより、確からしさが評価される。
図２の例では、トランザクション候補５ｃは、処理Ａのメッセージから処理ｐのメッセージを呼び出している。同じ種類のトランザクションとしては、３つの確定トランザクション４ａ，４ｂ，４ｃと、トランザクション候補５ａに基づく推定トランザクションが既に生成されている。そこで、評価手段１ｆは、処理Ａと処理ｐとで構成されるトランザクションの確からしさを、確定回数（関数ｆ（Ａ，ｐ））＋α×推定回数（関数ｇ（Ａ，ｐ））で表す。ここで、αは、予め設定された係数であり、０以上の実数である。αを０．２とすると、確からしさは、３＋０．２×１＝３．２となる。
【００３５】
同様に、トランザクション候補５ｄについて、確からしさが判定される。トランザクション候補５ｄは、処理Ａのメッセージから処理ｐのメッセージと処理ｑのメッセージとを呼び出している。同じ種類のトランザクションとしては、１つの確定トランザクション４ｄが生成されている。そこで、評価手段１ｆは、処理Ａ、処理ｐ、および処理ｑで構成されるトランザクションの確からしさを、確定回数（関数ｆ（Ａ，ｐ，ｑ））＝１で表す。すると、推定トランザクション識別手段１ｇにより、評価の高いトランザクション候補５ｃが、推定トランザクションとして識別される。
【００３６】
すると、ＩＤ「０５」のメッセージが未確定で残される。そこで、トランザクション候補生成手段１ｅは、ＩＤ「０５」のメッセージを含むトランザクション候補５ｄを再度生成する。この場合、１つのトランザクション候補５ｄしか生成されず、このトランザクション候補５ｄの確からしさは１である。
【００３７】
推定トランザクション識別手段１ｇは、トランザクション候補５ｄを推定トランザクションとして識別すると共に、先に識別したトランザクション候補５ｃを、推定トランザクション候補から除外する。
【００３８】
このようにして、トランザクション候補５ｄのような出現頻度の低い種別のトランザクションを認識することが可能となる。
すなわち、よく似たトランザクション(A,p)、(A,p,q)の一方(A,p)が非常に高頻度で出現し、もう一方(A,p,q)が非常に低頻度で出現する場合、従来手法（特願２００４−１８５９０９号）では、高頻度のトランザクション(A,p)のみが識別され、低頻度のトランザクション(A,p,q)が識別されない可能性が高い。それに対して、本実施の形態の手法では、もしも、(A,p,q)が(A,p)であると推定されてしまった場合でも、最初のトランザクション推定の後に残った子孫メッセージについて、それらを組み込むことが可能なトランザクションの確からしさを再度評価して、トランザクションを構築しなおす仕組みがある。そのため、その段階で(A,p,q)に識別しなおされる可能性が高い。
【００３９】
なお、トランザクションの確からしさの尺度には、適当な確定回数ｆ（Ｓ）と推定回数ｇ（Ｓ）との少なくとも何れか一方に係数を乗算した関数を用いることができる。関数に用いる係数については、分析者がこれまでの分析結果に基づいて調整することができる。
【００４０】
ここで、本実施の形態によるトランザクション識別の効果を、特願２００４−１８５９０９号に示された技術（従来手法）と比較する。
図３は、従来手法と本実施の形態とのトランザクションの識別結果を比較する図である。図３（Ａ）は、従来手法による識別結果を示しており、図３（Ｂ）は、本実施の形態の手法による識別結果を示している。図中、横軸は、識別されたトランザクションの処理時間であり、縦軸は、処理時間毎のトランザクションの数である。この例では、１００回のトランザクションが発生し、そのうち９０回が処理Ａと処理ｐとで構成されるトランザクション(A,p)であり、１０回が処理Ａ、処理ｐ、および処理ｑで構成されるトランザクション（A,p,q)であるものとする。
【００４１】
従来手法では、各呼び出し元ＩＤに対して、呼び出し可能な呼び出し先ＩＤの組み合わせに基づいて、（呼び出し元、呼び出し先）で表されるトランザクションの起こりやすさを計算する。そして、所定の閾値を超えるものをトランザクションモデルとして選択する。すなわち、起こりやすさが閾値以下となるような出現頻度の低いトランザクションは、トランザクションモデルとして選択されない。
【００４２】
そのため、従来手法では、トランザクション (A,p,q)が１０回含まれているにもかかわらず、トランザクション(A, p)の１種類として識別されてしまう。そのため、トランザクションの処理時間の分布等の分析精度が低下する。
【００４３】
一方、本実施の形態の手法では、トランザクション(A,p)とトランザクション (A, p,q)との２種類のトランザクションとして識別できる。そのため、処理時間分布等を分析する場合、トランザクション(A,p)処理時間の分布とトランザクション(A, p,q)の処理時間の分布とを個別に分析できる。その結果、処理時間分布等の分析精度を上げることができる。
【００４４】
また、検出されたトランザクションの種別における確定トランザクションと推定トランザクションとの比率に基づいて、異常パターンを検出することもできる。例えば、推定トランザクションの比率を定期的に計測することにより、もしもある期間のみ推定トランザクションの比率が異常に高くなるなど変化が生じたならば、該当する種別のトランザクションの処理に何らかのトラブルが発生したものと推定できる。
【００４５】
以下、本発明の実施の形態について詳細に説明する。
本実施の形態では、インターネットバンキングの業務サービスを提供するＷｅｂ３階層システムにおいて、「残高確認」と「入金」との２つのサービスを提供する場合の例である。
【００４６】
なお、本実施形態では、管理対象となる要素として「メッセージ」、および「トランザクション」がある。
「メッセージ」は、ＴＣＰ（Transmission Control Protocol）セッション上で複数の機器がやり取りするデータの最小単位である。例えば、ＨＴＴＰでのリクエスト（要求）やそれに対するレスポンス（応答）が、メッセージに該当する。
【００４７】
なお、本実施の形態ではメッセージの概念を広くとらえ、要求と応答からなるメッセージの対、およびそのメッセージによって実行される処理を纏めて、１つのメッセージとする。特に要求なのか応答なのかを特定する必要がある場合には、要求メッセージ、応答メッセージと呼ぶこととする。
【００４８】
またメッセージのうち、トランザクションの最初に実行されるものを特に「開始メッセージ」と呼び、他のメッセージの実行中に呼び出されるメッセージを特に「子孫メッセージ」と呼ぶ。
【００４９】
「トランザクション」は、システムに対する要求によって発生するオブジェクト処理の集合である。特に、構成が一意に確定したトランザクションを「確定トランザクション」、確からしさによって推定されたトランザクションを「推定トランザクション」と呼ぶ。また、推定トランザクションのうち、一度推定された構成に含まれるメッセージの変更が行われたものを、特に「置換トランザクション」と呼ぶ。
【００５０】
図４は、本実施の形態に係るシステム構成を示す図である。図４の例では、スイッチ１０を介して、クライアント２１，２２，２３、Ｗｅｂサーバ３１、アプリケーションサーバ３２、データベース（ＤＢ）サーバ３３、およびサービス処理状況分析装置１００が接続されている。Ｗｅｂサーバ３１、アプリケーションサーバ３２、およびＤＢサーバ３３は、クライアント２１，２２，２３からの要求に応じて、サービスを提供する。
【００５１】
サービスを提供するためのトランザクションにおいて、Ｗｅｂサーバ３１、アプリケーションサーバ３２、およびＤＢサーバ３３間で、スイッチ１０を介してメッセージの送受信が行われる場合がある。このスイッチ１０を介して送受信されるメッセージをサービス処理状況分析装置１００が監視することで、システムの動作状態の分析を行うことができる。
【００５２】
図５は、サービス処理状況分析装置のハードウェア構成例を示す図である。サービス処理状況分析装置１００は、ＣＰＵ１０１によって装置全体が制御されている。ＣＰＵ１０１には、バス１０７を介してＲＡＭ(Random Access Memory)１０２、ハードディスクドライブ（ＨＤＤ:Hard Disk Drive）１０３、グラフィック処理装置１０４、入力インタフェース１０５、および通信インタフェース１０６が接続されている。
【００５３】
ＲＡＭ１０２には、ＣＰＵ１０１に実行させるＯＳ(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ１０２には、ＣＰＵ１０１による処理に必要な各種データが格納される。ＨＤＤ１０３には、ＯＳやアプリケーションプログラムが格納される。
【００５４】
グラフィック処理装置１０４には、モニタ１１が接続されている。グラフィック処理装置１０４は、ＣＰＵ１０１からの命令に従って、画像をモニタ１１の画面に表示させる。入力インタフェース１０５には、キーボード１２とマウス１３とが接続されている。入力インタフェース１０５は、キーボード１２やマウス１３から送られてくる信号を、バス１０７を介してＣＰＵ１０１に送信する。
【００５５】
通信インタフェース１０６は、スイッチ１０に接続されている。通信インタフェース１０６は、スイッチ１０を介して、他のコンピュータとの間でデータの送受信を行う。
以上のようなハードウェア構成によって、本実施の形態の処理機能を実現することができる。なお、図５には、サービス処理状況分析装置１００のハードウェア構成例を示したが、クライアント２１，２２，２３、Ｗｅｂサーバ３１、アプリケーションサーバ３２、およびＤＢサーバ３３も同様のハードウェア構成で実現することができる。
【００５６】
図６は、サービス処理状況分析装置の機能ブロックを示す図である。サービス処理状況分析装置１００は、パケットデータ記憶部１１１、メッセージ履歴１１２、トランザクション記憶部１１３、分析結果記憶部１１４、メッセージ観測部１２０、メッセージ解析部１３０、トランザクション識別部１４０、分析部１５０、および出力部１６０を有している。
【００５７】
パケットデータ記憶部１１１は、スイッチ１０を介して送受信されたメッセージを構成するパケットを記憶するための記憶装置である。メッセージ履歴１１２は、パケットを解析することにより取得したメッセージの情報を記憶するための記憶装置である。トランザクション記憶部１１３は、トランザクションを完了するまでに送受信されるメッセージのリスト（トランザクション）を記憶する記憶装置である。分析結果記憶部１１４は、メッセージの分析結果を記憶する記憶装置である。
【００５８】
メッセージ観測部１２０は、スイッチ１０を介して送受信されるメッセージを観測し、そのメッセージを構成するパケットをパケットデータ記憶部１１１に格納する。
メッセージ解析部１３０は、パケットデータ記憶部１１１に格納されたパケットの内容を解析し、解析結果をメッセージ履歴１１２に格納する。
【００５９】
トランザクション識別部１４０は、メッセージ履歴１１２に格納された情報に基づいてトランザクションを生成し、トランザクション記憶部１１３に格納する。
なお、トランザクション識別部１４０は、トランザクションを生成するためのトランザクション識別段階で、メッセージ履歴１１２に登録されたメッセージを、開始メッセージ集合Ａと子孫メッセージ集合Ｂとに分類する。開始メッセージ集合Ａは、トランザクションの最初に実行されるメッセージの集合である。子孫メッセージ集合Ｂは、トランザクション中で、他のメッセージの処理によって呼び出されるメッセージの集合である。
【００６０】
トランザクション識別部１４０は、開始メッセージ集合Ａ内のメッセージと子孫メッセージ集合Ｂ内のメッセージとの呼び出し関係を識別し、呼び出し関係があるメッセージからトランザクションを構成する。そして、トランザクション識別部１４０は、構成されたトランザクションから、種別が同一となるトランザクションを纏め、そのトランザクション内のメッセージ間の関係をトランザクションとして定義する。
【００６１】
分析部１５０は、トランザクション記憶部１１３に格納された各トランザクションの処理時間等の統計情報を分析する。そして、分析部１５０は、分析結果を分析結果記憶部１１４に格納する。
【００６２】
出力部１６０は、分析結果記憶部１１４に格納されている分析結果を、グラフ等でモニタ１１等に出力する。
このような構成のサービス処理状況分析装置１００で、次のようなシステム分析処理が実行される。以下、トランザクション識別部１４０によるトランザクション識別処理について、詳細に説明する。
【００６３】
図７は、トランザクション識別処理の手順を示すフローチャートである。以下、図７に示す処理をステップ番号に沿って説明する。
［ステップＳ１１］トランザクション識別部１４０は、メッセージ履歴１１２に登録されているメッセージに番号を付し、１番目から順番にメッセージを読み込む。以下、処理対象として選択されたメッセージをメッセージｋと呼ぶことする。そして、トランザクション識別部１４０は、メッセージ履歴１１２からメッセージｋの情報を読み込む。
【００６４】
［ステップＳ１２］トランザクション識別部１４０は、メッセージｋが開始メッセージか否かを判定する。開始メッセージであるか否かは、予め定義された開始メッセージ条件を満たすか否かで判断できる。開始メッセージ条件は、分析対象のシステムの性質に基づいて、下記のような条件が設定される。
１．メッセージ種別が所定の値であること(例えば、メッセージ種別＝ＨＴＴＰ）。例えば、クライアント２１〜２３からの要求として、ＨＴＴＰ要求のみが認められている場合、所定のメッセージ種別として、ＨＴＴＰが設定される。
２．処理内容が所定の値であること（例えば、処理内容=/root/program.cgi?x=*&y=*）。処理内容は、例えば、処理を実行するプログラムのファイル名によって予め設定されている。
３．クライアントＩＰアドレスが所定の値であること（例えば、クライアントＩＰアドレス=210.98.76.54)。予めサービス対象のクライアントのＩＰアドレスが分かっている場合、そのＩＰアドレスが設定される。
４．サーバＩＰアドレスが所定の値であること(例えば、サーバＩＰアドレス=12.34.56.78)。例えば、常にＷｅｂサーバ３１が開始メッセージを処理する場合、Ｗｅｂサーバ３１のアドレスが予め設定される。
【００６５】
メッセージｋが開始メッセージであれば、処理がステップＳ１３に進められる。メッセージｋが開始メッセージでなければ、処理がステップＳ１４に進められる。
［ステップＳ１３］トランザクション識別部１４０は、開始メッセージ集合Ａに情報を登録する。具体的には、トランザクション識別部１４０は、メッセージｋに関連づけて、空の確定子孫メッセージリスト、推定子孫メッセージリスト、および未識別子孫リストを作成する。そして、トランザクション識別部１４０は、トランザクション識別状況を「未識別（Ｕ）」と設定し、メッセージｋに関する情報を開始メッセージ集合Ａに登録する。その後、処理がステップＳ１５に進められる。
【００６６】
［ステップＳ１４］トランザクション識別部１４０は、メッセージｋについて各種メッセージ候補リストを作成し、子孫メッセージ集合Ｂに登録する。
［ステップＳ１５］トランザクション識別部１４０は、メッセージ履歴１１２から、トランザクション識別に使用する所定数のメッセージを読み込んだか否かを判定する。所定数のメッセージの読み込みが完了していれば、処理がステップＳ１６に進められる。読み込んだメッセージ数が所定数に達していなければ、処理がステップＳ１１に進められ、次のメッセージの読み込みが行われる。
【００６７】
［ステップＳ１６］トランザクション識別部１４０は、確定トランザクションの識別処理を行う。
［ステップＳ１７］トランザクション識別部１４０は、推定トランザクションの識別処理を行う。
【００６８】
［ステップＳ１８］トランザクション識別部１４０は、未識別子孫メッセージによる推定トランザクションの置換処理を行う。
［ステップＳ１９］トランザクション識別部１４０が、トランザクション識別終了条件を満たしたか否かを判断する。トランザクション識別終了条件は、分析者の目的に合わせて、分析者が下記のような条件の少なくとも１つを適宜設定する。
１．すべてのメッセージが識別されたら終了する。
２．新たにトランザクション識別されたメッセージ数が所定の閾値未満になったら終了する。
３．所定の繰り返し数に達したら終了する。
【００６９】
トランザクション識別終了条件が満たされた場合、処理がステップＳ２０に進められる。トランザクション識別終了条件が満たされていない場合、処理がステップＳ１７に進められ、トランザクション識別処理が続行される。
【００７０】
［ステップＳ２０］トランザクション識別部１４０は、トランザクション識別結果をトランザクション記憶部１１３に出力する。
次に、ステップＳ１４に示した子孫メッセージ集合への情報の登録処理について、詳細に説明する。
【００７１】
図８は、子孫メッセージ集合への情報の登録処理の手順を示すフローチャートである。以下、図８に示す処理をステップ番号に沿って説明する。
［ステップＳ３１］トランザクション識別部１４０は、ステップＳ１１で読み込まれたメッセージｋについて、呼び出し関係に基づいて可能な開始メッセージ候補のＩＤ｛ｊ１，ｊ２，・・・，ｊＮ｝をリストアップする。ここで、ｎ番目（ｎは、１以上の整数）の開始メッセージ候補がｊｎで表され、開始メッセージ候補の総数がＮ（Ｎは、０以上の整数）である。
【００７２】
具体的には、トランザクション識別部１４０は、メッセージｋと開始メッセージ候補を比較し、所定の呼び出し可能条件を満たしたときに、呼び出し関係有りを判断する。呼び出し可能条件としては、例えば、「開始メッセージ候補の要求時刻から応答時刻までの期間が、子孫メッセージ候補（メッセージｋ）の要求時刻から応答時刻までの期間を包含する」という条件がある。呼び出し可能条件の詳細は後述する（図１５参照）。
【００７３】
［ステップＳ３２］トランザクション識別部１４０は、開始メッセージ候補数Ｎを判断する。開始メッセージ候補数Ｎが０であれば、処理が終了する。開始メッセージ候補数Ｎが１であれば、処理がステップＳ３３に進められる。開始メッセージ候補数が２以上であれば、処理がステップＳ３５に進められる。
【００７４】
［ステップＳ３３］トランザクション識別部１４０は、メッセージｋの開始メッセージ識別状況を「確定（Ｄ）」にして、開始メッセージ候補リストにｊ１（唯一の開始メッセージ候補）を登録する。
【００７５】
［ステップＳ３４］トランザクション識別部１４０は、ＩＤがｊ１のメッセージに対する確定子孫メッセージリストにメッセージｋのＩＤを登録する。その後、処理がステップＳ３９に進められる。
【００７６】
［ステップＳ３５］トランザクション識別部１４０は、開始メッセージ候補数が２以上の場合、変数ｎ（ｎ＝１，２，・・・，Ｎ）が取り得る値毎に、ステップＳ３６〜ステップＳ３７の処理を実行する。
【００７７】
［ステップＳ３６］トランザクション識別部１４０は、メッセージｋの開始メッセージ識別状況を「未識別（Ｕ）」にして、開始メッセージ候補リストにｊｎを登録する。
［ステップＳ３７］トランザクション識別部１４０は、ｊｎの未識別子孫メッセージリストにメッセージｋのＩＤを登録する。
【００７８】
［ステップＳ３８］トランザクション識別部１４０は、変数ｎ（ｎ＝１，２，・・・，Ｎ）が取り得る全ての値についてステップＳ３６，Ｓ３７の処理を行ったら、処理をステップＳ３９に進める。
【００７９】
［ステップＳ３９］トランザクション識別部１４０は、ｋを子孫メッセージ集合Ｂに登録する。その後、処理が終了する。
このようにして、メッセージｋを、開始メッセージの候補となるメッセージの子孫メッセージ集合に登録することができる。
【００８０】
次に、確定トランザクションの識別処理（図７のステップＳ１６）を詳細に説明する。
図９は、確定トランザクションの識別処理の手順を示すフローチャートである。以下、図９に示す処理をステップ番号に沿って説明する。
【００８１】
［ステップＳ４１］トランザクション識別部１４０は、開始メッセージ集合Ａに含まれる各メッセージｋについて、ステップＳ４２〜ステップＳ４６の処理を実行する。
［ステップＳ４２］トランザクション識別部１４０は、メッセージｋの未識別子孫メッセージリストは空か（子孫となるメッセージが全て確定したか）否かを判断する。未識別子孫メッセージリストにメッセージが登録されていれば、処理がステップＳ４７に進められる。未識別子孫メッセージリストにメッセージが登録されていなければ、処理がステップＳ４３に進められる。
【００８２】
［ステップＳ４３］トランザクション識別部１４０は、メッセージｋおよびメッセージｋの確定子孫メッセージリストに含まれるメッセージによって、トランザクションＳを構成する。このとき、トランザクション識別部１４０は、メッセージｋのトランザクション識別状況を「確定（Ｄ）」とする。
【００８３】
［ステップＳ４４］トランザクション識別部１４０は、確定したトランザクションＳの情報をＨＤＤ１０３等の記録媒体に記録する。ＨＤＤに記録された確定トランザクションＳの情報は、トランザクション識別結果の出力時（ステップＳ２０）にまとめて出力される。なお、トランザクションＳが確定する毎に、画面等に出力することもできる。
【００８４】
［ステップＳ４５］トランザクション識別部１４０は、確定トランザクションＳの確定回数Ｆ（Ｓ）を１だけ増やす。
［ステップＳ４６］トランザクション識別部１４０は、開始メッセージ集合Ａから、ステップＳ４３〜ステップＳ４５の処理を実行したメッセージｋを削除する。
【００８５】
［ステップＳ４７］トランザクション識別部１４０は、開始メッセージ集合Ａに含まれるすべてのメッセージについて、ステップＳ４２〜ステップＳ４６の処理が完了したら、処理を終了する。未処理のメッセージがあれば、そのメッセージに対するステップＳ４２〜ステップＳ４６の処理が実行される。
【００８６】
このようにして、確定トランザクションを識別することができる。次に、推定トランザクションの識別処理（図７のステップＳ１７）を詳細に説明する。
図１０は、推定トランザクションの識別処理の手順を示すフローチャートである。以下、図１０に示す処理をステップ番号に沿って説明する。
【００８７】
［ステップＳ５１］トランザクション識別部１４０は、開始メッセージ集合Ａの各メッセージｋについて、ステップＳ５２〜ステップＳ５８の処理を行う。
［ステップＳ５２］トランザクション識別部１４０は、メッセージｋのトランザクション識別状況が「未識別（Ｕ）」か否かを判断する。未識別であれば、処理がステップＳ５３に進められる。「識別」であれば、処理がステップＳ５９に進められる。
【００８８】
［ステップＳ５３］トランザクション識別部１４０は、メッセージｋおよび確定子孫メッセージリスト、推定子孫メッセージリストによってトランザクションを構成し、推定トランザクションＳ１とする。
【００８９】
［ステップＳ５４］トランザクション識別部１４０は、メッセージｋの未識別子孫メッセージリストが空か否かを判断する。未識別子孫メッセージリストが空であれば、処理がステップＳ５８に進められる。未識別子孫メッセージリストが空でなければ、処理がステップＳ５５に進められる。
【００９０】
［ステップＳ５５］トランザクション識別部１４０は、ダミーのトランザクションを推定トランザクションＳ２とし、推定トランザクションＳ２の確からしさをｈ（Ｓ２）＝所定値とする。
【００９１】
［ステップＳ５６］トランザクション識別部１４０は、メッセージｋが属する最も確からしい推定トランザクションＳ１を選択する。この処理の詳細は後述する（図１１参照）。
【００９２】
［ステップＳ５７］トランザクション識別部１４０は、ステップＳ５６の処理において推定トランザクションＳ１が選択されたか否かを判断する。推定トランザクションが選択された場合、処理がステップＳ５８に進められる。推定トランザクションが選択されなかった場合、処理がステップＳ５９に進められる。
【００９３】
［ステップＳ５８］トランザクション識別部１４０は、メッセージｋのトランザクション識別状況を「識別（Ｓ）」と設定し、推定トランザクションＳ１の情報をＨＤＤ１０３等に記録し、さらに、推定トランザクションＳ１の推定回数ｇ（Ｓ１）を１だけ増やす
［ステップＳ５９］トランザクション識別部１４０は、開始メッセージ集合Ａに含まれる全てのメッセージについて、ステップＳ５２〜ステップＳ５８の処理が完了した場合、処理をステップＳ６０に進める。
【００９４】
［ステップＳ６０］トランザクション識別部１４０は、推定トランザクションの識別終了条件が満たされたか否かを判断する。なお、推定トランザクションの識別終了条件については、分析者の目的に合わせて、下記のような条件の少なくとも１つを適宜設定することができる。
１．すべての開始メッセージのトランザクション識別状況が「識別（Ｓ）」になったら終了する。
２．新たにトランザクション識別されたメッセージ数が所定の閾値未満になったら終了する。
３．所定の繰り返し数に達したら終了する。
【００９５】
トランザクション識別部１４０は、識別終了条件が満たされた場合、推定トランザクションの識別処理を終了する。また、トランザクション識別部１４０は、識別終了条件が満たされていない場合、処理をステップＳ５１に進める。
【００９６】
図１１は、確からしいトランザクションの選択処理手順を示すフローチャートの前半である。以下、図１１に示す処理をステップ番号に沿って説明する。
［ステップＳ７１］トランザクション識別部１４０は、ｍ＝１，２，・・・、Ｍ（Ｍは、ｋの未識別子孫メッセージリストに登録されたメッセージ数）のｍの取り得る値毎に、ステップＳ７２〜ステップＳ７８の処理を実行する。
【００９７】
［ステップＳ７２］トランザクション識別部１４０は、未識別子孫メッセージリストＵから、ｍ個のメッセージの組み合わせＵｓを選択する。そして、トランザクション識別部１４０は、選択可能な全ての組み合わせに対して、ステップＳ７３〜ステップＳ７７の処理を実行する。
【００９８】
［ステップＳ７３］トランザクション識別部１４０は、選択されたメッセージの組み合わせＵｓによって構成されるトランザクションＳの確からしさｈ（Ｓ）＝ｆ（Ｓ）＋α×ｇ（Ｓ）を計算する。αは、予め設定された係数（例えば０．２）である。
【００９９】
［ステップＳ７４］トランザクション識別部１４０は、ステップＳ７３で計算したトランザクションＳの確からしさｈ（Ｓ）が、最も確からしさが大きいと判定されたトランザクションＳ１の確からしさｈ（Ｓ１）より大きいか否かを判定する。ｈ（Ｓ）がｈ（Ｓ１）より大きい場合、処理がステップＳ７５に進められる。ｈ（Ｓ）がｈ（Ｓ１）未満の場合、処理がステップＳ７６に進められる。
【０１００】
［ステップＳ７５］トランザクション識別部１４０は、トランザクションＳ１を、２番目に確からしさが大きいトランザクションＳ２とする。また、トランザクション識別部１４０は、ステップＳ７３で構成したトランザクションＳを、最も確からしさが大きいトランザクションＳ１とする。その後、処理がステップＳ７８に進められる。
【０１０１】
［ステップＳ７６］トランザクション識別部１４０は、ステップＳ７３で計算したトランザクションＳの確からしさｈ（Ｓ）が、２番目に確からしさが大きいトランザクションＳ２の確からしさｈ（Ｓ２）より大きいか否かを判定する。ｈ（Ｓ）がｈ（Ｓ２）より大きい場合、処理がステップＳ７７に進められる。ｈ（Ｓ）がｈ（Ｓ２）未満の場合、処理がステップＳ７８に進められる。
【０１０２】
［ステップＳ７７］トランザクション識別部１４０は、ステップＳ７３で構成したトランザクションＳを、２番目に確からしさが大きいトランザクションＳ２とする。
［ステップＳ７８］トランザクション識別部１４０は、ｍ個のメッセージからなる全ての組み合わせ全てについてステップＳ７３〜ステップＳ７５の処理が完了した場合、処理をステップＳ７９に進める。
【０１０３】
［ステップＳ７９］トランザクション識別部１４０は、ｍの取り得るすべての値に応じて、ステップＳ７２〜ステップＳ７８の処理が完了した場合、処理をステップＳ８１（図１２に示す）に進める。
【０１０４】
図１２は、確からしいトランザクションの選択処理手順を示すフローチャートの後半である。以下、図１２に示す処理をステップ番号に沿って説明する。
［ステップＳ８１］トランザクション識別部１４０は、最も確からしさが大きいと判定されたトランザクションＳ１の確からしさｈ（Ｓ１）を、２番目に確からしさが大きいトランザクションＳ２の確からしさｈ（Ｓ２）で除算した値が、所定の閾値より大きいか否かを判定する。除算結果が所定の閾値より大きければ、処理がステップＳ８２に進められる。除算結果が所定の閾値以下であれば、処理がステップＳ８９に進められる。
【０１０５】
［ステップＳ８２］トランザクション識別部１４０は、最も確からしさが大きいと判定されたトランザクションＳ１に属する各未識別子孫メッセージｕについて、ステップＳ８３〜ステップＳ８６の処理を実行する。
【０１０６】
［ステップＳ８３］トランザクション識別部１４０は、未識別子孫メッセージｕの開始メッセージ識別状況を「推定（Ｅ）」にして、メッセージｋの推定子孫メッセージリストに未識別子孫メッセージｕを登録する。
【０１０７】
［ステップＳ８４］トランザクション識別部１４０は、処理対象の未識別子孫メッセージｕに対して設定された開始メッセージ候補リストに含まれる各開始メッセージｊについて、ステップＳ８５の処理を実行する。
【０１０８】
［ステップＳ８５］トランザクション識別部１４０は、開始メッセージｊの未識別子孫メッセージリストから、未識別子孫メッセージｕを除去する。
［ステップＳ８６］トランザクション識別部１４０は、処理対象の未識別子孫メッセージｕに対して設定された開始メッセージ候補リストに含まれるすべての開始メッセージｊについて、ステップＳ８５の処理が完了した場合、処理をステップＳ８７に進める。
【０１０９】
［ステップＳ８７］トランザクション識別部１４０は、最も確からしさが大きいと判定されたトランザクションＳ１に属する全ての未識別子孫メッセージｕについて、ステップＳ８３〜ステップＳ８６の処理が完了した場合、処理がステップＳ８８に進める。
【０１１０】
［ステップＳ８８］トランザクション識別部１４０は、推定トランザクションとして、最も確からしさが大きいと判定されたトランザクションＳ１を返す。その後、確からしいトランザクション選択処理が終了する。
【０１１１】
［ステップＳ８９］トランザクション識別部１４０は、最も確からしいトランザクションが未選択である旨を返す。その後、確からしいトランザクション選択処理が終了する。
このようにして、最も確からしさが大きいトランザクションが、２番目に確からしさが大きいトランザクションよりも確からしさが十分に大きければ、最も確からしさが大きいトランザクションが推定トランザクションとして決定される。
【０１１２】
次に、推定トランザクションの置換処理（図７のステップＳ１８）について説明する。
図１３は、推定トランザクションの置換処理手順を示すフローチャートの前半である。以下、図１３に示す処理をステップ番号に沿って説明する。
【０１１３】
［ステップＳ９１］トランザクション識別部１４０は、子孫メッセージ集合Ｂに含まれる各メッセージｋについて、ステップＳ９２〜ステップＳ１０８の処理を実行する。
［ステップＳ９２］トランザクション識別部１４０は、メッセージｋの開始メッセージ識別状況が「未識別」か否かを判断する。開始メッセージ識別状況が「未識別」であれば、処理がステップＳ９３に進められる。開始メッセージ識別状況が「確定」であれば、処理がステップＳ１０９（図１４に示す）に進められる。
【０１１４】
［ステップＳ９３］トランザクション識別部１４０は、ダミーのトランザクションＳ＃を生成し、置換トランザクション候補Ｓ＊の初期値とする。また、トランザクション識別部１４０は、置換トランザクション候補Ｓ＊の確からしさｈ（Ｓ＊）＝ｈ（Ｓ＃）＝所定値とする。
【０１１５】
［ステップＳ９４］トランザクション識別部１４０は、メッセージｋの開始メッセージ候補リスト内の各メッセージｊについて、ステップＳ９５〜ステップＳ９７の処理を実行する。
【０１１６】
［ステップＳ９５］トランザクション識別部１４０は、メッセージｊ、メッセージｊの確定子孫メッセージリストおよび推定子孫メッセージリスト、およびメッセージｋによってトランザクションＳを構成し、トランザクションＳの確からしさｈ（Ｓ）＝ｆ（Ｓ）＋α×ｇ（Ｓ）を計算する。
【０１１７】
［ステップＳ９６］トランザクション識別部１４０は、ステップＳ９５で構成したトランザクションＳの確からしさｈ（Ｓ）が、トランザクションＳ＊の確からしさｈ（Ｓ＊）より大きいか否かを判断する。ｈ（Ｓ）の方がｈ（Ｓ＊）より大きければ、処理がステップＳ９７に進められる。ｈ（Ｓ）がｈ（Ｓ＊）以下であれば、処理がステップＳ９８に進められる。
【０１１８】
［ステップＳ９７］トランザクション識別部１４０は、ステップＳ９５で構成したトランザクションＳをＳ＊とする。
［ステップＳ９８］トランザクション識別部１４０は、メッセージｋの開始メッセージ候補リスト内の全てのメッセージｊについて、ステップＳ９５〜ステップＳ９７の処理が完了した場合、処理をステップＳ９９に進める。
【０１１９】
［ステップＳ９９］トランザクション識別部１４０は、置換トランザクション候補Ｓ＊の確からしさｈ（Ｓ＊）が所定の閾値より大きいか否かを判断する。ｈ（Ｓ＊）が所定の閾値より大きい場合、処理がステップＳ１０１（図１４に示す）に進められる。ｈ（Ｓ＊）が所定の閾値以下の場合、処理がステップＳ１０９（図１４に示す）に進められる。
【０１２０】
図１４は、推定トランザクションの置換処理手順を示すフローチャートの後半である。以下、図１４に示す処理をステップ番号に沿って説明する。
［ステップＳ１０１］トランザクション識別部１４０は、トランザクションＳ＊の開始メッセージｊ＊のトランザクション識別状況はトランザクション識別状況が「識別」か否かを判定する。トランザクション識別状況が「識別」であれば、処理がステップＳ１０２に進められる。トランザクション識別状況が「未識別」であれば、処理がステップＳ１０３に進められる。
【０１２１】
［ステップＳ１０２］トランザクション識別部１４０は、メッセージｊ＊、メッセージｊ＊の確定子孫メッセージリストおよび推定子孫メッセージリストによって構成されるトランザクションＳの推定回数ｇ（Ｓ）を１だけ減らす。その後、処理がステップＳ１０４に進められる。
【０１２２】
［ステップＳ１０３］トランザクション識別部１４０は、メッセージｊ＊のトランザクション識別状況を「識別」にする。
［ステップＳ１０４］トランザクション識別部１４０は、メッセージｋの開始メッセージ識別状況を「置換（Ｆ）」にして、メッセージｊ＊の推定子孫メッセージリストにメッセージｋを登録する。
【０１２３】
［ステップＳ１０５］トランザクション識別部１４０は、メッセージｋの開始メッセージ候補リストに含まれる各メッセージｊについて、ステップＳ１０６の処理を実行する。
［ステップＳ１０６］トランザクション識別部１４０は、メッセージｊの未識別子孫メッセージリストからメッセージｋを除去する。
【０１２４】
［ステップＳ１０７］トランザクション識別部１４０は、メッセージｋの開始メッセージ候補リストに含まれるすべてのメッセージｊについてステップＳ１０６の処理が完了すると、処理をステップＳ１０８に進める。
【０１２５】
［ステップＳ１０８］トランザクション識別部１４０は、推定トランザクションＳ＊の情報を記録し、推定回数ｇ（Ｓ＊）を１だけ増やす。
［ステップＳ１０９］トランザクション識別部１４０は、子孫メッセージ集合Ｂに含まれる全てのメッセージｋについてステップＳ９２〜ステップＳ１０８の処理が完了したら、推定トランザクションの置換処理を終了する。
【０１２６】
以上のような処理によって得られたトランザクションが、トランザクションモデルとして、トランザクション記憶部１１３に格納される。
以下、フローチャートによって示した個々の処理内容を詳細に説明する。
【０１２７】
まず、図８のステップＳ３１におけるメッセージ間の呼び出し関係の判定処理について説明する。呼び出し条件の第１の例は、「開始メッセージ候補の要求時刻から応答時刻までの期間が、子孫メッセージ候補の要求時刻から応答時刻までの期間を包含する」というものである。
【０１２８】
図１５は、呼び出し条件の第１の例を示す図である。図１５には、４つのメッセージ４１〜４４が示されている。図中、横軸に時間軸が取られている。また、各メッセージ４１〜４４に示される黒い三角が要求時刻を示し、白い三角が応答時刻を示している。各メッセージ４１〜４４には、それぞれ「ＩＤ０１」、「ＩＤ０２」、「ＩＤ０３」、「ＩＤ０４」の識別番号が付与されている。
【０１２９】
なお、メッセージ４１〜４４は、それぞれステップＳ１２（図７に示す）の処理によって、開始メッセージ候補なのか子孫メッセージ候補なのかが判別されているものとする。この例では、メッセージ４１は開始メッセージ候補であり、メッセージ４２〜４４は子孫メッセージ候補である。
【０１３０】
ここで、開始メッセージ候補であるメッセージ４１と、子孫メッセージ候補であるメッセージ４２〜４４との間の関係が、「開始メッセージ候補の要求時刻から応答時刻までの期間が、子孫メッセージ候補の要求時刻から応答時刻までの期間を包含する」という呼び出し条件を満たすか否かが判断される。
【０１３１】
この呼び出し条件に従ってメッセージ４１〜４４間の関係を見ると、メッセージ４２，４３の要求時刻から応答時刻までの期間は、メッセージ４１の要求時刻から応答時刻までの期間に包含されている。一方、メッセージ４４の要求時刻から応答時刻までの期間は、メッセージ４１の要求時刻から応答時刻までの期間に包含されていない。従って、メッセージ４２，４３は、メッセージ４１の子孫としての条件を満たしているが、メッセージ４４は、メッセージ４１の子孫としての条件を満たしていない。
【０１３２】
メッセージ間の呼び出し関係の第２の条件としては、「開始メッセージ候補の要求時刻から所定の時間（呼び出し制限時間）内に子孫メッセージ候補の要求時刻が含まれる」という条件を設定できる。
【０１３３】
図１６は、呼び出し条件の第２の例を示す図である。図１６には、４つのメッセージ５１〜５４が示されている。図中、横軸に時間軸が取られている。また、各メッセージ５１〜５４に示される黒い三角が要求時刻を示し、白い三角が応答時刻を示している。各メッセージ５１〜５４には、それぞれ「ＩＤ０１」、「ＩＤ０２」、「ＩＤ０３」、「ＩＤ０４」の識別番号が付与されている。また、メッセージ５１が開始メッセージ候補であり、メッセージ５２〜５４が子孫メッセージ候補である。
【０１３４】
ここで、開始メッセージ候補であるメッセージ５１と、子孫メッセージ候補であるメッセージ５２〜５４との間の関係が、「開始メッセージ候補の要求時刻から所定の時間（呼び出し制限時間）内に子孫メッセージ候補の要求時刻が含まれる」という呼び出し条件を満たすか否かが判断される。なお、図１６では、メッセージ５１の要求時刻からの呼び出し制限時間５６を、斜線入りの矩形で示している。
【０１３５】
この呼び出し条件に従ってメッセージ５１〜５４間の関係を見ると、メッセージ５２，５３の要求時刻は、メッセージ５１の要求時刻から呼び出し制限時間５６経過前である。一方、メッセージ５４の要求時刻は、メッセージ５１の要求時刻から呼び出し制限時間５６経過後である。従って、メッセージ５２，５３は、メッセージ５１の子孫としての条件を満たしているが、メッセージ５４は、メッセージ５１の子孫としての条件を満たしていない。
【０１３６】
メッセージ間の呼び出し関係の第３の条件としては、「呼び出し元メッセージのサーバＩＰアドレスと呼び出し先メッセージのクライアントＩＰアドレスが一致するものどうしをつなげていくと、開始メッセージ候補から直接または間接に呼び出される子孫メッセージ候補につながる」という条件を設定できる。
【０１３７】
図１７は、呼び出し条件の第３の例を示す図である。図１７には、４つのメッセージ６１〜６４が示されている。図中、横軸に時間軸が取られている。また、各メッセージ６１〜６４に示される黒い三角が要求時刻を示し、白い三角が応答時刻を示している。各メッセージ６１〜６４には、それぞれ「ＩＤ０１」、「ＩＤ０２」、「ＩＤ０３」、「ＩＤ０４」の識別番号が付与されている。また、メッセージ６１が開始メッセージ候補であり、メッセージ６２〜６４が子孫メッセージ候補である。
【０１３８】
ここで、開始メッセージ候補であるメッセージ６１と、子孫メッセージ候補であるメッセージ６２〜６４との間の関係が、「呼び出し元メッセージのサーバＩＰアドレスと呼び出し先メッセージのクライアントＩＰアドレスが一致するものどうしをつなげていくと、開始メッセージ候補からすべての子孫メッセージ候補につながる」という呼び出し条件を満たすか否かが判断される。なお、図１７では、各メッセージ６１〜６４の呼び出し元メッセージのサーバＩＰアドレスを「ｓ＿ｉｐ」で示しており、呼び出し先メッセージのクライアントＩＰアドレスを「ｃ＿ｉｐ」で示している。
【０１３９】
この呼び出し条件に従ってメッセージ６１〜６４間の関係を見ると、メッセージ６１の呼び出し元メッセージのサーバＩＰアドレスと、メッセージ６２の呼び出し先クライアントＩＰアドレスが一致する。また、メッセージ６２の呼び出し元メッセージのサーバＩＰアドレスと、メッセージ６３の呼び出し先クライアントＩＰアドレスが一致する。一方、メッセージ６１〜６３の呼び出し元メッセージのサーバＩＰアドレスとメッセージ６４の呼び出し先クライアントＩＰアドレスとは一致しない。従って、メッセージ６２，６３は、メッセージ６１の子孫としての条件を満たしているが、メッセージ６４は、メッセージ６１の子孫としての条件を満たしていない。
【０１４０】
次に、図４に示したように、Ｗｅｂサーバ３１、アプリケーションサーバ３２、ＤＢサーバ３３によってクライアント２１〜２３に対してサービスを提供する場合のトランザクションの分析例を具体的に説明する。この例では、クライアント２１〜２３とＷｅｂサーバ３１との間のメッセージ交換は、ＨＴＴＰで行われる。また、Ｗｅｂサーバ３１とアプリケーションサーバ３２との間のメッセージ交換は、ＩＩＯＰで行われる。さらに、アプリケーションサーバ３２とＤＢサーバ３３との間のメッセージ交換は、ＲＤＢ２で行われる。
【０１４１】
ところで、このシステムでは、トランザクションは多階層のメッセージで構成される。すなわち、Ｗｅｂサーバ３１からの要求がアプリケーションサーバ３２に渡され、アプリケーションサーバ３２からの要求がＤＢサーバ３３に渡される。本実施の形態では、このような多階層のトランザクションの構造情報を、以下のように表すものとする。
【０１４２】
図１８は、トランザクションの構造情報の第１の例を示す図である。トランザクション７１は３階層構造である。
まず、処理内容が同一のメッセージの組み合わせで、かつ呼び出し関係が同一の階層構造を持つ複数のトランザクションは、同一種類のトランザクションであるとみなす。この場合、トランザクションの種類毎に０，１，・・・のようにＩＤを与えて、トランザクションの種類を区別する。
【０１４３】
トランザクション種類ＩＤの付け方は、分析者の都合に合わせて適宜設定できるものとする。例えば、新しいトランザクションの種類が識別された順でトランザクション種類のＩＤをつけることができる。また、トランザクション識別処理中には仮のＩＤを付けておき、識別処理終了後にメッセージの文字列の辞書順にソートして、トランザクション種類のＩＤを付けなおすこともできる。
【０１４４】
各トランザクション種類について、どのようなメッセージの組み合わせでどのような階層構造になっているか分かるように、所定の形式でトランザクションの構造情報７２を記述するものとする。
【０１４５】
具体的には、トランザクション種類のＩＤ、およびトランザクション内で各メッセージがどのメッセージから何番目に呼び出されるかについての情報を組み合わせて、構造情報７２を記述する。
【０１４６】
例えば、図１８に示す種類ＩＤが「０」のトランザクション７１は、開始メッセージ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」は、トランザクション種類ＩＤ、子メッセージが呼び出された順番、孫メッセージ呼び出された順番をハイフンでつなげたものであり、このRDB2;pがトランザクション種類０(の開始メッセージ)の０番目の子メッセージの０番目の孫メッセージであることを意味する。
【０１４８】
また、このトランザクション全体の構造情報７２を「0;HTTP;A、0-0;IIOP;i、0-0-0;RDB2;p」のように記述するものとする。
図１９は、トランザクションの構造情報の第２の例を示す図である。図１９に示す種類「１」のトランザクション７３の階層構造では、開始メッセージHTTP;A(種別HTTP、処理内容A)が、メッセージIIOP;i(種別IIOP、処理内容i)とメッセージIIOP;j(種別IIOP、処理内容j)との２つのメッセージをこの順に呼び出す。また、メッセージIIOP;iが、メッセージRDB2;p(種別RDB2、処理内容p)とメッセージRDB2;q(種別RDB2、処理内容q)との２つのメッセージをこの順に呼び出す。さらに、メッセージIIOP;jが、メッセージRDB2;r(種別RDB2、処理内容r)を呼び出す。このように、トランザクション７３では、開始メッセージ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」は、トランザクション種類ＩＤ、子メッセージが呼び出された順番、孫メッセージが呼び出された順番をハイフンでつなげたものであり、このRDB2;rがトランザクション種類１(の開始メッセージ)の１番目の子メッセージの０番目の孫メッセージであることを意味する。
【０１５０】
また、このトランザクション全体の構造情報７４を「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」のように記述する。
以下に、このような構造情報に基づいて、具体的なトランザクション識別処理例について説明する。
【０１５１】
［第１のトランザクション識別例］
図２０は、メッセージ履歴の例を示す図である。このメッセージ履歴１１２には、メッセージＩＤ＝０，１，・・・，４０の４１個のメッセージ情報が記録されている。各メッセージ情報は、「，」でデータが区切られており、各データは、左から順に「メッセージＩＤ」、「要求時刻」、「応答時刻」、「種別」、「処理内容」、「クライアントＩＰアドレス」、「サーバＩＰアドレス」を表している。
【０１５２】
このようなメッセージ履歴１１２に基づいて、トランザクション識別部１４０は、各メッセージが開始メッセージか子孫メッセージかを判別する。そして、トランザクション識別部１４０は、開始メッセージを開始メッセージリストに登録し、子孫メッセージを子孫メッセージリストに登録する。
【０１５３】
ここで、トランザクション識別に用いる制約条件を、以下のように定義する。
・開始メッセージ条件として、「種別がHTTPである」という条件を設定する。
・メッセージ間の呼び出し関係の条件として、「開始メッセージ候補の要求時刻から応答時刻までの期間は、子孫メッセージ候補の要求時刻から応答時刻までの期間を包含する」という条件を設定する。
【０１５４】
これらの条件に基づいて、トランザクション識別部１４０は、メッセージ履歴内の各メッセージが、開始メッセージであるか子孫メッセージであるかを識別し、それぞれ開始メッセージリスト、子孫メッセージリストに登録する。
【０１５５】
そして、トランザクション識別部１４０は、各開始メッセージに関連づけて、確定子孫メッセージリスト、未識別子孫メッセージリスト、および空の推定子孫メッセージリストを作成し、トランザクション識別状況を「未識別（Ｕ）」と設定し、開始メッセージ集合に登録する。また、トランザクション識別部１４０は、子孫メッセージに関連づけて、開始メッセージ候補リストを作成し、開始メッセージ識別状況を設定し、子孫メッセージ集合に登録する。なお、開始メッセージ識別状況の設定方法は、以下の通りである。
【０１５６】
ａ．その開始メッセージ候補リストの要素数が1の場合は、その子孫メッセージについて開始メッセージが確定するので、その開始メッセージ識別状況を「確定（Ｄ）」にする。
【０１５７】
ｂ．その開始メッセージ候補リストの要素数が2以上の場合は、その子孫メッセージについて開始メッセージがまだ識別できないので、その開始メッセージ識別状況を「未識別（Ｕ）」にする。
【０１５８】
ｃ．その開始メッセージ候補リストの要素数が0の場合は、その子孫メッセージについて開始メッセージが存在しないので、分析対象外として子孫メッセージ集合に登録しない。
【０１５９】
図２１は、開始メッセージ集合の例を示す図である。この開始メッセージ集合Ａには、図２０に示したメッセージのうち、開始メッセージ条件を満たしたメッセージの情報が登録されている。メッセージの情報内の各データは「、」で区切られており、「メッセージＩＤ」、「要求時刻」、「応答時刻」、「種別」、「処理内容」、「｛確定子孫メッセージリスト｝」、「｛推定子孫メッセージリスト｝」、「｛未識別子孫メッセージリスト｝」、「トランザクション識別状況」の順でデータが並べられている。
【０１６０】
図２２は、子孫メッセージ集合の例を示す図である。この子孫メッセージ集合Ｂには、図２０に示したメッセージのうち、開始メッセージ条件を満たしていないメッセージの情報が登録されている。メッセージの情報内の各データは「、」で区切られており、「メッセージＩＤ」、「要求時刻」、「応答時刻」、「種別」、「処理内容」、「｛開始メッセージ候補リスト｝」、「開始メッセージ識別状況」の順でデータが並べられている。
【０１６１】
なお、図２０に示すＩＤ「４０」のメッセージは、開始メッセージ候補が存在しないため分析対象からは除外される。そのため、ＩＤ「４０」のメッセージは、子孫メッセージ集合１４２に登録されていない。
【０１６２】
その後、トランザクション識別部１４０は、開始メッセージ集合Ａに登録されたメッセージを順番に処理対象のメッセージｋとする。そして、トランザクション識別部１４０は、メッセージｋの未識別子孫メッセージリストが空ならばトランザクションが確定するので、そのメッセージｋと確定子孫メッセージリストに登録されたメッセージによって確定トランザクションを構成する。
【０１６３】
図２３は、未識別子孫メッセージリストが空の開始メッセージの例を示す図である。この図では、開始メッセージ集合Ａ内の未識別子孫メッセージリストが空の開始メッセージのみを示している。未識別子孫メッセージリストが空の開始メッセージの「｛確定子孫メッセージリスト｝」のフィールドを参照することで、子孫メッセージ集合Ｂから、未識別子孫メッセージリストが空の開始メッセージに関連する子孫メッセージを抽出できる。
【０１６４】
図２４は、未識別子孫メッセージリストが空の開始メッセージに関連する子孫メッセージの例を示す図である。この図では、子孫メッセージ集合Ｂ内のメッセージのうち、未識別子孫メッセージリストが空の開始トランザクションに関連するもののみを示している。
【０１６５】
図２５は、確定トランザクションの構成結果を示す図である。この図には、図２３、図２４に示されたメッセージに基づいて確定したトランザクション７１〜７８が示されている。
【０１６６】
この例では、各トランザクション７１〜７８の構成が、メッセージを要求側と応答側の情報に分けて２レコード１組で記述されている。要求側のレコードには、「トランザクションＩＤ」、「要求/応答時刻」、「種別」、「req」、「メッセージＩＤ」、「トランザクションの構造情報」、「処理内容」、「クライアントＩＰアドレス」、「サーバＩＰアドレス」、「(開始メッセージ識別状況)」の順でデータが並べられている。また、応答側のレコードには、「トランザクションＩＤ」、「応答時刻」、「種別」、「res」、「メッセージＩＤ」、「トランザクションの構造情報」の順でデータが並べられている。
【０１６７】
このとき、トランザクション識別部１４０は、トランザクションの確定回数ｆ（Ｓ）を数え上げる。その結果、処理内容がＡであるＨＴＴＰメッセージと処理内容がｐであるＲＤＢ２メッセージとからなるトランザクション７１，７２，７４，７５，７７，７８の確定回数f(HTTP;A,RDB2;p)=6が算出される。同様に、処理内容がＡであるＨＴＴＰメッセージ、処理内容がｐであるＲＤＢ２メッセージ、および処理内容がｑであるＲＤＢ２メッセージからなるトランザクション７３，７６の確定回数f(HTTP;A,RDB2;p,RDB2;q)=2が算出される。
【０１６８】
トランザクション７１〜７８が構成されると、トランザクション識別部１４０は、確定したトランザクション７１〜７８に含まれるメッセージを、開始メッセージ集合Ａと子孫メッセージ集合Ｂから削除する。
【０１６９】
図２６は、確定トランザクションに属するメッセージ削除後の開始メッセージ集合を示す図である。開始メッセージ集合Ａに残された各メッセージは、トランザクション識別状況が「未確定（Ｕ）」の状態である。
【０１７０】
図２７は、確定トランザクションに属するメッセージ削除後の子孫メッセージ集合を示す図である。子孫メッセージ集合Ｂに残されたメッセージには、開始メッセージ識別状況が「未確定（Ｕ）」のものが多数存在する。
【０１７１】
その後、トランザクション識別部１４０は、推定トランザクションの識別処理を行う。具体的には、トランザクション識別部１４０は、開始メッセージ集合Ａ内に残った各メッセージを処理対象のメッセージｋとして、そのメッセージｋ、メッセージｋの確定子孫メッセージリストに含まれるメッセージ、メッセージｋの推定子孫メッセージリストに含まれるメッセージ、およびメッセージｋの未識別子孫メッセージリストから選択される最大２個のメッセージの組み合わせによって、トランザクションを構成する。このとき、未識別子孫メッセージリストから選択されるメッセージの組み合わせの数に応じたトランザクションが構成される。そして、トランザクション識別部１４０は、構成された各トランザクションの中から、最も確からしいトランザクションを選択する。
【０１７２】
この例では、トランザクションＳの確からしさをh(S)=f(S)+0.2×g(S)と定義する（f(S)は確定回数、g(S)は推定回数）。トランザクション識別部１４０は、確からしさの値が最大のトランザクションをＳ１、２番目の値を持つトランザクションをＳ２で表す。
【０１７３】
この例では、初期状態として、メッセージｋとメッセージｋの確定子孫メッセージリストで構成されるトランザクションをＳ１とし、ダミーのトランザクション（Ｓ＃と表記する)をＳ２とする。Ｓ＃の確からしさh(S#)=0.9とする。
【０１７４】
最も確からしいトランザクションを選択する条件「h(S1)/h(S2)>閾値」において、閾値＝２とする。
まず、ＩＤ「２」の開始メッセージに対する最も確からしいトランザクションの選択処理が行われる。ＩＤ「２」の開始メッセージは、確定子孫メッセージのＩＤが「３」、未識別子孫メッセージのＩＤが「５」である。従って、可能なメッセージの組み合わせは、(HTTP;A,RDB2;p)、あるいは(HTTP;A,RDB2;p,RDB2;q)である。
【０１７５】
これらの組み合わせによって構成されるトランザクションの確からしさは、h(HTTP;A,RDB2;p)=6、h(HTTP;A,RDB2;p,RDB2;q)=2と計算される。このとき、最も確からしいトランザクションの確からしさと、２番目に確からしいトランザクションの確からしさの比は、(S1)/h(S2)＝６／２=３となり、閾値２よりも大きい。
【０１７６】
その結果、トランザクション識別部１４０は、推定トランザクションとして(HTTP;A,RDB2;p)を選択し、推定回数g(HTTP;A,RDB2;p)を１だけ増やす。
また、トランザクション識別部１４０は、ＩＤ「２」のメッセージのトランザクション識別状況を「識別（Ｓ）」に変える。
【０１７７】
図２８は、トランザクション識別状況変更後の開始メッセージ集合を示す図である。このように、開始メッセージに対するトランザクションが確定する毎に、トランザクション識別状況をＳに変更することで、開始トランザクション集合Ａ内での未処理のメッセージと処理済みのメッセージとを容易に判別できる。
【０１７８】
以下同様に、ＩＤ「４」の開始メッセージについての推定トランザクションが構成される。具体的には、ＩＤ「４」の開始メッセージは、ＩＤ「６」の確定子孫メッセージおよびＩＤ「５」の未識別子孫メッセージを有している。従って、可能なメッセージの組み合わせは、(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)が選択される。そして、トランザクション識別部１４０は、推定回数g(HTTP;A,RDB2;p)を1だけ増やす。さらに、トランザクション識別部１４０は、ＩＤ「４」のメッセージのトランザクション識別状況を「識別（Ｓ）」に変える。
【０１７９】
次に、ＩＤ「１２」の開始メッセージについての推定トランザクションが構成される。具体的には、開始メッセージ１２は、ＩＤ「１３」の確定子孫メッセージおよびＩＤ「１５」の未識別子孫メッセージを有する。従って、可能なメッセージの組み合わせは、(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)が選択される。そして、トランザクション識別部１４０は、推定回数g(HTTP;A,RDB2;p)を１だけ増やす。さらに、トランザクション識別部１４０は、ＩＤ「１２」のメッセージのトランザクション識別状況を「識別（Ｓ）」に変える。
【０１８０】
次に、ＩＤ「１２」の開始メッセージについての推定トランザクションが構成される。具体的には、ＩＤ「１４」の開始メッセージは,確定子孫メッセージを持たず、ＩＤ「１５」の未識別子孫メッセージを有する。従って、可能なメッセージの組み合わせは、(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)が選択される。そして、トランザクション識別部１４０は、推定回数g(HTTP;A,RDB2;p)を１だけ増やす。さらに、トランザクション識別部１４０は、ＩＤ「１４」のメッセージのトランザクション識別状況を「識別（Ｓ）」に変えると共に、ＩＤ「１５」のメッセージの開始メッセージ識別状況を「推定（Ｅ）」に変える。
【０１８１】
図２９は、開始メッセージ識別状況変更後の子孫メッセージ集合を示す図である。このように、子孫メッセージに対する開始メッセージが推定されると、開始メッセージ識別状況をＥに変更され、開始メッセージが確定している子孫メッセージと区別される。
【０１８２】
また、ＩＤ「４」の開始メッセージについて、ＩＤ「１５」の未識別子孫メッセージが選択されたので、トランザクション識別部１４０は、開始メッセージ集合Ａ内のＩＤ「１４」のメッセージの情報において、ＩＤ「１５」を未識別子孫メッセージリストから推定子孫メッセージリストに移動する。
【０１８３】
さらに、トランザクション識別部１４０は、ＩＤ「１５」の子孫メッセージの開始メッセージ候補リストを調べる。すると、開始メッセージ候補としてＩＤ「１２」、「１４」が登録されているので、選択されたＩＤ「１４」の開始メッセージ以外の開始メッセージ候補（ＩＤ「１２」）の情報において、未識別子孫メッセージリストからＩＤ「１５」を削除する。
【０１８４】
図３０は、子孫のメッセージが推定された後の開始メッセージ集合を示す図である。ＩＤ「１５」のメッセージが、ＩＤ「１４」のメッセージの子孫と推定されたため、ＩＤ「１４」のメッセージの情報では、ＩＤ「１５」が未識別子孫メッセージリストから推定子孫メッセージリストに移動され、ＩＤ「１２」のメッセージの情報では、ＩＤ「１５」が未識別子孫メッセージリストから削除されている。
【０１８５】
次に、ＩＤ「１６」の開始メッセージについての推定トランザクションが構成される。ＩＤ「１６」の開始メッセージは、ＩＤ「１７」、「１８」の確定子孫メッセージおよびＩＤ「２０」の未識別子孫メッセージを有する。従って、可能なメッセージの組み合わせは、(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)が選択される。そして、トランザクション識別部１４０は、推定回数g(HTTP;A,RDB2;p,RDB2;q)を１だけ増やす。さらに、トランザクション識別部１４０は、ＩＤ「１６」のメッセージのトランザクション識別状況を「識別（Ｓ）」に変える。
【０１８６】
次に、ＩＤ「１９」の開始メッセージについての推定トランザクションが構成される。ＩＤ「１９」の開始メッセージは、確定子孫メッセージを持たず、ＩＤ「２０」の未識別子孫メッセージを有する。従って、可能なメッセージの組み合わせは、(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)が選択される。そして、トランザクション識別部１４０は、推定回数g(HTTP;A,RDB2;p)を1だけ増やす。さらに、トランザクション識別部１４０は、ＩＤ「１９」のメッセージのトランザクション識別状況を「識別（Ｓ）」に変えると共に、ＩＤ「２０」のメッセージの開始メッセージ識別状況を「推定（Ｅ）」に変える。
【０１８７】
このとき、トランザクション識別部１４０は、ＩＤ「１９」の開始メッセージについて、ＩＤ「２０」の未識別子孫メッセージが選択されたので、ＩＤ「２０」のメッセージを未識別子孫メッセージリストから推定子孫メッセージリストに移動する。また、トランザクション識別部１４０は、ＩＤ「２０」の子孫メッセージの開始メッセージ候補リストを調べると、ＩＤ「１６」、ＩＤ「１９」の開始メッセージ候補を有しているので、選択されたＩＤ「１９」の開始メッセージ以外のＩＤ「１６」の開始メッセージ候補の情報において、未識別子孫メッセージリストからＩＤ「２０」を削除する。
【０１８８】
次に、ＩＤ「３０」のメッセージに対する最も確からしいトランザクションの選択が行われる。ＩＤ「３０」の開始メッセージは、ＩＤ「３１」、「３７」の確定子孫メッセージ、ＩＤ「３３」、「３４」、「３６」の未識別子孫メッセージを有する。開始メッセージと確定子孫メッセージ、および未識別子孫メッセージからの最大２個による可能なメッセージの組み合わせは下記の６通りになる。
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)が選択される。そして、トランザクション識別部１４０は、推定回数g(HTTP;A,RDB2;p,RDB2;q)を１だけ増やす。また、トランザクション識別部１４０は、ＩＤ「３０」のメッセージのトランザクション識別状況を「識別（Ｓ）」に変える。
【０１８９】
次に、ＩＤ「３２」のメッセージに対する最も確からしいトランザクションの選択が行われる。ＩＤ「３２」の開始メッセージは、確定子孫メッセージを持たず、ＩＤ「３３」、「３４」の未識別子孫メッセージを有する。従って、可能なメッセージの組み合わせは、(HTTP;A)、(HTTP;A,RDB2;p)、(HTTP;A,RDB2;q)、(HTTP;A,RDB2;p,RDB2;q)である。トランザクションＳの確からしさは,h(HTTP;A,RDB2;p,RDB2;q)=2.4、それ以外は０と計算される。従って、S1=(HTTP;A,RDB2;p,RDB2;q)、S2＝S#となる。このとき、h(S1)/h(S2)=2.4/0.9>2なので、推定トランザクションとして(HTTP;A,RDB2;p,RDB2;q)が選択される。そして、トランザクション識別部１４０は、推定回数g(HTTP;A,RDB2;p,RDB2;q)を１だけ増やす。さらに、トランザクション識別部１４０は、ＩＤ「３２」のメッセージのトランザクション識別状況を「識別（Ｓ）」に変えると共に、ＩＤ「３３」、「３４」のメッセージの開始メッセージ識別状況を「推定（Ｅ）」に変える。
【０１９０】
このとき、トランザクション識別部１４０は、以下のように開始メッセージ集合Ａを更新する。ＩＤ「３２」の開始メッセージについて、ＩＤ「３３」、「３４」の未識別子孫メッセージが選択されたので、ＩＤ「３３」、「３４」のメッセージを未識別子孫メッセージリストから推定子孫メッセージリストに移動する。次に、トランザクション識別部１４０は、ＩＤ「３４」、「３５」の子孫メッセージの各開始メッセージ候補リストを調べる。すると、それぞれＩＤ「３０」、「３２」の開始メッセージ候補を有しているので、トランザクション識別部１４０は、選択されたＩＤ「３２」の開始メッセージ以外のＩＤ「３０」の開始メッセージ候補について、未識別子孫メッセージリストからＩＤ「３３」、「３４」を削除する。
【０１９１】
次に、ＩＤ「３５」のメッセージに対する最も確からしいトランザクションの選択処理が行われる。ＩＤ「３５」の開始メッセージは、確定子孫メッセージを持たず、ＩＤ「３６」の未識別子孫メッセージを有している。従って、可能なメッセージの組み合わせは、(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)が選択される。そして、トランザクション識別部１４０は、推定回数g(HTTP;A,RDB2;p)を１だけ増やす。さらに、トランザクション識別部１４０は、ＩＤ「３５」のメッセージのトランザクション識別状況を「識別（Ｓ）」に変更し、ＩＤ「３６」のメッセージの開始メッセージ識別状況を「推定（Ｅ）」に変更する。
【０１９２】
以上のようにして、開始メッセージ集合Ａに含まれる各メッセージに応じて、最も確からしいトランザクションが選択される。
図３１は、最も確からしいトランザクションの選択処理で選択されたトランザクションを示す図である。最も確からしいトランザクションの選択処理によって、図３１に示すようなトランザクション８１〜８９が生成される。
【０１９３】
トランザクション８１は、ＩＤ「２」の開始メッセージとＩＤ「３」の子孫メッセージとにより構成された推定トランザクションである。トランザクション８２は、ＩＤ「４」の開始メッセージとＩＤ「６」の子孫メッセージとにより構成された推定トランザクションである。トランザクション８３は、ＩＤ「１２」の開始メッセージとＩＤ「１３」の子孫メッセージとにより構成された推定トランザクションである。トランザクション８４は、ＩＤ「１４」の開始メッセージとＩＤ「１５」の子孫メッセージとにより構成された推定トランザクションである。トランザクション８５は、ＩＤ「１６」の開始メッセージとＩＤ「１７」、「１８」の子孫メッセージとにより構成された推定トランザクションである。トランザクション８６は、ＩＤ「１９」の開始メッセージとＩＤ「２０」の子孫メッセージとにより構成された推定トランザクションである。トランザクション８７は、ＩＤ「３０」の開始メッセージとＩＤ「３１」、「３７」の子孫メッセージとにより構成された推定トランザクションである。トランザクション８８は、ＩＤ「３２」の開始メッセージとＩＤ「３３」、「３４」の子孫メッセージとにより構成された推定トランザクションである。トランザクション８９は、ＩＤ「３５」の開始メッセージとＩＤ「３６」の子孫メッセージとにより構成された推定トランザクションである。
【０１９４】
図３２は、最も確からしいトランザクションの選択処理終了後の開始メッセージ集合を示す図である。このように、最も確からしいトランザクションの選択処理が終了すると、開始メッセージ集合Ａ内の各メッセージにおけるトランザクション識別状況は、全て「識別（Ｓ）」となる。
【０１９５】
図３３は、最も確からしいトランザクションの選択処理終了後の子孫メッセージ集合を示す図である。このように、開始メッセージ識別状況が「未識別（Ｕ）」であったメッセージのうち、生成された推定トランザクションに含まれるメッセージの開始メッセージ識別状況が「推定（Ｅ）」に変更されている。
【０１９６】
次に、トランザクション識別部１４０は、推定トランザクションの置換処理を行う。推定トランザクションの置換処理では、子孫メッセージ集合Ｂの中で、開始メッセージ識別状況が「未識別（Ｕ）」のメッセージ（未識別子孫メッセージ）について推定トランザクションの置換を試みる。この例では、置換トランザクション候補Ｓ＊の置換条件「h(S*)>閾値」について、閾値=0を用いる。なお、初期値を、Ｓ＊＝Ｓ＃、ｈ（Ｓ＊）＝ｈ（Ｓ＃）＝０とする。
【０１９７】
図３３に示す状況では、子孫メッセージ集合Ｂの中で未識別なのはＩＤ「５」の子孫メッセージである。トランザクション識別部１４０は、そのメッセージの開始メッセージ候補として設定されているＩＤ「２」、「４」のメッセージについて、以下のように置換トランザクション候補を構成する。
【０１９８】
（ａ）ＩＤ「２」の開始メッセージが属する推定トランザクションは、S1=(HTTP;A,RDB2;p)である。これにＩＤ「５」のメッセージを組み合わせた置換トランザクション候補は、S1*=(HTTP;A,RDB2;p,RDB2;q)である。
【０１９９】
（ｂ）開始メッセージ４が属する推定トランザクションは、S2=(HTTP;A,RDB2;p)である。これにＩＤ「５」のメッセージを組み合わせた置換トランザクション候補は、S2*=(HTTP;A,RDB2;q,RDB2;p)である。
【０２００】
これらの置換トランザクション候補の確からしさは、h(S1*)=2.6,h(S2*)=0と計算される。確からしさが最大のＳ１*は、置換条件h(S1*)>0を満たすので、トランザクション識別部１４０は、推定トランザクションＳ１をＳ１*に置換する。また、トランザクション識別部１４０は、Ｓ１の推定回数g(HTTP;A,RDB2;p)を１だけ減らし、Ｓ１*の推定回数g(HTTP;A,RDB2;p;RDB2;q)を１だけ増やす。さらに、トランザクション識別部１４０は、ＩＤ「５」の開始メッセージ識別状況を「置換（Ｆ）」に変更する。
【０２０１】
図３４は、推定トランザクション置換処理後の子孫メッセージ集合を示す図である。図３４に示すように、推定トランザクションの置換処理によって推定トランザクションに追加されたメッセージの開始メッセージ識別状況には、「置換（Ｆ）」が設定される。
【０２０２】
図３５は、推定トランザクション置換処理によって構成された置換トランザクションを示す図である。元のトランザクション８１（推定トランザクション）に、ＩＤ「５」のメッセージが追加されることで、トランザクション８１ａ（置換トランザクション）が生成される。
【０２０３】
その後、トランザクション識別部１４０は、ＩＤ「２」の開始メッセージについて、ＩＤ「５」の未識別子孫メッセージが新たに選択されたので、ＩＤ「５」のメッセージを未識別子孫メッセージリストから推定子孫メッセージリストに移動する。また、トランザクション識別部１４０は、ＩＤ「５」の子孫メッセージの開始メッセージ候補リストを調べると、ＩＤ「２」、「４」の開始メッセージ候補を有しているため、選択されたＩＤ「２」以外のＩＤ「４」の開始メッセージについて、未識別子孫メッセージリストからＩＤ「５」を削除する。
【０２０４】
図３６は、推定トランザクション置換処理後の開始メッセージ集合を示す図である。図３６の開始メッセージ集合Ａでは、全てのメッセージに関して、未識別子孫メッセージリストが空となっている。すなわち、識別不能の子孫メッセージが存在していないことを示す。
【０２０５】
以上の処理により、全てのメッセージが識別されたので、トランザクション識別処理が終了し、識別結果が出力される。
図３７は、トランザクション識別結果を示す第１の図である。図３８は、トランザクション識別結果を示す第２の図である。図３７にはトランザクション識別結果９０の前半部分が示されており、図３８にはトランザクション識別結果９０の後半部分が示されている。この例では、トランザクション識別結果９０には、確定トランザクション、推定トランザクション、および置換トランザクションが識別された順に登録されている。
【０２０６】
なお、トランザクション識別結果として、トランザクションの開始時刻順に各トランザクションを並べて出力することもできる。
また、トランザクションの種類別に識別結果を出力することもできる。
【０２０７】
図３９は、種類別のトランザクション識別結果を示す図である。このトランザクション識別結果９１において、「0;HTTP;A,0-0;RDB2;p[11/6/5/7.0]」は、トランザクション種類ＩＤ０のトランザクションを示している。また、「1;HTTP;A,1-0;RDB2;p,1-1;RDB2;q[6/2/4/2.8]」は、トランザクション種類ＩＤ１のトランザクションを示している。
【０２０８】
図４０は、トランザクション種類ＩＤ０のトランザクションを示す図である。このトランザクション９２は、２階層のトランザクションである。ここで、図３９に示す「0;HTTP;A,0-0;RDB2;p[11/6/5/7.0]」における[11/6/5/7.0]の部分は、メッセージ履歴内で１１回識別され、そのうち６回は確定、５回は推定であり、トランザクションの確からしさ=6+0.2*5=7.0であることを示している。
【０２０９】
図４１は、トランザクション種類ＩＤ１のトランザクションを示す図である。このトランザクション９３は、２階層のトランザクションである。ここで、図３９に示す「1;HTTP;A,1-0;RDB2;p,1-1;RDB2;q[6/2/4/2.8]」における[6/2/4/2.8]の部分は、メッセージ履歴内で６回識別され、そのうち２回は確定、４回は推定であり、トランザクションの確からしさ=2+0.2*4=2.8であることを示している。
【０２１０】
［第２のトランザクション識別例］
次に、メッセージ情報に応答内容を含む場合のトランザクション識別例について説明する。この例では、メッセージ情報にＨＴＴＰのステータスコード等の応答内容が含まれる。
【０２１１】
図４２は、応答内容を含むメッセージのメッセージ履歴を示す図である。図４２に示すメッセージ履歴１１２に登録されたメッセージは、データが「メッセージＩＤ」、「要求時刻」、「応答時刻」、「種別」、「処理内容」、「応答内容」、「クライアントＩＰアドレス」、「サーバＩＰアドレス」の順で並べられている。ここで、応答内容は、要求に応じた処理の結果が示される。例えば、HTTPのメッセージでは、正常に処理された場合、応答内容として「ＯＫ」が設定され、正常に処理できなかった場合、応答内容として「ＮＧ」が設定される。また、ＲＤＢ２のメッセージでは、正常に処理された場合にのみ、応答内容として「ＯＫ」が設定される。
【０２１２】
このようなメッセージから、まず確定トランザクションが構成される。具体的には、開始メッセージ集合Ａの各メッセージｋについて、未識別子孫メッセージリストが空であれば、そのメッセージｋを開始メッセージとしたトランザクションが確定する。この場合、メッセージｋと、そのメッセージｋの確定子孫リストに含まれる各メッセージとによって、確定トランザクションが構成される。
【０２１３】
図４３は、確定トランザクションの構成結果を示す図である。この図には、図４２に示されたメッセージに基づいて確定したトランザクション２１１〜２１８が示されている。このトランザクション２１１〜２１８のデータフォーマットは、要求側のレコードについては、図２５に示した例と同様である。応答側のレコードは、「トランザクションＩＤ」、「応答時刻」、「種別」、「res」、「メッセージＩＤ」、「トランザクションの構造情報」、「応答内容」の順でデータが並べられている。このように、構成されたトランザクション内に「応答内容」のデータが追加されている。
【０２１４】
確定トランザクションを構成すると、トランザクション識別部１４０は、トランザクション確定回数ｆ（Ｓ）を数えあげる。このとき、トランザクションを構成するメッセージの種別、処置内容、および応答内容が一致するトランザクションを、同じトランザクションとしてカウントする。その結果、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と算出される。
【０２１５】
その後、推定トランザクション識別処理が行われる。すなわち、トランザクション識別部１４０は、確定トランザクションに属する開始メッセージと子孫メッセージとを、開始メッセージ集合Ａと子孫メッセージ集合Ｂとからそれぞれ削除する。
【０２１６】
図４４は、確定トランザクションに属する開始メッセージ削除後の開始メッセージ集合を示す図である。開始メッセージ集合Ａに残された各メッセージは、トランザクション識別状況が「未確定（Ｕ）」の状態である。
【０２１７】
図４５は、確定トランザクションに属する子孫メッセージ削除後の子孫メッセージ集合を示す図である。子孫メッセージ集合Ｂに残されたメッセージには、開始メッセージ識別状況が「未確定（Ｕ）」のものが多数存在する。
【０２１８】
次に、第１のメッセージ識別例と同様に、最も確からしいトランザクションの選択が行われる。
まず、ＩＤ「２」の開始メッセージに対する最も確からしいトランザクションの選択処理が行われる。ＩＤ「２」の開始メッセージは、ＩＤ「３」の確定子孫メッセージおよびＩＤ「５」の未識別子孫メッセージを有する。従って、可能なメッセージの組み合わせは、(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)=１と計算される。従って、h(S1)/h(S2)=5/1>2であり、推定トランザクションとして(HTTP;A;OK,RDB2;p;ok)が選択され、トランザクション識別部１４０は、推定回数g(HTTP;A;OK,RDB2;p;ok)を１だけ増やす。さらに、トランザクション識別部１４０は、ＩＤ「２」のメッセージのトランザクション識別状況を「識別（Ｓ）」に変える。
【０２１９】
次に、ＩＤ「４」の開始メッセージに対する最も確からしいトランザクションの選択処理が行われる。ＩＤ「４」の開始メッセージは、ＩＤ「６」の確定子孫メッセージおよびＩＤ「５」の未識別子孫メッセージを有する。従って、可能なメッセージの組み合わせは、(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なので、トランザクション識別部１４０は、推定トランザクションを選択しない。
【０２２０】
次に、ＩＤ「１２」の開始メッセージに対する最も確からしいトランザクションの選択処理が行われる。ＩＤ「１２」の開始メッセージは、ＩＤ「１３」の確定子孫メッセージおよびＩＤ「１５」の未識別子孫メッセージを有する。従って、可能なメッセージの組み合わせは、(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)が選択される。そして、トランザクション識別部１４０は、推定回数g(HTTP;A;OK,RDB2;p;ok)を１だけ増やす。さらに、トランザクション識別部１４０は、ＩＤ「１２」のメッセージのトランザクション識別状況を「識別（Ｓ）」に変える。
【０２２１】
次に、ＩＤ「１４」の開始メッセージに対する最も確からしいトランザクションの選択処理が行われる。ＩＤ「１４」の開始メッセージは、確定子孫メッセージを持たず、ＩＤ「１５」の未識別子孫メッセージを有する。従って、可能なメッセージの組み合わせは、(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)が選択される。そして、トランザクション識別部１４０は、推定回数g(HTTP;A;OK,RDB2;p;ok)を1だけ増やす。さらに、トランザクション識別部１４０は、ＩＤ「１４」のメッセージのトランザクション識別状況を「識別（Ｓ）」に変えると共に、ＩＤ「１５」のメッセージの開始メッセージ識別状況を「推定（Ｅ）」に変える。
【０２２２】
ここで、ＩＤ「１４」の開始メッセージについて、ＩＤ「１５」の未識別子孫メッセージが選択されたので、トランザクション識別部１４０は、ＩＤ「１５」を未識別子孫メッセージリストから推定子孫メッセージリストに移動する。次に、トランザクション識別部１４０は、ＩＤ「１５」の子孫メッセージの開始メッセージ候補リストを調べる。すると、ＩＤ「１２」、「１４」を開始メッセージ候補として持っているので、トランザクション識別部１４０は、選択されたＩＤ「１４」の開始メッセージ以外のＩＤ「１２」の開始メッセージ候補について、未識別子孫メッセージリストからＩＤ「１５」を削除する。
【０２２３】
次に、ＩＤ「１６」の開始メッセージに対する最も確からしいトランザクションの選択処理が行われる。ＩＤ「１６」の開始メッセージは、ＩＤ「１７」、「１８」の確定子孫メッセージおよびＩＤ「２０」の未識別子孫メッセージを有する。従って、可能なメッセージの組み合わせは、(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となり、トランザクション識別部１４０は、推定トランザクションを選択しない。
【０２２４】
次に、ＩＤ「１９」の開始メッセージに対する最も確からしいトランザクションの選択処理が行われる。ＩＤ「１９」の開始メッセージは、確定子孫メッセージを持たず、ＩＤ「２０」の未識別子孫メッセージを有する。従って、可能なメッセージの組み合わせは、(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)が選択される。そこで、トランザクション識別部１４０は、推定回数g(HTTP;A;OK,RDB2;p;ok)を1だけ増やす。さらに、トランザクション識別部１４０は、ＩＤ「１９」のメッセージのトランザクション識別状況を「識別（Ｓ）」に変えると共に、ＩＤ「２０」のメッセージの開始メッセージ識別状況を「推定（Ｅ）」に変える。
【０２２５】
ここで、ＩＤ「１９」の開始メッセージについて、ＩＤ「２０」の未識別子孫メッセージが選択されたので、トランザクション識別部１４０は、ＩＤ「２０」のメッセージを未識別子孫メッセージリストから推定子孫メッセージリストに移動する。次に、ＩＤ「２０」の子孫メッセージの開始メッセージ候補リストを調べると、ＩＤ「１６」、「１９」の開始メッセージ候補を有しているので、トランザクション識別部１４０は、選択されたＩＤ「１９」の開始メッセージ以外のＩＤ「１６」の開始メッセージ候補について、未識別子孫メッセージリストからＩＤ「２０」を削除する。
【０２２６】
次に、ＩＤ「３０」の開始メッセージに対する最も確からしいトランザクションの選択処理が行われる。ＩＤ「３０」の開始メッセージは、ＩＤ「３１」、「３７」の確定子孫メッセージＩＤ「３３」、「３４」、「３６」の未識別子孫メッセージを有する。開始メッセージと確定子孫メッセージ、および未識別子孫メッセージから選択された最大２個のメッセージによる可能なメッセージの組み合わせは、下記の６通りになる。
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)
ここで、トランザクションＳの確からしさは、h(HTTP;A,RDB2;p,RDB2;q)=2.2、それ以外=0と計算される。従って、S1=(HTTP;A;OK,RDB2;p;ok,RDB2;q;ok)、S2=S#となる。このとき、h(S1)/h(S2)=1/0.9<2なので、推定トランザクションが選択されない。
【０２２７】
次に、ＩＤ「３２」の開始メッセージに対する最も確からしいトランザクションの選択処理が行われる。ＩＤ「３２」の開始メッセージは、確定子孫メッセージを持たず、ＩＤ「３３」、「３４」の未識別子孫メッセージを有する。従って、可能なメッセージの組み合わせは、(HTTP;A;NG)、(HTTP;A;NG,RDB2;p;ok)、(HTTP;A;NG,RDB2;q;ok)、あるいは(HTTP;A;NG,RDB2;p;ok,RDB2;q;ok)である。トランザクションＳの確からしさは、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となり、トランザクション識別部１４０は、推定トランザクションを選択しない。
【０２２８】
次に、ＩＤ「３５」の開始メッセージに対する最も確からしいトランザクションの選択処理が行われる。ＩＤ「３５」の開始メッセージは、確定子孫メッセージを持たず、ＩＤ「３６」の未識別子孫メッセージを有する。従って、可能なメッセージの組み合わせは、(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)が選択される。そして、トランザクション識別部１４０は、推定回数g(HTTP;A;OK,RDB2;p;ok)を1だけ増やす。さらに、トランザクション識別部１４０は、ＩＤ「３５」のメッセージのトランザクション識別状況を「識別（Ｓ）」に変え、ＩＤ「３６」のメッセージの開始メッセージ識別状況を「推定（Ｅ）」に変える。
【０２２９】
ここで、ＩＤ「３５」の開始メッセージについて、ＩＤ「３６」の未識別子孫メッセージが選択されたので、トランザクション識別部１４０は、ＩＤ「３６」のメッセージを未識別子孫メッセージリストから推定子孫メッセージリストに移動する。つぎに、ＩＤ「３６」の子孫メッセージの開始メッセージ候補リストを調べると、ＩＤ「３０」、「３５」の開始メッセージ候補を有しているので、選択されたＩＤ「３５」の開始メッセージ以外のＩＤ「３０」の開始メッセージ候補について、未識別子孫メッセージリストからＩＤ３６を削除する。
【０２３０】
以上で、各開始メッセージに対して、推定トランザクション識別処理が一回ずつ行われたことになる。
図４６は、推定トランザクション識別処理を１回ずつ行った後の開始メッセージ集合を示す図である。図４６に示すように、この例では、トランザクション識別状況が「未識別（Ｕ）」の開始メッセージが複数存在している。
【０２３１】
図４７は、推定トランザクション識別処理を１回ずつ行った後の子孫メッセージ集合を示す図である。推定トランザクションに含まれるメッセージは、開始メッセージ識別状況が「推定（Ｅ）」とされている。
【０２３２】
このとき、推定トランザクション識別処理を満たしていない。そこで、トランザクション識別部１４０は、トランザクション識別状況が「未識別（Ｕ）」の開始トランザクションに対して、推定トランザクション識別を繰り返し実行する。具体的には、ＩＤ「４」、「１６」、「３０」、「３２」の開始メッセージのトランザクション識別状況が「未識別（Ｕ）」であるため、これらのメッセージについて、再び推定トランザクションの識別を試みられる。
【０２３３】
まず、ＩＤ「４」の開始メッセージについて、可能なメッセージの組み合わせによって構成されるトランザクション(HTTP;A;NG,RDB2;q;ok)あるいは(HTTP;A;NG,RDB2;q;ok,RDB2;p;ok)の確からしさは、いずれも所定の閾値に達しない。そのため、推定トランザクションが選択されない。
【０２３４】
次に、トランザクション識別部１４０は、ＩＤ「１６」の開始メッセージについて、推定トランザクション識別処理を行う。ところで、ＩＤ「１６」の開始メッセージの未識別子孫メッセージリストには、初期段階ではＩＤ「２０」が設定されていた（図４４参照）が、ＩＤ「１９」の開始メッセージに応じた推定トランザクションが選択されたときに、そのＩＤ「２０」が削除されている。その結果、ＩＤ「１６」の開始メッセージにおける未識別子孫メッセージリストが空になっている。そこで、トランザクション識別部１４０は、ＩＤ「１７」、「１８」の確定子孫メッセージとの組み合わせによって構成されるトランザクション(HTTP;A;OK,RDB2;p;ok,RDB2;q;ok)を推定トランザクションとして選択する。そして、トランザクション識別部１４０は、推定回数g(HTTP;A;OK,RDB2;p;ok,RDB2;q;ok)を１だけ増やす。また、トランザクション識別部１４０は、ＩＤ「１６」のメッセージのトランザクション識別状況を「識別（Ｓ）」に変える。
【０２３５】
以降、同様にトランザクション識別部１４０は、ＩＤ「３０」、「３２」の開始メッセージについて、推定トランザクション識別処理を行う。ＩＤ「３０」の開始メッセージについては、可能なメッセージの組み合わせによって構成されるトランザクションの確からしさがいずれも所定の閾値に達しない。そのため、推定トランザクションは選択されない。また、ＩＤ「３２」の開始メッセージについては、可能なメッセージの組み合わせによって構成されるトランザクションの確からしさが、いずれも所定の閾値に達しない。そのため、推定トランザクションは選択されない。
【０２３６】
このような推定トランザクションの識別の繰り返しが行われる。すると、これ以上新たに識別されるメッセージの数は増えないので、推定トランザクションの識別処理が終了する。
【０２３７】
図４８は、推定トランザクションの識別処理によって生成された推定トランザクションを示す図である。最も確からしいトランザクションが選択されることによって、図４８に示すようなトランザクション２２１〜２２６が生成される。
【０２３８】
次に、トランザクション識別部１４０は、推定トランザクションの置換処理を行う。図４７に示す子孫メッセージ集合Ｂを参照すると、開始メッセージ識別状況が「未識別（Ｕ）」なのは、ＩＤ「５」、「３３」、「３４」の子孫メッセージである。そこで、トランザクション識別部１４０は、これらの子孫メッセージを対象として、推定トランザクションの置換処理を試みる。
【０２３９】
トランザクション識別部１４０は、まず、ＩＤ「５」の子孫メッセージについて、推定トランザクションの置換処理を行う。ＩＤ「５」の子孫メッセージは、ＩＤ「２」、「４」の開始メッセージ候補を有している。そこで、トランザクション識別部１４０は、以下のように置換トランザクション候補を構成する。
【０２４０】
（ａ）ＩＤ「２」の開始メッセージが属する推定トランザクションは、S1=(HTTP;A;OK,RDB2;p;ok)である。これにＩＤ「５」のメッセージを組み合わせた置換トランザクション候補はS1*=(HTTP;A;OK,RDB2;p;ok,RDB2;q;ok)となる。
【０２４１】
（ｂ）ＩＤ「４」の開始メッセージはトランザクション未識別であり、ＩＤ「４」の開始メッセージ、その確定子孫メッセージ（ＩＤ「６」のメッセージ）、およびＩＤ「５」のメッセージを組み合わせた置換トランザクション候補はS2*=(HTTP;A;NG,RDB2;q;ok,RDB2;p;ok)である。
【０２４２】
これらの置換トランザクション候補の確からしさは、h(S1*)=1、h(S2*)=0と計算される。確からしさが最大のS1*は、置換条件h(S1*)>0を満たす。そこで、トランザクション識別部１４０は、推定トランザクションＳ１をS1*に置換する。そして、トランザクション識別部１４０は、S1の推定回数g(HTTP;A;OK,RDB2;p;ok)を１だけ減らし、S1*の推定回数g(HTTP;A;OK,RDB2;p;ok,RDB2;q;ok)を１だけ増やす。さらに、トランザクション識別部１４０は、ＩＤ「５」のメッセージの開始メッセージ識別状況を「置換（Ｆ）」に変える。
【０２４３】
図４９は、推定トランザクション置換処理によって構成された置換トランザクションを示す図である。元のトランザクション２２１（推定トランザクション）に、ＩＤ「５」のメッセージが追加されることで、トランザクション２２１ａ（置換トランザクション）が生成される。
【０２４４】
その後、トランザクション識別部１４０は、ＩＤ「２」の開始メッセージについて、ＩＤ「５」の未識別子孫メッセージが新たに選択されたので、ＩＤ「５」のメッセージを未識別子孫メッセージリストから推定子孫メッセージリストに移動する。また、トランザクション識別部１４０は、ＩＤ「５」の子孫メッセージの開始メッセージ候補リストを調べると、ＩＤ「２」、「４」の開始メッセージ候補を有しているため、選択されたＩＤ「２」以外のＩＤ「４」の開始メッセージについて、未識別子孫メッセージリストからＩＤ「５」を削除する。
【０２４５】
次に、トランザクション識別部１４０は、ＩＤ「３３」の子孫メッセージについて、推定トランザクションの置換処理を行う。ＩＤ「３３」の未識別子孫メッセージは、ＩＤ「３０」、「３２」の開始メッセージ候補を有している。そこで、トランザクション識別部１４０は、以下のように置換トランザクション候補を構成する。
【０２４６】
（ａ）ＩＤ「３０」の開始メッセージはトランザクション未識別であり、ＩＤ「３０」の開始メッセージ、その確定子孫メッセージ（ＩＤ「３１」、「３７」のメッセージ）、およびＩＤ「３３」のメッセージを組み合わせた置換トランザクション候補はS1*=(HTTP;A;OK,RDB2;p;ok,RDB2;p;ok;RDB2;q;ok)となる。
【０２４７】
（ｂ）ＩＤ「３２」の開始メッセージはトランザクション未識別であり、ＩＤ「３２」の開始メッセージとＩＤ「３３」のメッセージと組み合わせた置換トランザクション候補はS2*=(HTTP;A;NG,RDB2;p;ok)となる。
【０２４８】
これらの置換トランザクション候補の確からしさは、h(S1*)=0、h(S2*)=1と計算される。確からしさが最大のS2*は、置換条件h(S2*)>0を満たすので、トランザクション識別部１４０は、ＩＤ「３２」の開始メッセージが属する置換トランザクションをS2*にして、S2*の推定回数g(HTTP;A;NG,RDB2;p;ok)を1だけ増やす。また、トランザクション識別部１４０は、ＩＤ「３２」のメッセージのトランザクション識別状況を「識別（Ｓ）」に変えると共に、ＩＤ「３３」のメッセージの開始メッセージ識別状況を「置換（Ｆ）」に変える。
【０２４９】
図５０は、推定トランザクション置換処理によって新たに生成されたトランザクションを示す図である。推定トランザクション置換処理により、図５０に示すようなトランザクション２２７（置換トランザクション）が生成される。この例では、ＩＤ「３２」の開始メッセージに関して、推定トランザクションが生成されていないため、推定トランザクション置換処理において新たに生成されている。
【０２５０】
ここで、トランザクション識別部１４０は、ＩＤ「３２」の開始メッセージについて、ＩＤ「３３」の未識別子孫メッセージが新たに選択されたので、ＩＤ「３３」のメッセージを未識別子孫メッセージリストから推定子孫メッセージリストに移動する。また、トランザクション識別部１４０は、ＩＤ「３３」の子孫メッセージの開始メッセージ候補リストを調べ、ＩＤ「３０」、「３２」の開始メッセージ候補があることを確認する。そこで、トランザクション識別部１４０は、選択されたＩＤ「３２」以外のＩＤ「３０」の開始メッセージ候補について、未識別子孫メッセージリストからＩＤ「３３」を削除する。
【０２５１】
次に、トランザクション識別部１４０は、ＩＤ「３４」の子孫メッセージについて、推定トランザクションの置換処理を行う。ＩＤ「３４」の未識別子孫メッセージについて、その各開始メッセージ候補（ＩＤ「「３０」、「３２」」について、下記のように置換トランザクション候補を構成する。
【０２５２】
（ａ）ＩＤ「３０」の開始メッセージはトランザクション未識別であり、ＩＤ「３０」の開始メッセージとその確定子孫メッセージ（ＩＤ「３１」、「３７」）とＩＤ「３４」のメッセージを組み合わせた置換トランザクション候補はS1*=(HTTP;A;OK,RDB2;p;ok,RDB2;q;ok;RDB2;q;ok)である。
【０２５３】
（ｂ）ＩＤ「３２」の開始メッセージが属する推定トランザクションは、S2=(HTTP;A;NG,RDB2;p;ok)である。これにＩＤ「３４」のメッセージを組み合わせた置換トランザクション候補はS2*=(HTTP;A;NG,RDB2;p;ok,RDB2;q;ok)である。
【０２５４】
これらの置換トランザクション候補の確からしさはh(S1*)=0、h(S2*)=1と計算される。確からしさが最大のＳ２*は、置換条件h(S2*)>0を満たすので、トランザクション識別部１４０は、ＩＤ「３２」の開始メッセージが属する推定トランザクションＳ２をＳ２*に置換する。また、トランザクション識別部１４０は、S2の推定回数g(HTTP;A;NG,RDB2;p;ok)を1だけ減らし、Ｓ２*の推定回数g(HTTP;A;NG,RDB2;p;ok,RDB2;q;ok)を1だけ増やす。さらに、トランザクション識別部１４０は、ＩＤ「３４」のメッセージの開始メッセージ識別状況を「置換（Ｆ）」に変える。
【０２５５】
図５１は、推定トランザクション置換処理によって構成された置換トランザクションを示す図である。元のトランザクション２２７（推定トランザクション）に、ＩＤ「３４」のメッセージが追加されることで、トランザクション２２７ａ（置換推定トランザクション）が生成される。
【０２５６】
その後、トランザクション識別部１４０は、ＩＤ「３２」の開始メッセージについて、ＩＤ「３４」の未識別子孫メッセージが新たに選択されたので、ＩＤ「３４」のメッセージを未識別子孫メッセージリストから推定子孫メッセージリストに移動する。次に、トランザクション識別部１４０は、ＩＤ「３４」の子孫メッセージの開始メッセージ候補リストを調べる。すると、ＩＤ「３０」、「３２」の開始メッセージ候補を有しているので、選択されたＩＤ「３２」開始メッセージ以外のＩＤ「３０」のメッセージにおける識別子孫メッセージリストからＩＤ「３４」を削除する。
【０２５７】
これによりすべての未識別子孫メッセージが識別されたので、トランザクション識別部１４０は推定トランザクションの置換処理を終了する。
トランザクション識別部１４０は、推定トランザクションの置換処理の終了後、トランザクション識別状況が「未識別（Ｕ）」の開始メッセージ（ＩＤ「４」、「ＩＤ３０」）が残っているので、推定トランザクションの識別処理に戻る。
【０２５８】
まず、ＩＤ「４」の開始メッセージについて、未識別子孫メッセージリストが空になっているので、トランザクション識別部１４０は、ＩＤ「６」の確定子孫メッセージとの組み合わせによって構成されるトランザクション(HTTP;A;NG,RDB2;p;ok)を推定トランザクションとして選択する。そして、トランザクション識別部１４０は、推定回数g(HTTP;A;NG,RDB2;p;ok)を１だけ増やす。さらに、トランザクション識別部１４０は、ＩＤ「４」メッセージのトランザクション識別状況を「識別（Ｓ）」に変える。
【０２５９】
図５２は、推定トランザクション識別処理によって新たに生成されたトランザクションを示す図である。図５２に示すように、ＩＤ「４」の開始メッセージと、ＩＤ「６」の子孫メッセージとにより、トランザクション２２８（推定トランザクション）が生成される。
【０２６０】
次に、ＩＤ３０の開始メッセージについて、未識別子孫メッセージリストが空になっているので、トランザクション識別部１４０は、ＩＤ「３１」、「３７」の確定子孫メッセージの組み合わせによって構成されるトランザクション(HTTP;A;OK,RDB2;p;ok,RDB2;q;ok)を推定トランザクションとして選択する。そして、トランザクション識別部１４０は、推定回数g(HTTP;A;OK,RDB2;p;ok,RDB2;q;ok)を1だけ増やす。また、トランザクション識別部１４０は、ＩＤ「３０」のメッセージのトランザクション識別状況を「識別（Ｓ）」に変える。
【０２６１】
図５３は、推定トランザクション識別処理によって新たに生成されたトランザクションを示す図である。図５３に示すように、ＩＤ「３０」の開始メッセージとＩＤ「３１」、「３７」の子孫メッセージとにより、トランザクション２２９（推定トランザクション）が構成される。
【０２６２】
これにより全てのメッセージが識別され、トランザクション識別処理が終了する。トランザクション識別処理終了後、トランザクション識別部１４０は、識別結果として、確定トランザクション、推定トランザクション、置換トランザクションを所定の形式で出力する。
【０２６３】
トランザクションの出力は、(1)確定トランザクション、(2)推定トランザクションと置換トランザクションというように識別された順に出力しても良いし、あるいは、トランザクションの開始時刻順にソートして出力しても良い。
【０２６４】
図５４は、トランザクション識別結果を示す第１の図である。図５５は、トランザクション識別結果を示す第２の図である。図５４にはトランザクション識別結果２４０の前半部分が示されており、図５５にはトランザクション識別結果２４０の後半部分が示されている。この例では、トランザクション識別結果２４０には、確定トランザクション、推定トランザクション、および置換トランザクションが識別された順に登録されている。
【０２６５】
なお、トランザクション識別結果として、トランザクションの開始時刻順に各トランザクションを並べて出力することもできる。
また、トランザクションの種類別に識別結果を出力することもできる。
【０２６６】
図５６は、種類別のトランザクション識別結果を示す図である。このトランザクション識別結果２４１において、「0;HTTP;A;OK,0-0;RDB2;p;ok[9/5/4/5.8]」は、トランザクション種類ＩＤ「０」のトランザクションを示している。「1;HTTP;A;OK,1-0;RDB2;p;ok,1-1;RDB2;q;ok[4/1/3/1.6]」は、トランザクション種類ＩＤ「１」のトランザクションを示している。「2;HTTP;A;NG,0-0;RDB2;p;ok[2/1/1/1.2]」は、トランザクション種類ＩＤ「２」のトランザクションを示している。「3;HTTP;A;NG,1-0;RDB2;p;ok,1-1;RDB2;q;ok[2/1/1/1.2]」は、トランザクション種類ＩＤ「３」のトランザクションを示している。
【０２６７】
図５７は、トランザクション種類ＩＤ０のトランザクションを示す図である。このトランザクション２４２は、２階層のトランザクションである。ここで、図５６に示す「0;HTTP;A;OK,0-0;RDB2;p;ok[9/5/4/5.8]」における[9/5/4/5.8]の部分は、メッセージ履歴内で９回識別され、そのうち５回は確定、４回は推定であり、トランザクションの確からしさが５．８であることを示している。
【０２６８】
図５８は、トランザクション種類ＩＤ１のトランザクションを示す図である。このトランザクション２４３は、２階層のトランザクションである。ここで、図５６に示す「1;HTTP;A;OK,1-0;RDB2;p;ok,1-1;RDB2;q;ok[4/1/3/1.6]」における[4/1/3/1.6]の部分は、メッセージ履歴内で４回識別され、そのうち１回は確定、３回は推定であり、トランザクションの確からしさが１．６であることを示している。
【０２６９】
図５９は、トランザクション種類ＩＤ２のトランザクションを示す図である。このトランザクション２４４は、２階層のトランザクションである。ここで、図５６に示す「2;HTTP;A;NG,0-0;RDB2;p;ok[2/1/1/1.2]」における[2/1/1/1.2]の部分は、メッセージ履歴内で２回識別され、そのうち１回は確定、１回は推定であり、トランザクションの確からしさが１．２であることを示している。
【０２７０】
図６０は、トランザクション種類ＩＤ３のトランザクションを示す図である。このトランザクション２４５は、２階層のトランザクションである。ここで、図５６に示す「3;HTTP;A;NG,1-0;RDB2;p;ok,1-1;RDB2;q;ok[2/1/1/1.2]」における[2/1/1/1.2]の部分は、メッセージ履歴内で２回識別され、そのうち１回は確定、１回は推定であり、トランザクションの確からしさが１．２であることを示している。
【０２７１】
このように、メッセージのコードが異なる場合、それぞれを異なる種別のトランザクションと認識することで、コードに応じたトランザクションの処理時間を判別することができる。例えば、ＨＴＴＰでは、メッセージのCodeが「５００」の場合、「Internal Server Error」を示している。また、メッセージのCodeが「２００」の場合、「OK」（正常終了）を示している。従って、分析部１５０がメッセージのコード毎にトランザクションを区別して処理時間等の分析を行うことで、正常終了時とエラー発生時との処理時間の違いを認識することができる。そして、分析部１５０は、分析結果をグラフ等によって画面表示する。
【０２７２】
図６１は、コード別の分析結果を示す図である。この例では、横軸にトランザクションの処理開始時刻を取り、縦軸にトランザクションの処理時間を取ったグラフにより、処理終了ステータス別処理時間分布を示している。図中、黒い菱形がCode２００のトランザクションを示しており、白い正方形がCode５００のトランザクションを示している（コード以外のメッセージ内容は同一である）。
【０２７３】
このグラフを参照すると、正常終了（Code２００）の場合、処理時間にばらつきがあるが、エラー終了の場合（Code５００）、処理時間が集中していることが分かる。具体的には、Code:500(Error)のトランザクションの処理時間は0.34秒前後に集中しており、Code:200(OK)のトランザクションの処理時間は0.3〜1.8秒で長め、かつばらつきが大きい。
【０２７４】
また、分析部１５０は、分析結果から、正常に処理が完了したと判断できる処理時間の範囲や、何らかの問題が発生したと判断できる処理時間の範囲を算出することができる。
図６２は、トランザクションの分析結果を示す図である。分析結果２５１には、トランザクション識別部１４０で認識されたトランザクションに対して、同じ種別のトランザクションの数（[31;30;1]：全体で３１個のトランザクションが認識され、そのうち３０個が確定トランザクション、１個が推定トランザクションであることを示す）が示されている。
【０２７５】
また、処理時間に分布が対数正規分布となる場合、処理時間がｍ±σ（0.348,0.963)の範囲内のトランザクションを正常なトランザクションとみなしている。ここで、ｍは処理時間の平均値を示しており、図６２の例ではｍ＝０．５７９である。また、σは標準偏差を表しており、図６２の例ではσ＝１．６６である。この場合、ｍ±σの範囲は、０．３４８以上、０．９６３以下となる。
【０２７６】
また、処理時間がｍ±２σ（0.209,1.60)の範囲をはずれたトランザクションを、問題有りのトランザクションとする。また、処理時間が、正常な範囲と問題有りの範囲との時間となるトランザクションは、要注意のトランザクションと判定される。
【０２７７】
図６３は、処理時間に応じた良否分析を行ったトランザクションの分布状況を示す図である。この例では、横軸にトランザクションの処理開始時刻を取り、縦軸にトランザクションの処理時間を取ったグラフにより、処理終了ステータス別処理時間分布を示している。
【０２７８】
このようにトランザクションの処理時間の分布状況を、正常な範囲にあるトランザクション、要注意のトランザクション、問題のあるトランザクションに分けて分かりやすく表示することができる。
【０２７９】
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、サービス処理状況分析装置が有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記録装置には、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープなどがある。光ディスクには、ＤＶＤ（DigitalVersatileDisc）、ＤＶＤ−ＲＡＭ（RandomAccessMemory）、ＣＤ−ＲＯＭ（CompactDiscReadOnlyMemory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。光磁気記録媒体には、ＭＯ（Magneto-Opticaldisk）などがある。
【０２８０】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【０２８１】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送される毎に、逐次、受け取ったプログラムに従った処理を実行することもできる。
【０２８２】
なお、本発明は、上述の実施の形態にのみ限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々の変更を加えることができる。
以上説明した実施の形態の主な技術的特徴は、以下の付記の通りである。
【０２８３】
（付記１）  複数のサーバが接続されたネットワークシステムのサービス処理状況を分析するためのサービス処理状況分析プログラムにおいて、
コンピュータを、
ネットワークを介して受け渡されるメッセージを収集するメッセージ観測手段、
収集したメッセージの内容を解析して、解析されたメッセージの情報をメッセージ記憶手段に格納するメッセージ解析手段、
前記メッセージ記憶手段に格納されたメッセージの情報から、メッセージ間の呼び出し関係に関する所定の制約条件を満たし、かつ、すべての呼び出し関係が一意に確定するメッセージの組み合わせを抽出し、抽出したメッセージの組み合わせに基づいて確定トランザクションを生成する確定トランザクション生成手段、
前記確定トランザクションおよび先に識別されている推定トランザクションに含まれない未識別メッセージを順次選択し、前記制約条件を満たし、かつ、選択した前記未識別メッセージを含むメッセージの組み合わせを複数抽出し、抽出したメッセージの組み合わせに基づいて、１以上のトランザクション候補を生成するトランザクション候補生成手段、
生成された前記トランザクション候補について、同種類のトランザクションがこれまでに前記確定トランザクションまたは前記推定トランザクションとして識別された回数に基づいて前記トランザクション候補それぞれの確からしさを評価する評価手段、
生成された前記トランザクション候補の１つを、それぞれの確からしさに基づいて推定トランザクションとして識別する推定トランザクション識別手段、
前記確定トランザクションと前記推定トランザクションとを識別結果として出力する出力手段、
として機能させることを特徴とするサービス処理状況分析プログラム。
【０２８４】
（付記２）  前記評価手段は、確定トランザクションとして識別された回数と、推定トランザクションとして識別された回数に１以下の係数を乗算した値とを加算した値を、確からしさとすることを特徴とする付記１記載のサービス処理状況分析プログラム。
【０２８５】
（付記３）  前記推定トランザクション識別手段は、最も確からしいと評価されたトランザクション候補の確からしさを示す数値が、所定の閾値以上の場合にのみ、最も確からしいと評価されたトランザクション候補を推定トランザクションとして識別することを特徴とする付記１記載のサービス処理状況分析プログラム。
【０２８６】
（付記４）  前記トランザクション候補生成手段は、所定の推定処理終了条件を満たすまで、トランザクション候補の生成を繰り返すことを特徴とする付記１記載のサービス処理状況分析プログラム。
【０２８７】
（付記５）  前記トランザクション候補生成手段は、前記推定処理終了条件が満たされた後において前記未識別メッセージが残存するとき、前記未識別メッセージを既に識別されている前記推定トランザクションに追加することにより生成される置換トランザクション候補を含め、生成された前記トランザクション候補を生成し、
前記推定トランザクション識別手段は、前記置換トランザクション候補を前記推定トランザクションとして識別した場合、前記置換トランザクション候補の生成元となった前記推定トランザクションを前記置換トランザクション候補に置き換えることを特徴とする付記４記載のサービス処理状況分析プログラム。
【０２８８】
（付記６）  複数のサーバが接続されたネットワークシステムのサービス処理状況を分析するためのサービス処理状況分析方法において、
メッセージ観測手段が、ネットワークを介して受け渡されるメッセージを収集し、
メッセージ解析手段が、収集したメッセージの内容を解析して、解析されたメッセージの情報をメッセージ記憶手段に格納し、
確定トランザクション生成手段が、前記メッセージ記憶手段に格納されたメッセージの情報から、メッセージ間の呼び出し関係に関する所定の制約条件を満たし、かつ、すべての呼び出し関係が一意に確定するメッセージの組み合わせを抽出し、抽出したメッセージの組み合わせに基づいて確定トランザクションを生成し、
トランザクション候補生成手段が、前記確定トランザクションおよび先に識別されている推定トランザクションに含まれない未識別メッセージを順次選択し、前記制約条件を満たし、かつ、選択した前記未識別メッセージを含むメッセージの組み合わせを複数抽出し、抽出したメッセージの組み合わせに基づいて、１以上のトランザクション候補を生成し、
評価手段が、生成された前記トランザクション候補について、同種類のトランザクションがこれまでに前記確定トランザクションまたは前記推定トランザクションとして識別された回数に基づいて前記トランザクション候補それぞれの確からしさを評価し、
推定トランザクション識別手段が、生成された前記トランザクション候補の１つを、それぞれの確からしさに基づいて推定トランザクションとして識別し、
出力手段が、前記確定トランザクションと前記推定トランザクションとを識別結果として出力する、
ことを特徴とするサービス処理状況分析方法。
【０２８９】
（付記７）  複数のサーバが接続されたネットワークシステムのサービス処理状況を分析するサービス処理状況分析装置において、
ネットワークを介して受け渡されるメッセージを収集するメッセージ観測手段と、
収集したメッセージの内容を解析して、解析されたメッセージの情報をメッセージ記憶手段に格納するメッセージ解析手段と、
前記メッセージ記憶手段に格納されたメッセージの情報から、メッセージ間の呼び出し関係に関する所定の制約条件を満たし、かつ、すべての呼び出し関係が一意に確定するメッセージの組み合わせを抽出し、抽出したメッセージの組み合わせに基づいて確定トランザクションを生成する確定トランザクション生成手段と、
前記確定トランザクションおよび先に識別されている推定トランザクションに含まれない未識別メッセージを順次選択し、前記制約条件を満たし、かつ選択した前記未識別メッセージを含むメッセージの組み合わせを複数抽出し、抽出したメッセージの組み合わせに基づいて、１以上のトランザクション候補を生成するトランザクション候補生成手段と、
生成された前記トランザクション候補について、同種類のトランザクションがこれまでに前記確定トランザクションまたは前記推定トランザクションとして識別された回数に基づいて前記トランザクション候補それぞれの確からしさを評価する評価手段と、
生成された前記トランザクション候補の１つを、それぞれの確からしさに基づいて推定トランザクションとして識別する推定トランザクション識別手段と、
前記確定トランザクションと前記推定トランザクションとを識別結果として出力する出力手段と、
を有することを特徴とするサービス処理状況分析装置。
【図面の簡単な説明】
【０２９０】
【図１】本実施の形態の概略を示す図である。
【図２】収集されたメッセージの例を示す図である。
【図３】従来手法と本実施の形態とのトランザクションの識別結果を比較する図である。
【図４】本実施の形態に係るシステム構成を示す図である。
【図５】サービス処理状況分析装置のハードウェア構成例を示す図である。
【図６】サービス処理状況分析装置の機能ブロックを示す図である。
【図７】トランザクション識別処理の手順を示すフローチャートである。
【図８】子孫メッセージ集合への情報の登録処理の手順を示すフローチャートである。
【図９】確定トランザクションの識別処理の手順を示すフローチャートである。
【図１０】推定トランザクションの識別処理の手順を示すフローチャートである。
【図１１】確からしいトランザクションの選択処理手順を示すフローチャートの前半である。
【図１２】確からしいトランザクションの選択処理手順を示すフローチャートの後半である。
【図１３】推定トランザクションの置換処理手順を示すフローチャートの前半である。
【図１４】推定トランザクションの置換処理手順を示すフローチャートの後半である。
【図１５】呼び出し条件の第１の例を示す図である。
【図１６】呼び出し条件の第２の例を示す図である。
【図１７】呼び出し条件の第３の例を示す図である。
【図１８】トランザクションの構造情報の第１の例を示す図である。
【図１９】トランザクションの構造情報の第２の例を示す図である。
【図２０】メッセージ履歴の例を示す図である。
【図２１】開始メッセージ集合の例を示す図である。
【図２２】子孫メッセージ集合の例を示す図である。
【図２３】未識別子孫メッセージリストが空の開始メッセージの例を示す図である。
【図２４】未識別子孫メッセージリストが空の開始メッセージに関連する子孫メッセージの例を示す図である。
【図２５】確定トランザクションの構成結果を示す図である。
【図２６】確定トランザクションに属するメッセージ削除後の開始メッセージ集合を示す図である。
【図２７】確定トランザクションに属するメッセージ削除後の子孫メッセージ集合を示す図である。
【図２８】トランザクション識別状況変更後の開始メッセージ集合を示す図である。
【図２９】開始メッセージ識別状況変更後の子孫メッセージ集合を示す図である。
【図３０】子孫のメッセージが推定された後の開始メッセージ集合を示す図である。
【図３１】最も確からしいトランザクションの選択処理で選択されたトランザクションを示す図である。
【図３２】最も確からしいトランザクションの選択処理終了後の開始メッセージ集合を示す図である。
【図３３】最も確からしいトランザクションの選択処理終了後の子孫メッセージ集合を示す図である。
【図３４】推定トランザクション置換処理後の子孫メッセージ集合を示す図である。
【図３５】推定トランザクション置換処理によって構成された置換トランザクションを示す図である。
【図３６】推定トランザクション置換処理後の開始メッセージ集合を示す図である。
【図３７】トランザクション識別結果を示す第１の図である。
【図３８】トランザクション識別結果を示す第２の図である。
【図３９】種類別のトランザクション識別結果を示す図である。
【図４０】トランザクション種類ＩＤ０のトランザクションを示す図である。
【図４１】トランザクション種類ＩＤ１のトランザクションを示す図である。
【図４２】応答内容を含むメッセージのメッセージ履歴を示す図である。
【図４３】確定トランザクションの構成結果を示す図である。
【図４４】確定トランザクションに属する開始メッセージ削除後の開始メッセージ集合を示す図である。
【図４５】確定トランザクションに属する子孫メッセージ削除後の子孫メッセージ集合を示す図である。
【図４６】推定トランザクション識別処理を１回ずつ行った後の開始メッセージ集合を示す図である。
【図４７】推定トランザクション識別処理を１回ずつ行った後の子孫メッセージ集合を示す図である。
【図４８】推定トランザクションの識別処理によって生成された推定トランザクションを示す図である。
【図４９】推定トランザクション置換処理によって構成された置換トランザクションを示す図である。
【図５０】推定トランザクション置換処理によって新たに生成されたトランザクションを示す図である。
【図５１】推定トランザクション置換処理によって構成された置換トランザクションを示す図である。
【図５２】推定トランザクション識別処理によって新たに生成されたトランザクションを示す図である。
【図５３】推定トランザクション識別処理によって新たに生成されたトランザクションを示す図である。
【図５４】トランザクション識別結果を示す第１の図である。
【図５５】トランザクション識別結果を示す第２の図である。
【図５６】種類別のトランザクション識別結果を示す図である。
【図５７】トランザクション種類ＩＤ０のトランザクションを示す図である。
【図５８】トランザクション種類ＩＤ１のトランザクションを示す図である。
【図５９】トランザクション種類ＩＤ２のトランザクションを示す図である。
【図６０】トランザクション種類ＩＤ３のトランザクションを示す図である。
【図６１】コード別の分析結果を示す図である。
【図６２】トランザクションの分析結果を示す図である。
【図６３】処理時間に応じた良否分析を行ったトランザクションの分布状況を示す図である。
【符号の説明】
【０２９１】
１  サービス処理状況分析装置
１ａ  メッセージ観測手段
１ｂ  メッセージ解析手段
１ｃ  メッセージ記憶手段
１ｄ  確定トランザクション生成手段
１ｅ  トランザクション候補生成手段
１ｆ  評価手段
１ｇ  推定トランザクション識別手段
１ｈ  出力手段
２  ネットワーク
３ａ，３ｂ，３ｃ，３ｄ  サーバ
【図１】
2006323471.tif 000003
【図２】
2006323471.tif 000004
【図３】
2006323471.tif 000005
【図４】
2006323471.tif 000006
【図５】
2006323471.tif 000007
【図６】
2006323471.tif 000008
【図７】
2006323471.tif 000009
【図８】
2006323471.tif 000010
【図９】
2006323471.tif 000011
【図１０】
2006323471.tif 000012
【図１１】
2006323471.tif 000013
【図１２】
2006323471.tif 000014
【図１３】
2006323471.tif 000015
【図１４】
2006323471.tif 000016
【図１５】
2006323471.tif 000017
【図１６】
2006323471.tif 000018
【図１７】
2006323471.tif 000019
【図１８】
2006323471.tif 000020
【図１９】
2006323471.tif 000021
【図２０】
2006323471.tif 000022
【図２１】
2006323471.tif 000023
【図２２】
2006323471.tif 000024
【図２３】
2006323471.tif 000025
【図２４】
2006323471.tif 000026
【図２５】
2006323471.tif 000027
【図２６】
2006323471.tif 000028
【図２７】
2006323471.tif 000029
【図２８】
2006323471.tif 000030
【図２９】
2006323471.tif 000031
【図３０】
2006323471.tif 000032
【図３１】
2006323471.tif 000033
【図３２】
2006323471.tif 000034
【図３３】
2006323471.tif 000035
【図３４】
2006323471.tif 000036
【図３５】
2006323471.tif 000037
【図３６】
2006323471.tif 000038
【図３７】
2006323471.tif 000039
【図３８】
2006323471.tif 000040
【図３９】
2006323471.tif 000041
【図４０】
2006323471.tif 000042
【図４１】
2006323471.tif 000043
【図４２】
2006323471.tif 000044
【図４３】
2006323471.tif 000045
【図４４】
2006323471.tif 000046
【図４５】
2006323471.tif 000047
【図４６】
2006323471.tif 000048
【図４７】
2006323471.tif 000049
【図４８】
2006323471.tif 000050
【図４９】
2006323471.tif 000051
【図５０】
2006323471.tif 000052
【図５１】
2006323471.tif 000053
【図５２】
2006323471.tif 000054
【図５３】
2006323471.tif 000055
【図５４】
2006323471.tif 000056
【図５５】
2006323471.tif 000057
【図５６】
2006323471.tif 000058
【図５７】
2006323471.tif 000059
【図５８】
2006323471.tif 000060
【図５９】
2006323471.tif 000061
【図６０】
2006323471.tif 000062
【図６１】
2006323471.tif 000063
【図６２】
2006323471.tif 000064
【図６３】
2006323471.tif 000065
【手続補正書】
【提出日】平成17年9月8日(2005.9.8)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は複数のサーバが接続されたネットワークシステムのサービス処理状況を分析するためのサービス処理状況分析プログラム、サービス処理状況分析方法、およびサービス処理状況分析装置に関し、特にネットワークシステムのサービス処理状況をトランザクション単位で分析するサービス処理状況分析プログラム、サービス処理状況分析方法、およびサービス処理状況分析装置に関する。
【背景技術】
【０００２】
インターネット・バンキング・システム等のサービス処理システムは、大規模・複雑な構成になっている場合が多く、サービス処理状況の把握や、障害や性能劣化原因の特定が非常に困難になっている。
【０００３】
このようなサービス処理システムは、複数のサーバが組み合わさってサービス処理を行うネットワークシステムになっている場合が多い。このようなシステムの稼働状況を分析するには、従来、個々のサーバで処理履歴を取って個別に分析したり、クライアントからサービス実行のリクエストを送って、サービス処理結果が返ってくるまでの時間を測定・評価する方法が用いられてきた。
【０００４】
また、ネットワークシステム上のサーバ間のやり取りを分析する方法が用いられてきた。例えば、サーバ間で受け渡されるメッセージが既知の場合、そのメッセージの受け渡し状況を分析する技術がある（例えば、非特許文献１）。
【０００５】
また、パケットを収集して、サーバに対するリクエストと、そのリクエストに対するレスポンスの対を作成する技術もある（例えば、非特許文献２）。
【非特許文献１】「IBM Tivoli Monitoring for Transaction Performance helps maximize performance of your applications.」 International Business Machines Corporation, 2003
【非特許文献２】「LonManager Protocol Analyzer User’s Guide Revision 1.0」 Echelon Corporation, 1994
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかし、個々のサーバで処理履歴を取って個別に分析する方法では、各サーバでは特に問題なく動作しているように見えて、サーバ間のやり取りで問題が発生している場合などに原因を特定できないという問題がある。また、クライアント側で、サービス実行のリクエストを送って、サービス処理結果が返ってくるまでの時間を計測する方法では、クライアントとやり取りする部分の処理しか見えてこないという問題がある。
【０００７】
また、サーバ間のやり取りを分析する非特許文献１の技術は、処理内容が未知の場合や、階層構造が未知の場合などの未知のトランザクションについては分析できないという問題がある。
【０００８】
さらに、非特許文献２は、１つ１つの処理要求に対して、確認応答回数、応答時間等を分析するが、１つのサービス要求に対する一連の処理という観点での分析には対応していない。
【０００９】
なお、これらの問題を解決するものとして、特願２００４−１８５９０９号に記載された発明がされている。この発明では、メッセージ間の呼び出し関係の確信度に基づいて、メッセージ履歴からトランザクションのモデルを構築するという手法が用いられている。ただし、この発明を用いた場合においても、低頻度のトランザクションについてはモデル化されにくいという問題がある。
【００１０】
たとえば、メッセージ履歴の中で、HTTP;A-RDB2;p（ＨＴＴＰによる処理ＡのメッセージとＲＤＢ２による処理ｐのメッセージの組み合わせ）というトランザクションが９８０回、HTTP;A-RDB2;p-RDB2;q（ＨＴＴＰによる処理Ａのメッセージ、ＲＤＢ２による処理ｐのメッセージ、およびＲＤＢ２による処理ｑのメッセージの組み合わせ）というトランザクションが２０回出現したとき、特願２００４−１８５９０９号の手法では、呼び出し元メッセージHTTP;Aの出現に対して、トランザクションHTTP;A-RDB2;pの確信度が９８％、トランザクションHTTP;A-RDB2;p-RDB2;qの確信度が２％と評価されるので、確信度の閾値の設定によっては、低確信度のトランザクションHTTP;A-RDB2;p-RDB2;qはモデル化できない場合がある。特に、近年のWebサービス・システムに良く見られる、呼び出し元メッセージに対してトランザクションのバリエーションが非常に多い場合に上記の問題が起こりやすい。
【００１１】
本発明はこのような点に鑑みてなされたものであり、低頻度で発生するトランザクションを含め、複数のサーバ間で処理されるトランザクションの種別を判別できるサービス処理状況分析プログラム、サービス処理状況分析方法、およびサービス処理状況分析装置を提供することを目的とする。
【課題を解決するための手段】
【００１２】
本発明では上記課題を解決するために、図１に示すような機能を実現するサービス処理状況分析プログラムが提供される。本発明に係るサービス処理状況分析プログラムは、複数のサーバが接続されたネットワークシステムのサービス処理状況を分析するためのものであり、図１に示す機能をコンピュータに実行させることができる。
【００１３】
メッセージ観測手段１ａは、ネットワークを介して受け渡されるメッセージを収集する。メッセージ解析手段１ｂは、収集したメッセージの内容を解析して、解析されたメッセージの情報をメッセージ記憶手段１ｃに格納する。確定トランザクション生成手段１ｄは、メッセージ記憶手段１ｃに格納されたメッセージの情報から、メッセージ間の呼び出し関係に関する所定の制約条件を満たし、かつ、すべての呼び出し関係が一意に確定するメッセージの組み合わせを抽出し、抽出したメッセージの組み合わせに基づいて確定トランザクションを生成する。トランザクション候補生成手段１ｅは、確定トランザクションおよび先に識別されている推定トランザクションに含まれない未識別メッセージを順次選択し、制約条件を満たし、かつ選択した未識別メッセージを含むメッセージの組み合わせを複数抽出し、抽出したメッセージの組み合わせに基づいて、１以上のトランザクション候補を生成する。評価手段１ｆは、生成されたトランザクション候補について、同種類のトランザクションがこれまでに確定トランザクションまたは推定トランザクションとして識別された回数に基づいてトランザクション候補それぞれの確からしさを評価する。推定トランザクション識別手段１ｇは、生成されたトランザクション候補の１つを、それぞれの確からしさに基づいて推定トランザクションとして識別する。出力手段１ｈは、確定トランザクションと推定トランザクションとを識別結果として出力する。
【００１４】
このようなサービス処理状況分析プログラムを実行するコンピュータによれば、ネットワークを介して受け渡されるメッセージが、メッセージ観測手段１ａで収集される。すると、メッセージ解析手段１ｂにより、収集したメッセージの内容が解析され、解析されたメッセージの情報がメッセージ記憶手段１ｃに格納される。その後、確定トランザクション生成手段１ｄにより、メッセージ記憶手段１ｃに格納されたメッセージの情報から、メッセージ間の呼び出し関係に関する所定の制約条件を満たし、かつ、すべての呼び出し関係が一意に確定するメッセージの組み合わせが抽出され、抽出したメッセージの組み合わせに基づいて確定トランザクションが生成される。次に、トランザクション候補生成手段１ｅにより、確定トランザクションおよび先に識別されている推定トランザクションに含まれない未識別メッセージが順次選択され、制約条件を満たし、かつ選択した未識別メッセージを含むメッセージの組み合わせが複数抽出され、抽出したメッセージの組み合わせに基づいて、１以上のトランザクション候補が生成される。次に、評価手段１ｆにより、生成されたトランザクション候補について、同種類のトランザクションがこれまでに確定トランザクションまたは推定トランザクションとして識別された回数に基づいてトランザクション候補それぞれの確からしさが評価される。さらに、推定トランザクション識別手段１ｇにより、生成されたトランザクション候補の１つが、それぞれの確からしさに基づいて推定トランザクションとして識別される。そして、出力手段１ｈにより、確定トランザクションと推定トランザクションとが識別結果として出力される。
【発明の効果】
【００１５】
本発明では、未識別メッセージに応じたトランザクション候補を順次生成し、トランザクション候補の確からしさを同じ種別の確定トランザクションおよび推定トランザクションの絶対数によって評価し、評価された確からしさに基づいて推定トランザクションを識別するようにした。そのため、出現確率が少ない種別のトランザクションであっても、先に確定トランザクションとして認識された種別のトランザクション候補であれば、推定トランザクションとして識別可能となる。
【発明を実施するための最良の形態】
【００１６】
以下、本発明の実施の形態を図面を参照して説明する。
図１は、本実施の形態の概略を示す図である。図１に示すように、サービス処理状況分析装置１は、ネットワーク２を介して複数のサーバ３ａ，３ｂ，３ｃ，３ｄに接続されている。また、サービス処理状況分析装置１は、メッセージ観測手段１ａ、メッセージ解析手段１ｂ、メッセージ記憶手段１ｃ、確定トランザクション生成手段１ｄ、トランザクション候補生成手段１ｅ、評価手段１ｆ、推定トランザクション識別手段１ｇ、および出力手段１ｈを有する。
【００１７】
メッセージ観測手段１ａは、ネットワークを介して受け渡されるメッセージを収集する。
メッセージ解析手段１ｂは、収集したメッセージの内容を解析して、解析されたメッセージの情報をメッセージ記憶手段１ｃに格納する。このとき、解析されるメッセージの内容としては、例えば、処理を要求するメッセージ（要求メッセージ）か、応答するメッセージ（応答メッセージ）かがある。また、メッセージの発生時刻、送信元、宛先も解析される。
【００１８】
確定トランザクション生成手段１ｄは、メッセージ記憶手段１ｃに格納されたメッセージの情報から、メッセージ間の呼び出し関係に関する所定の制約条件を満たし、かつ、すべての呼び出し関係が一意に確定するメッセージの組み合わせを抽出する。そして、確定トランザクション生成手段１ｄは、抽出したメッセージの組み合わせに基づいて確定トランザクションを生成する。
【００１９】
ここで、トランザクションとは、メッセージ間の呼び出し関係でつながるメッセージの集合に、呼び出し関係に基づいて階層情報を付けたものである。トランザクションは、１個の呼び出し元メッセージ（宛先のサーバに他のメッセージを発生させるメッセージ）と０個以上の呼び出し先メッセージ（他のメッセージに応じてサーバが出力したメッセージ）で構成される。
【００２０】
以下、クライアントからサーバ宛に出されるメッセージ（トランザクションの最初に発生するメッセージ）を開始メッセージとする。また、開始メッセージ以外のメッセージを子孫メッセージとする。
【００２１】
トランザクション候補生成手段１ｅは、確定トランザクションおよび先に識別されている推定トランザクションに含まれない未識別メッセージを順次選択し、制約条件を満たし、かつ選択した未識別メッセージを含むメッセージの組み合わせを複数抽出する。そして、トランザクション候補生成手段１ｅは、抽出したメッセージの組み合わせに基づいて、１以上のトランザクション候補を生成する。
【００２２】
ここで、呼び出し関係の制約条件は、例えば、メッセージの発生時刻や継続時間などの時間的な関係や、メッセージの種別、ＩＰアドレス等で与えられる。
評価手段１ｆは、生成されたトランザクション候補について、同種類のトランザクションがこれまでに確定トランザクションまたは推定トランザクションとして識別された回数に基づいてトランザクション候補それぞれの確からしさを評価する。
【００２３】
推定トランザクション識別手段１ｇは、生成されたトランザクション候補の１つを、それぞれの確からしさに基づいて推定トランザクションとして識別する。例えば、推定トランザクション識別手段１ｇは、最も確からしいトランザクション候補を推定トランザクションとする。このとき、推定トランザクション識別手段１ｇは、最も確からしいトランザクション候補の確からしさが、所定の閾値以上の場合にのみ、そのトランザクション候補を推定トランザクションと識別することもできる。
【００２４】
出力手段１ｈは、確定トランザクションと推定トランザクションとを識別結果として出力する。
このようなサービス処理状況分析装置によれば、ネットワーク２を介してサーバ３ａ，３ｂ，３ｃ，３ｄに対して受け渡されるメッセージが、メッセージ観測手段１ａで収集される。すると、メッセージ解析手段１ｂにより、収集したメッセージの内容が解析され、解析されたメッセージの情報がメッセージ記憶手段１ｃに格納される。
【００２５】
図２は、収集されたメッセージの例を示す図である。図中、横方向に時間軸を取っており、各メッセージに関し、開始時刻から終了時刻までの時間帯を線で表している。各メッセージにはＩＤが振られていると共に、処理内容を示す記号（Ａ、ｐ、ｑ）が線の上に示されている。
【００２６】
そして、確定トランザクション生成手段１ｄが、メッセージ記憶手段１ｃに格納されたメッセージから、呼び出し関係の制約条件を満たす確定トランザクションを構成する。例えば、制約条件として、「処理Ａを行うメッセージが開始メッセージである」、「子孫メッセージは、必ず開始メッセージから呼び出される」、「呼び出し元のメッセージの処理期間内に、呼び出し先のメッセージの処理期間が包含される」という条件が定義されているものとする。この条件に従って、図２に示すメッセージを解析すると、４つの確定トランザクション４ａ，４ｂ，４ｃ，４ｄが生成される。すなわち、これらの確定トランザクション４ａ，４ｂ，４ｃ，４ｄに含まれる子孫メッセージは、そのトランザクションの開始メッセージ以外の開始メッセージから呼び出されることが有り得ない。そのため、呼び出し関係が一意に確定する。
【００２７】
ここで、ＩＤ「０１」〜ＩＤ「０５」のメッセージは、ＩＤ「０４」のメッセージが従属すべき開始メッセージが確定しないため、確定トランザクションを構成できない。すなわち、ＩＤ「０１」のメッセージからＩＤ「０２」のメッセージが呼び出されることは確定する。同様に、ＩＤ「０３」のメッセージからＩＤ「０５」のメッセージが呼び出されることも確定する。しかし、ＩＤ「０４」のメッセージが、ＩＤ「０１」のメッセージから呼び出されるのか、ＩＤ「０３」のメッセージから呼び出されるのかが確定しない。
【００２８】
そこで、トランザクション候補生成手段１ｅが、トランザクション候補を生成する。この例では、開始メッセージを選択して、同時に成立できない複数のトランザクション候補を生成するものとする。
【００２９】
まず、ＩＤ「０１」のメッセージを含むトランザクション候補５ａ，５ｂが生成される。トランザクション候補５ａは、ＩＤ「０１」、「０２」のメッセージで構成される。トランザクション候補５ｂは、ＩＤ「０１」、「０２」、「０４」のメッセージで構成される。
【００３０】
トランザクション候補５ａ，５ｂが生成されると、評価手段１ｆにより、確からしさが評価される。確からしさは、各トランザクション候補５ａ，５ｂと同種類のトランザクションが確定トランザクションや推定トランザクションとして識別された回数で求められる。また、トランザクションの種類の同一性は、例えば、メッセージによる処理の内容およびメッセージの呼び出し関係の同一性で判断される。
【００３１】
図２の例では、トランザクション候補５ａは、処理Ａのメッセージから処理ｐのメッセージを呼び出している。すると、同じ種類の３つの確定トランザクション４ａ，４ｂ，４ｃが既に生成されている。そこで、評価手段１ｆは、処理Ａと処理ｐとで構成されるトランザクションの確からしさを、確定回数（関数ｆ（Ａ，ｐ））＝３で表す。
【００３２】
同様に、トランザクション候補５ｂについて、確からしさが判定される。トランザクション候補５ｂは、処理Ａのメッセージから処理ｐのメッセージを２回呼び出している。このような呼び出し関係を有する確定トランザクションは存在しないため、確からしさは０となる。すると、推定トランザクション識別手段１ｇにより、評価の高いトランザクション候補５ａが、推定トランザクションとして識別される。
【００３３】
次に、ＩＤ「０３」のメッセージを含むトランザクション候補５ｃ，５ｄが生成される。トランザクション候補５ｃは、ＩＤ「０３」、「０４」のメッセージで構成される。トランザクション候補５ｄは、ＩＤ「０３」、「０４」、「０５」のメッセージで構成される。
【００３４】
トランザクション候補５ｃ，５ｄが生成されると、評価手段１ｆにより、確からしさが評価される。
図２の例では、トランザクション候補５ｃは、処理Ａのメッセージから処理ｐのメッセージを呼び出している。同じ種類のトランザクションとしては、３つの確定トランザクション４ａ，４ｂ，４ｃと、トランザクション候補５ａに基づく推定トランザクションが既に生成されている。そこで、評価手段１ｆは、処理Ａと処理ｐとで構成されるトランザクションの確からしさを、確定回数（関数ｆ（Ａ，ｐ））＋α×推定回数（関数ｇ（Ａ，ｐ））で表す。ここで、αは、予め設定された係数であり、０以上の実数である。αを０．２とすると、確からしさは、３＋０．２×１＝３．２となる。
【００３５】
同様に、トランザクション候補５ｄについて、確からしさが判定される。トランザクション候補５ｄは、処理Ａのメッセージから処理ｐのメッセージと処理ｑのメッセージとを呼び出している。同じ種類のトランザクションとしては、１つの確定トランザクション４ｄが生成されている。そこで、評価手段１ｆは、処理Ａ、処理ｐ、および処理ｑで構成されるトランザクションの確からしさを、確定回数（関数ｆ（Ａ，ｐ，ｑ））＝１で表す。すると、推定トランザクション識別手段１ｇにより、評価の高いトランザクション候補５ｃが、推定トランザクションとして識別される。
【００３６】
すると、ＩＤ「０５」のメッセージが未確定で残される。そこで、トランザクション候補生成手段１ｅは、ＩＤ「０５」のメッセージを含むトランザクション候補５ｄを再度生成する。この場合、１つのトランザクション候補５ｄしか生成されず、このトランザクション候補５ｄの確からしさは１である。
【００３７】
推定トランザクション識別手段１ｇは、トランザクション候補５ｄを推定トランザクションとして識別すると共に、先に識別したトランザクション候補５ｃを、推定トランザクション候補から除外する。
【００３８】
このようにして、トランザクション候補５ｄのような出現頻度の低い種別のトランザクションを認識することが可能となる。
すなわち、よく似たトランザクション(A,p)、(A,p,q)の一方(A,p)が非常に高頻度で出現し、もう一方(A,p,q)が非常に低頻度で出現する場合、従来手法（特願２００４−１８５９０９号）では、高頻度のトランザクション(A,p)のみが識別され、低頻度のトランザクション(A,p,q)が識別されない可能性が高い。それに対して、本実施の形態の手法では、もしも、(A,p,q)が(A,p)であると推定されてしまった場合でも、最初のトランザクション推定の後に残った子孫メッセージについて、それらを組み込むことが可能なトランザクションの確からしさを再度評価して、トランザクションを構築しなおす仕組みがある。そのため、その段階で(A,p,q)に識別しなおされる可能性が高い。
【００３９】
なお、トランザクションの確からしさの尺度には、適当な確定回数ｆ（Ｓ）と推定回数ｇ（Ｓ）との少なくとも何れか一方に係数を乗算した関数を用いることができる。関数に用いる係数については、分析者がこれまでの分析結果に基づいて調整することができる。
【００４０】
ここで、本実施の形態によるトランザクション識別の効果を、特願２００４−１８５９０９号に示された技術（従来手法）と比較する。
図３は、従来手法と本実施の形態とのトランザクションの識別結果を比較する図である。図３（Ａ）は、従来手法による識別結果を示しており、図３（Ｂ）は、本実施の形態の手法による識別結果を示している。図中、横軸は、識別されたトランザクションの処理時間であり、縦軸は、処理時間毎のトランザクションの数である。この例では、１００回のトランザクションが発生し、そのうち９０回が処理Ａと処理ｐとで構成されるトランザクション(A,p)であり、１０回が処理Ａ、処理ｐ、および処理ｑで構成されるトランザクション（A,p,q)であるものとする。
【００４１】
従来手法では、各呼び出し元ＩＤに対して、呼び出し可能な呼び出し先ＩＤの組み合わせに基づいて、（呼び出し元、呼び出し先）で表されるトランザクションの起こりやすさを計算する。そして、所定の閾値を超えるものをトランザクションモデルとして選択する。すなわち、起こりやすさが閾値以下となるような出現頻度の低いトランザクションは、トランザクションモデルとして選択されない。
【００４２】
そのため、従来手法では、トランザクション (A,p,q)が１０回含まれているにもかかわらず、トランザクション(A, p)の１種類として識別されてしまう。そのため、トランザクションの処理時間の分布等の分析精度が低下する。
【００４３】
一方、本実施の形態の手法では、トランザクション(A,p)とトランザクション (A, p,q)との２種類のトランザクションとして識別できる。そのため、処理時間分布等を分析する場合、トランザクション(A,p)処理時間の分布とトランザクション(A, p,q)の処理時間の分布とを個別に分析できる。その結果、処理時間分布等の分析精度を上げることができる。
【００４４】
また、検出されたトランザクションの種別における確定トランザクションと推定トランザクションとの比率に基づいて、異常パターンを検出することもできる。例えば、推定トランザクションの比率を定期的に計測することにより、もしもある期間のみ推定トランザクションの比率が異常に高くなるなど変化が生じたならば、該当する種別のトランザクションの処理に何らかのトラブルが発生したものと推定できる。
【００４５】
以下、本発明の実施の形態について詳細に説明する。
本実施の形態では、インターネットバンキングの業務サービスを提供するＷｅｂ３階層システムにおいて、「残高確認」と「入金」との２つのサービスを提供する場合の例である。
【００４６】
なお、本実施形態では、管理対象となる要素として「メッセージ」、および「トランザクション」がある。
「メッセージ」は、ＴＣＰ（Transmission Control Protocol）セッション上で複数の機器がやり取りするデータの最小単位である。例えば、ＨＴＴＰでのリクエスト（要求）やそれに対するレスポンス（応答）が、メッセージに該当する。
【００４７】
なお、本実施の形態ではメッセージの概念を広くとらえ、要求と応答からなるメッセージの対、およびそのメッセージによって実行される処理を纏めて、１つのメッセージとする。特に要求なのか応答なのかを特定する必要がある場合には、要求メッセージ、応答メッセージと呼ぶこととする。
【００４８】
またメッセージのうち、トランザクションの最初に実行されるものを特に「開始メッセージ」と呼び、他のメッセージの実行中に呼び出されるメッセージを特に「子孫メッセージ」と呼ぶ。
【００４９】
「トランザクション」は、システムに対する要求によって発生するオブジェクト処理の集合である。特に、構成が一意に確定したトランザクションを「確定トランザクション」、確からしさによって推定されたトランザクションを「推定トランザクション」と呼ぶ。また、推定トランザクションのうち、一度推定された構成に含まれるメッセージの変更が行われたものを、特に「置換トランザクション」と呼ぶ。
【００５０】
図４は、本実施の形態に係るシステム構成を示す図である。図４の例では、スイッチ１０を介して、クライアント２１，２２，２３、Ｗｅｂサーバ３１、アプリケーションサーバ３２、データベース（ＤＢ）サーバ３３、およびサービス処理状況分析装置１００が接続されている。Ｗｅｂサーバ３１、アプリケーションサーバ３２、およびＤＢサーバ３３は、クライアント２１，２２，２３からの要求に応じて、サービスを提供する。
【００５１】
サービスを提供するためのトランザクションにおいて、Ｗｅｂサーバ３１、アプリケーションサーバ３２、およびＤＢサーバ３３間で、スイッチ１０を介してメッセージの送受信が行われる場合がある。このスイッチ１０を介して送受信されるメッセージをサービス処理状況分析装置１００が監視することで、システムの動作状態の分析を行うことができる。
【００５２】
図５は、サービス処理状況分析装置のハードウェア構成例を示す図である。サービス処理状況分析装置１００は、ＣＰＵ１０１によって装置全体が制御されている。ＣＰＵ１０１には、バス１０７を介してＲＡＭ(Random Access Memory)１０２、ハードディスクドライブ（ＨＤＤ:Hard Disk Drive）１０３、グラフィック処理装置１０４、入力インタフェース１０５、および通信インタフェース１０６が接続されている。
【００５３】
ＲＡＭ１０２には、ＣＰＵ１０１に実行させるＯＳ(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ１０２には、ＣＰＵ１０１による処理に必要な各種データが格納される。ＨＤＤ１０３には、ＯＳやアプリケーションプログラムが格納される。
【００５４】
グラフィック処理装置１０４には、モニタ１１が接続されている。グラフィック処理装置１０４は、ＣＰＵ１０１からの命令に従って、画像をモニタ１１の画面に表示させる。入力インタフェース１０５には、キーボード１２とマウス１３とが接続されている。入力インタフェース１０５は、キーボード１２やマウス１３から送られてくる信号を、バス１０７を介してＣＰＵ１０１に送信する。
【００５５】
通信インタフェース１０６は、スイッチ１０に接続されている。通信インタフェース１０６は、スイッチ１０を介して、他のコンピュータとの間でデータの送受信を行う。
以上のようなハードウェア構成によって、本実施の形態の処理機能を実現することができる。なお、図５には、サービス処理状況分析装置１００のハードウェア構成例を示したが、クライアント２１，２２，２３、Ｗｅｂサーバ３１、アプリケーションサーバ３２、およびＤＢサーバ３３も同様のハードウェア構成で実現することができる。
【００５６】
図６は、サービス処理状況分析装置の機能ブロックを示す図である。サービス処理状況分析装置１００は、パケットデータ記憶部１１１、メッセージ履歴１１２、トランザクション記憶部１１３、分析結果記憶部１１４、メッセージ観測部１２０、メッセージ解析部１３０、トランザクション識別部１４０、分析部１５０、および出力部１６０を有している。
【００５７】
パケットデータ記憶部１１１は、スイッチ１０を介して送受信されたメッセージを構成するパケットを記憶するための記憶装置である。メッセージ履歴１１２は、パケットを解析することにより取得したメッセージの情報を記憶するための記憶装置である。トランザクション記憶部１１３は、トランザクションを完了するまでに送受信されるメッセージのリスト（トランザクション）を記憶する記憶装置である。分析結果記憶部１１４は、メッセージの分析結果を記憶する記憶装置である。
【００５８】
メッセージ観測部１２０は、スイッチ１０を介して送受信されるメッセージを観測し、そのメッセージを構成するパケットをパケットデータ記憶部１１１に格納する。
メッセージ解析部１３０は、パケットデータ記憶部１１１に格納されたパケットの内容を解析し、解析結果をメッセージ履歴１１２に格納する。
【００５９】
トランザクション識別部１４０は、メッセージ履歴１１２に格納された情報に基づいてトランザクションを生成し、トランザクション記憶部１１３に格納する。
なお、トランザクション識別部１４０は、トランザクションを生成するためのトランザクション識別段階で、メッセージ履歴１１２に登録されたメッセージを、開始メッセージ集合Ａと子孫メッセージ集合Ｂとに分類する。開始メッセージ集合Ａは、トランザクションの最初に実行されるメッセージの集合である。子孫メッセージ集合Ｂは、トランザクション中で、他のメッセージの処理によって呼び出されるメッセージの集合である。
【００６０】
トランザクション識別部１４０は、開始メッセージ集合Ａ内のメッセージと子孫メッセージ集合Ｂ内のメッセージとの呼び出し関係を識別し、呼び出し関係があるメッセージからトランザクションを構成する。そして、トランザクション識別部１４０は、構成されたトランザクションから、種別が同一となるトランザクションを纏め、そのトランザクション内のメッセージ間の関係をトランザクションとして定義する。
【００６１】
分析部１５０は、トランザクション記憶部１１３に格納された各トランザクションの処理時間等の統計情報を分析する。そして、分析部１５０は、分析結果を分析結果記憶部１１４に格納する。
【００６２】
出力部１６０は、分析結果記憶部１１４に格納されている分析結果を、グラフ等でモニタ１１等に出力する。
このような構成のサービス処理状況分析装置１００で、次のようなシステム分析処理が実行される。以下、トランザクション識別部１４０によるトランザクション識別処理について、詳細に説明する。
【００６３】
図７は、トランザクション識別処理の手順を示すフローチャートである。以下、図７に示す処理をステップ番号に沿って説明する。
［ステップＳ１１］トランザクション識別部１４０は、メッセージ履歴１１２に登録されているメッセージに番号を付し、１番目から順番にメッセージを読み込む。以下、処理対象として選択されたメッセージをメッセージｋと呼ぶことする。そして、トランザクション識別部１４０は、メッセージ履歴１１２からメッセージｋの情報を読み込む。
【００６４】
［ステップＳ１２］トランザクション識別部１４０は、メッセージｋが開始メッセージか否かを判定する。開始メッセージであるか否かは、予め定義された開始メッセージ条件を満たすか否かで判断できる。開始メッセージ条件は、分析対象のシステムの性質に基づいて、下記のような条件が設定される。
【００６５】
１．メッセージ種別が所定の値であること(例えば、メッセージ種別＝ＨＴＴＰ）。例えば、クライアント２１〜２３からの要求として、ＨＴＴＰ要求のみが認められている場合、所定のメッセージ種別として、ＨＴＴＰが設定される。
【００６６】
２．処理内容が所定の値であること（例えば、処理内容=/root/program.cgi?x=*&y=*）。処理内容は、例えば、処理を実行するプログラムのファイル名によって予め設定されている。
【００６７】
３．クライアントＩＰアドレスが所定の値であること（例えば、クライアントＩＰアドレス=210.98.76.54)。予めサービス対象のクライアントのＩＰアドレスが分かっている場合、そのＩＰアドレスが設定される。
【００６８】
４．サーバＩＰアドレスが所定の値であること(例えば、サーバＩＰアドレス=12.34.56.78)。例えば、常にＷｅｂサーバ３１が開始メッセージを処理する場合、Ｗｅｂサーバ３１のアドレスが予め設定される。
【００６９】
メッセージｋが開始メッセージであれば、処理がステップＳ１３に進められる。メッセージｋが開始メッセージでなければ、処理がステップＳ１４に進められる。
［ステップＳ１３］トランザクション識別部１４０は、開始メッセージ集合Ａに情報を登録する。具体的には、トランザクション識別部１４０は、メッセージｋに関連づけて、空の確定子孫メッセージリスト、推定子孫メッセージリスト、および未識別子孫メッセージリストを作成する。そして、トランザクション識別部１４０は、トランザクション識別状況を「未識別（Ｕ）」と設定し、メッセージｋに関する情報を開始メッセージ集合Ａに登録する。その後、処理がステップＳ１５に進められる。
【００７０】
［ステップＳ１４］トランザクション識別部１４０は、メッセージｋについて開始メッセージ候補リストを作成し、子孫メッセージ集合Ｂに登録する。
［ステップＳ１５］トランザクション識別部１４０は、メッセージ履歴１１２から、トランザクション識別に使用する所定数のメッセージを読み込んだか否かを判定する。所定数のメッセージの読み込みが完了していれば、処理がステップＳ１６に進められる。読み込んだメッセージ数が所定数に達していなければ、処理がステップＳ１１に進められ、次のメッセージの読み込みが行われる。
【００７１】
［ステップＳ１６］トランザクション識別部１４０は、確定トランザクションの識別処理を行う。
［ステップＳ１７］トランザクション識別部１４０は、推定トランザクションの識別処理を行う。
【００７２】
［ステップＳ１８］トランザクション識別部１４０は、未識別子孫メッセージによる推定トランザクションの置換処理を行う。
［ステップＳ１９］トランザクション識別部１４０が、トランザクション識別終了条件を満たしたか否かを判断する。トランザクション識別終了条件は、分析者の目的に合わせて、分析者が下記のような条件の少なくとも１つを適宜設定する。
【００７３】
１．すべてのメッセージが識別されたら終了する。
２．新たにトランザクション識別されたメッセージ数が所定の閾値未満になったら終了する。
【００７４】
３．所定の繰り返し数に達したら終了する。
トランザクション識別終了条件が満たされた場合、処理がステップＳ２０に進められる。トランザクション識別終了条件が満たされていない場合、処理がステップＳ１７に進められ、トランザクション識別処理が続行される。
【００７５】
［ステップＳ２０］トランザクション識別部１４０は、トランザクション識別結果をトランザクション記憶部１１３に出力する。
次に、ステップＳ１４に示した子孫メッセージ集合への情報の登録処理について、詳細に説明する。
【００７６】
図８は、子孫メッセージ集合への情報の登録処理の手順を示すフローチャートである。以下、図８に示す処理をステップ番号に沿って説明する。
［ステップＳ３１］トランザクション識別部１４０は、ステップＳ１１で読み込まれたメッセージｋについて、呼び出し関係に基づいて可能な開始メッセージ候補のＩＤ｛ｊ１，ｊ２，・・・，ｊＮ｝をリストアップする。ここで、ｎ番目（ｎは、１以上の整数）の開始メッセージ候補がｊｎで表され、開始メッセージ候補の総数がＮ（Ｎは、０以上の整数）である。
【００７７】
具体的には、トランザクション識別部１４０は、メッセージｋと開始メッセージ候補を比較し、所定の呼び出し可能条件を満たしたときに、呼び出し関係有りを判断する。呼び出し可能条件としては、例えば、「開始メッセージ候補の要求時刻から応答時刻までの期間が、子孫メッセージ候補（メッセージｋ）の要求時刻から応答時刻までの期間を包含する」という条件がある。呼び出し可能条件の詳細は後述する（図１５参照）。
【００７８】
［ステップＳ３２］トランザクション識別部１４０は、開始メッセージ候補数Ｎを判断する。開始メッセージ候補数Ｎが０であれば、処理が終了する。開始メッセージ候補数Ｎが１であれば、処理がステップＳ３３に進められる。開始メッセージ候補数が２以上であれば、処理がステップＳ３５に進められる。
【００７９】
［ステップＳ３３］トランザクション識別部１４０は、メッセージｋの開始メッセージ識別状況を「確定（Ｄ）」にして、開始メッセージ候補リストにｊ１（唯一の開始メッセージ候補）を登録する。
【００８０】
［ステップＳ３４］トランザクション識別部１４０は、ＩＤがｊ１のメッセージに対する確定子孫メッセージリストにメッセージｋのＩＤを登録する。その後、処理がステップＳ３９に進められる。
【００８１】
［ステップＳ３５］トランザクション識別部１４０は、開始メッセージ候補数が２以上の場合、変数ｎ（ｎ＝１，２，・・・，Ｎ）が取り得る値毎に、ステップＳ３６〜ステップＳ３７の処理を実行する。
【００８２】
［ステップＳ３６］トランザクション識別部１４０は、メッセージｋの開始メッセージ識別状況を「未識別（Ｕ）」にして、開始メッセージ候補リストにｊｎを登録する。
［ステップＳ３７］トランザクション識別部１４０は、ｊｎの未識別子孫メッセージリストにメッセージｋのＩＤを登録する。
【００８３】
［ステップＳ３８］トランザクション識別部１４０は、変数ｎ（ｎ＝１，２，・・・，Ｎ）が取り得る全ての値についてステップＳ３６，Ｓ３７の処理を行ったら、処理をステップＳ３９に進める。
【００８４】
［ステップＳ３９］トランザクション識別部１４０は、ｋを子孫メッセージ集合Ｂに登録する。その後、処理が終了する。
このようにして、メッセージｋを、開始メッセージの候補となるメッセージの子孫メッセージ集合に登録することができる。
【００８５】
次に、確定トランザクションの識別処理（図７のステップＳ１６）を詳細に説明する。
図９は、確定トランザクションの識別処理の手順を示すフローチャートである。以下、図９に示す処理をステップ番号に沿って説明する。
【００８６】
［ステップＳ４１］トランザクション識別部１４０は、開始メッセージ集合Ａに含まれる各メッセージｋについて、ステップＳ４２〜ステップＳ４６の処理を実行する。
［ステップＳ４２］トランザクション識別部１４０は、メッセージｋの未識別子孫メッセージリストは空か（子孫となるメッセージが全て確定したか）否かを判断する。未識別子孫メッセージリストにメッセージが登録されていれば、処理がステップＳ４７に進められる。未識別子孫メッセージリストにメッセージが登録されていなければ、処理がステップＳ４３に進められる。
【００８７】
［ステップＳ４３］トランザクション識別部１４０は、メッセージｋおよびメッセージｋの確定子孫メッセージリストに含まれるメッセージによって、トランザクションＳを構成する。このとき、トランザクション識別部１４０は、メッセージｋのトランザクション識別状況を「確定（Ｄ）」とする。
【００８８】
［ステップＳ４４］トランザクション識別部１４０は、確定したトランザクションＳの情報をＨＤＤ１０３等の記録媒体に記録する。ＨＤＤに記録された確定トランザクションＳの情報は、トランザクション識別結果の出力時（ステップＳ２０）にまとめて出力される。なお、トランザクションＳが確定する毎に、画面等に出力することもできる。
【００８９】
［ステップＳ４５］トランザクション識別部１４０は、確定トランザクションＳの確定回数Ｆ（Ｓ）を１だけ増やす。
［ステップＳ４６］トランザクション識別部１４０は、開始メッセージ集合Ａから、ステップＳ４３〜ステップＳ４５の処理を実行したメッセージｋを削除する。
【００９０】
［ステップＳ４７］トランザクション識別部１４０は、開始メッセージ集合Ａに含まれるすべてのメッセージについて、ステップＳ４２〜ステップＳ４６の処理が完了したら、処理を終了する。未処理のメッセージがあれば、そのメッセージに対するステップＳ４２〜ステップＳ４６の処理が実行される。
【００９１】
このようにして、確定トランザクションを識別することができる。次に、推定トランザクションの識別処理（図７のステップＳ１７）を詳細に説明する。
図１０は、推定トランザクションの識別処理の手順を示すフローチャートである。以下、図１０に示す処理をステップ番号に沿って説明する。
【００９２】
［ステップＳ５１］トランザクション識別部１４０は、開始メッセージ集合Ａの各メッセージｋについて、ステップＳ５２〜ステップＳ５８の処理を行う。
［ステップＳ５２］トランザクション識別部１４０は、メッセージｋのトランザクション識別状況が「未識別（Ｕ）」か否かを判断する。未識別であれば、処理がステップＳ５３に進められる。「識別」であれば、処理がステップＳ５９に進められる。
【００９３】
［ステップＳ５３］トランザクション識別部１４０は、メッセージｋおよび確定子孫メッセージリスト、推定子孫メッセージリストによってトランザクションを構成し、推定トランザクションＳ１とする。
【００９４】
［ステップＳ５４］トランザクション識別部１４０は、メッセージｋの未識別子孫メッセージリストが空か否かを判断する。未識別子孫メッセージリストが空であれば、処理がステップＳ５８に進められる。未識別子孫メッセージリストが空でなければ、処理がステップＳ５５に進められる。
【００９５】
［ステップＳ５５］トランザクション識別部１４０は、ダミーのトランザクションを推定トランザクションＳ２とし、推定トランザクションＳ２の確からしさをｈ（Ｓ２）＝所定値とする。
【００９６】
［ステップＳ５６］トランザクション識別部１４０は、メッセージｋが属する最も確からしい推定トランザクションＳ１を選択する。この処理の詳細は後述する（図１１参照）。
【００９７】
［ステップＳ５７］トランザクション識別部１４０は、ステップＳ５６の処理において推定トランザクションＳ１が選択されたか否かを判断する。推定トランザクションが選択された場合、処理がステップＳ５８に進められる。推定トランザクションが選択されなかった場合、処理がステップＳ５９に進められる。
【００９８】
［ステップＳ５８］トランザクション識別部１４０は、メッセージｋのトランザクション識別状況を「識別（Ｓ）」と設定し、推定トランザクションＳ１の情報をＨＤＤ１０３等に記録し、さらに、推定トランザクションＳ１の推定回数ｇ（Ｓ１）を１だけ増やす。
【００９９】
［ステップＳ５９］トランザクション識別部１４０は、開始メッセージ集合Ａに含まれる全てのメッセージについて、ステップＳ５２〜ステップＳ５８の処理が完了した場合、処理をステップＳ６０に進める。
【０１００】
［ステップＳ６０］トランザクション識別部１４０は、推定トランザクションの識別終了条件が満たされたか否かを判断する。なお、推定トランザクションの識別終了条件については、分析者の目的に合わせて、下記のような条件の少なくとも１つを適宜設定することができる。
【０１０１】
１．すべての開始メッセージのトランザクション識別状況が「識別（Ｓ）」になったら終了する。
２．新たにトランザクション識別されたメッセージ数が所定の閾値未満になったら終了する。
【０１０２】
３．所定の繰り返し数に達したら終了する。
トランザクション識別部１４０は、識別終了条件が満たされた場合、推定トランザクションの識別処理を終了する。また、トランザクション識別部１４０は、識別終了条件が満たされていない場合、処理をステップＳ５１に進める。
【０１０３】
図１１は、確からしいトランザクションの選択処理手順を示すフローチャートの前半である。以下、図１１に示す処理をステップ番号に沿って説明する。
［ステップＳ７１］トランザクション識別部１４０は、ｍ＝１，２，・・・、min｛Ｍ，Ｍｃ｝（Ｍは、ｋの未識別子孫メッセージリストに登録されたメッセージ数、Ｍｃは予め設定された値、min｛Ｍ，Ｍｃ｝はＭとＭｃとの小さい方の値のｍの取り得る値毎に、ステップＳ７２〜ステップＳ７８の処理を実行する。
【０１０４】
［ステップＳ７２］トランザクション識別部１４０は、未識別子孫メッセージリストＵから、ｍ個のメッセージの組み合わせＵｓを選択する。そして、トランザクション識別部１４０は、選択可能な全ての組み合わせに対して、ステップＳ７３〜ステップＳ７７の処理を実行する。
【０１０５】
［ステップＳ７３］トランザクション識別部１４０は、メッセージｋ、確定子孫メッセージリスト、推定子孫メッセージリスト、および選択されたメッセージの組み合わせＵｓによって構成されるトランザクションＳを構成し、トランザクションＳの確からしさｈ（Ｓ）＝ｆ（Ｓ）＋α×ｇ（Ｓ）を計算する。αは、予め設定された係数（例えば０．２）である。
【０１０６】
［ステップＳ７４］トランザクション識別部１４０は、ステップＳ７３で計算したトランザクションＳの確からしさｈ（Ｓ）が、最も確からしさが大きいと判定されたトランザクションＳ１の確からしさｈ（Ｓ１）より大きいか否かを判定する。ｈ（Ｓ）がｈ（Ｓ１）より大きい場合、処理がステップＳ７５に進められる。ｈ（Ｓ）がｈ（Ｓ１）未満の場合、処理がステップＳ７６に進められる。
【０１０７】
［ステップＳ７５］トランザクション識別部１４０は、トランザクションＳ１を、２番目に確からしさが大きいトランザクションＳ２とする。また、トランザクション識別部１４０は、ステップＳ７３で構成したトランザクションＳを、最も確からしさが大きいトランザクションＳ１とする。その後、処理がステップＳ７８に進められる。
【０１０８】
［ステップＳ７６］トランザクション識別部１４０は、ステップＳ７３で計算したトランザクションＳの確からしさｈ（Ｓ）が、２番目に確からしさが大きいトランザクションＳ２の確からしさｈ（Ｓ２）より大きいか否かを判定する。ｈ（Ｓ）がｈ（Ｓ２）より大きい場合、処理がステップＳ７７に進められる。ｈ（Ｓ）がｈ（Ｓ２）未満の場合、処理がステップＳ７８に進められる。
【０１０９】
［ステップＳ７７］トランザクション識別部１４０は、ステップＳ７３で構成したトランザクションＳを、２番目に確からしさが大きいトランザクションＳ２とする。
［ステップＳ７８］トランザクション識別部１４０は、ｍ個のメッセージからなる全ての組み合わせ全てについてステップＳ７３〜ステップＳ７７の処理が完了した場合、処理をステップＳ７９に進める。
【０１１０】
［ステップＳ７９］トランザクション識別部１４０は、ｍの取り得るすべての値に応じて、ステップＳ７２〜ステップＳ７８の処理が完了した場合、処理をステップＳ８１（図１２に示す）に進める。
【０１１１】
図１２は、確からしいトランザクションの選択処理手順を示すフローチャートの後半である。以下、図１２に示す処理をステップ番号に沿って説明する。
［ステップＳ８１］トランザクション識別部１４０は、最も確からしさが大きいと判定されたトランザクションＳ１の確からしさｈ（Ｓ１）を、２番目に確からしさが大きいトランザクションＳ２の確からしさｈ（Ｓ２）で除算した値が、所定の閾値より大きいか否かを判定する。除算結果が所定の閾値より大きければ、処理がステップＳ８２に進められる。除算結果が所定の閾値以下であれば、処理がステップＳ８９に進められる。
【０１１２】
［ステップＳ８２］トランザクション識別部１４０は、最も確からしさが大きいと判定されたトランザクションＳ１に属する各未識別子孫メッセージｕについて、ステップＳ８３〜ステップＳ８６の処理を実行する。
【０１１３】
［ステップＳ８３］トランザクション識別部１４０は、未識別子孫メッセージｕの開始メッセージ識別状況を「推定（Ｅ）」にして、メッセージｋの推定子孫メッセージリストに未識別子孫メッセージｕを登録する。
【０１１４】
［ステップＳ８４］トランザクション識別部１４０は、処理対象の未識別子孫メッセージｕに対して設定された開始メッセージ候補リストに含まれる各開始メッセージｊについて、ステップＳ８５の処理を実行する。
【０１１５】
［ステップＳ８５］トランザクション識別部１４０は、開始メッセージｊの未識別子孫メッセージリストから、未識別子孫メッセージｕを除去する。
［ステップＳ８６］トランザクション識別部１４０は、処理対象の未識別子孫メッセージｕに対して設定された開始メッセージ候補リストに含まれるすべての開始メッセージｊについて、ステップＳ８５の処理が完了した場合、処理をステップＳ８７に進める。
【０１１６】
［ステップＳ８７］トランザクション識別部１４０は、最も確からしさが大きいと判定されたトランザクションＳ１に属する全ての未識別子孫メッセージｕについて、ステップＳ８３〜ステップＳ８６の処理が完了した場合、処理がステップＳ８８に進める。
【０１１７】
［ステップＳ８８］トランザクション識別部１４０は、推定トランザクションとして、最も確からしさが大きいと判定されたトランザクションＳ１を返す。その後、確からしいトランザクション選択処理が終了する。
【０１１８】
［ステップＳ８９］トランザクション識別部１４０は、最も確からしいトランザクションが未選択である旨を返す。その後、確からしいトランザクション選択処理が終了する。
このようにして、最も確からしさが大きいトランザクションが、２番目に確からしさが大きいトランザクションよりも確からしさが十分に大きければ、最も確からしさが大きいトランザクションが推定トランザクションとして決定される。
【０１１９】
次に、推定トランザクションの置換処理（図７のステップＳ１８）について説明する。
図１３は、推定トランザクションの置換処理手順を示すフローチャートの前半である。以下、図１３に示す処理をステップ番号に沿って説明する。
【０１２０】
［ステップＳ９１］トランザクション識別部１４０は、子孫メッセージ集合Ｂに含まれる各メッセージｋについて、ステップＳ９２〜ステップＳ１０８の処理を実行する。
［ステップＳ９２］トランザクション識別部１４０は、メッセージｋの開始メッセージ識別状況が「未識別」か否かを判断する。開始メッセージ識別状況が「未識別」であれば、処理がステップＳ９３に進められる。開始メッセージ識別状況が「確定」であれば、処理がステップＳ１０９（図１４に示す）に進められる。
【０１２１】
［ステップＳ９３］トランザクション識別部１４０は、ダミーのトランザクションＳ＃を生成し、置換トランザクション候補Ｓ＊の初期値とする。また、トランザクション識別部１４０は、置換トランザクション候補Ｓ＊の確からしさｈ（Ｓ＊）＝ｈ（Ｓ＃）＝所定値とする。
【０１２２】
［ステップＳ９４］トランザクション識別部１４０は、メッセージｋの開始メッセージ候補リスト内の各メッセージｊについて、ステップＳ９５〜ステップＳ９７の処理を実行する。
【０１２３】
［ステップＳ９５］トランザクション識別部１４０は、メッセージｊ、メッセージｊの確定子孫メッセージリストおよび推定子孫メッセージリスト、およびメッセージｋによってトランザクションＳを構成し、トランザクションＳの確からしさｈ（Ｓ）＝ｆ（Ｓ）＋α×ｇ（Ｓ）を計算する。
【０１２４】
［ステップＳ９６］トランザクション識別部１４０は、ステップＳ９５で構成したトランザクションＳの確からしさｈ（Ｓ）が、トランザクションＳ＊の確からしさｈ（Ｓ＊）より大きいか否かを判断する。ｈ（Ｓ）の方がｈ（Ｓ＊）より大きければ、処理がステップＳ９７に進められる。ｈ（Ｓ）がｈ（Ｓ＊）以下であれば、処理がステップＳ９８に進められる。
【０１２５】
［ステップＳ９７］トランザクション識別部１４０は、ステップＳ９５で構成したトランザクションＳをＳ＊とする。
［ステップＳ９８］トランザクション識別部１４０は、メッセージｋの開始メッセージ候補リスト内の全てのメッセージｊについて、ステップＳ９５〜ステップＳ９７の処理が完了した場合、処理をステップＳ９９に進める。
【０１２６】
［ステップＳ９９］トランザクション識別部１４０は、置換トランザクション候補Ｓ＊の確からしさｈ（Ｓ＊）が所定の閾値より大きいか否かを判断する。ｈ（Ｓ＊）が所定の閾値より大きい場合、処理がステップＳ１０１（図１４に示す）に進められる。ｈ（Ｓ＊）が所定の閾値以下の場合、処理がステップＳ１０９（図１４に示す）に進められる。
【０１２７】
図１４は、推定トランザクションの置換処理手順を示すフローチャートの後半である。以下、図１４に示す処理をステップ番号に沿って説明する。
［ステップＳ１０１］トランザクション識別部１４０は、トランザクションＳ＊の開始メッセージｊ＊のトランザクション識別状況はトランザクション識別状況が「識別」か否かを判定する。トランザクション識別状況が「識別」であれば、処理がステップＳ１０２に進められる。トランザクション識別状況が「未識別」であれば、処理がステップＳ１０３に進められる。
【０１２８】
［ステップＳ１０２］トランザクション識別部１４０は、メッセージｊ＊、メッセージｊ＊の確定子孫メッセージリストおよび推定子孫メッセージリストによって構成されるトランザクションＳの推定回数ｇ（Ｓ）を１だけ減らす。その後、処理がステップＳ１０４に進められる。
【０１２９】
［ステップＳ１０３］トランザクション識別部１４０は、メッセージｊ＊のトランザクション識別状況を「識別」にする。
［ステップＳ１０４］トランザクション識別部１４０は、メッセージｋの開始メッセージ識別状況を「置換（Ｆ）」にして、メッセージｊ＊の推定子孫メッセージリストにメッセージｋを登録する。
【０１３０】
［ステップＳ１０５］トランザクション識別部１４０は、メッセージｋの開始メッセージ候補リストに含まれる各メッセージｊについて、ステップＳ１０６の処理を実行する。
［ステップＳ１０６］トランザクション識別部１４０は、メッセージｊの未識別子孫メッセージリストからメッセージｋを除去する。
【０１３１】
［ステップＳ１０７］トランザクション識別部１４０は、メッセージｋの開始メッセージ候補リストに含まれるすべてのメッセージｊについてステップＳ１０６の処理が完了すると、処理をステップＳ１０８に進める。
【０１３２】
［ステップＳ１０８］トランザクション識別部１４０は、推定トランザクションＳ＊の情報を記録し、推定回数ｇ（Ｓ＊）を１だけ増やす。
［ステップＳ１０９］トランザクション識別部１４０は、子孫メッセージ集合Ｂに含まれる全てのメッセージｋについてステップＳ９２〜ステップＳ１０８の処理が完了したら、推定トランザクションの置換処理を終了する。
【０１３３】
以上のような処理によって得られたトランザクションが、トランザクションモデルとして、トランザクション記憶部１１３に格納される。
以下、フローチャートによって示した個々の処理内容を詳細に説明する。
【０１３４】
まず、図８のステップＳ３１におけるメッセージ間の呼び出し関係の判定処理について説明する。呼び出し条件の第１の例は、「開始メッセージ候補の要求時刻から応答時刻までの期間が、子孫メッセージ候補の要求時刻から応答時刻までの期間を包含する」というものである。
【０１３５】
図１５は、呼び出し条件の第１の例を示す図である。図１５には、４つのメッセージ４１〜４４が示されている。図中、横軸に時間軸が取られている。また、各メッセージ４１〜４４に示される黒い三角が要求時刻を示し、白い三角が応答時刻を示している。各メッセージ４１〜４４には、それぞれ「ＩＤ０１」、「ＩＤ０２」、「ＩＤ０３」、「ＩＤ０４」の識別番号が付与されている。
【０１３６】
なお、メッセージ４１〜４４は、それぞれステップＳ１２（図７に示す）の処理によって、開始メッセージ候補なのか子孫メッセージ候補なのかが判別されているものとする。この例では、メッセージ４１は開始メッセージ候補であり、メッセージ４２〜４４は子孫メッセージ候補である。
【０１３７】
ここで、開始メッセージ候補であるメッセージ４１と、子孫メッセージ候補であるメッセージ４２〜４４との間の関係が、「開始メッセージ候補の要求時刻から応答時刻までの期間が、子孫メッセージ候補の要求時刻から応答時刻までの期間を包含する」という呼び出し条件を満たすか否かが判断される。
【０１３８】
この呼び出し条件に従ってメッセージ４１〜４４間の関係を見ると、メッセージ４２，４３の要求時刻から応答時刻までの期間は、メッセージ４１の要求時刻から応答時刻までの期間に包含されている。一方、メッセージ４４の要求時刻から応答時刻までの期間は、メッセージ４１の要求時刻から応答時刻までの期間に包含されていない。従って、メッセージ４２，４３は、メッセージ４１の子孫としての条件を満たしているが、メッセージ４４は、メッセージ４１の子孫としての条件を満たしていない。
【０１３９】
メッセージ間の呼び出し関係の第２の条件としては、「開始メッセージ候補の要求時刻から所定の時間（呼び出し制限時間）内に子孫メッセージ候補の要求時刻が含まれる」という条件を設定できる。
【０１４０】
図１６は、呼び出し条件の第２の例を示す図である。図１６には、４つのメッセージ５１〜５４が示されている。図中、横軸に時間軸が取られている。また、各メッセージ５１〜５４に示される黒い三角が要求時刻を示し、白い三角が応答時刻を示している。各メッセージ５１〜５４には、それぞれ「ＩＤ０１」、「ＩＤ０２」、「ＩＤ０３」、「ＩＤ０４」の識別番号が付与されている。また、メッセージ５１が開始メッセージ候補であり、メッセージ５２〜５４が子孫メッセージ候補である。
【０１４１】
ここで、開始メッセージ候補であるメッセージ５１と、子孫メッセージ候補であるメッセージ５２〜５４との間の関係が、「開始メッセージ候補の要求時刻から所定の時間（呼び出し制限時間）内に子孫メッセージ候補の要求時刻が含まれる」という呼び出し条件を満たすか否かが判断される。なお、図１６では、メッセージ５１の要求時刻からの呼び出し制限時間５６を、斜線入りの矩形で示している。
【０１４２】
この呼び出し条件に従ってメッセージ５１〜５４間の関係を見ると、メッセージ５２，５３の要求時刻は、メッセージ５１の要求時刻から呼び出し制限時間５６経過前である。一方、メッセージ５４の要求時刻は、メッセージ５１の要求時刻から呼び出し制限時間５６経過後である。従って、メッセージ５２，５３は、メッセージ５１の子孫としての条件を満たしているが、メッセージ５４は、メッセージ５１の子孫としての条件を満たしていない。
【０１４３】
メッセージ間の呼び出し関係の第３の条件としては、「呼び出し元メッセージのサーバＩＰアドレスと呼び出し先メッセージのクライアントＩＰアドレスが一致するものどうしをつなげていくと、開始メッセージ候補から直接または間接に呼び出される子孫メッセージ候補につながる」という条件を設定できる。
【０１４４】
図１７は、呼び出し条件の第３の例を示す図である。図１７には、４つのメッセージ６１〜６４が示されている。図中、横軸に時間軸が取られている。また、各メッセージ６１〜６４に示される黒い三角が要求時刻を示し、白い三角が応答時刻を示している。各メッセージ６１〜６４には、それぞれ「ＩＤ０１」、「ＩＤ０２」、「ＩＤ０３」、「ＩＤ０４」の識別番号が付与されている。また、メッセージ６１が開始メッセージ候補であり、メッセージ６２〜６４が子孫メッセージ候補である。
【０１４５】
ここで、開始メッセージ候補であるメッセージ６１と、子孫メッセージ候補であるメッセージ６２〜６４との間の関係が、「呼び出し元メッセージのサーバＩＰアドレスと呼び出し先メッセージのクライアントＩＰアドレスが一致するものどうしをつなげていくと、開始メッセージ候補からすべての子孫メッセージ候補につながる」という呼び出し条件を満たすか否かが判断される。なお、図１７では、各メッセージ６１〜６４のサーバＩＰアドレスを「ｓ＿ｉｐ」で示しており、クライアントＩＰアドレスを「ｃ＿ｉｐ」で示している。
【０１４６】
この呼び出し条件に従ってメッセージ６１〜６４間の関係を見ると、メッセージ６１の呼び出し元メッセージのサーバＩＰアドレスと、メッセージ６２の呼び出し先クライアントＩＰアドレスが一致する。また、メッセージ６２の呼び出し元メッセージのサーバＩＰアドレスと、メッセージ６３の呼び出し先クライアントＩＰアドレスが一致する。一方、メッセージ６１〜６３の呼び出し元メッセージのサーバＩＰアドレスとメッセージ６４の呼び出し先クライアントＩＰアドレスとは一致しない。従って、メッセージ６２，６３は、メッセージ６１の子孫としての条件を満たしているが、メッセージ６４は、メッセージ６１の子孫としての条件を満たしていない。
【０１４７】
次に、図４に示したように、Ｗｅｂサーバ３１、アプリケーションサーバ３２、ＤＢサーバ３３によってクライアント２１〜２３に対してサービスを提供する場合のトランザクションの分析例を具体的に説明する。この例では、クライアント２１〜２３とＷｅｂサーバ３１との間のメッセージ交換は、ＨＴＴＰで行われる。また、Ｗｅｂサーバ３１とアプリケーションサーバ３２との間のメッセージ交換は、ＩＩＯＰで行われる。さらに、アプリケーションサーバ３２とＤＢサーバ３３との間のメッセージ交換は、ＲＤＢ２で行われる。
【０１４８】
ところで、このシステムでは、トランザクションは多階層のメッセージで構成される。すなわち、Ｗｅｂサーバ３１からの要求がアプリケーションサーバ３２に渡され、アプリケーションサーバ３２からの要求がＤＢサーバ３３に渡される。本実施の形態では、このような多階層のトランザクションの構造情報を、以下のように表すものとする。
【０１４９】
図１８は、トランザクションの構造情報の第１の例を示す図である。トランザクション７１は３階層構造である。
まず、処理内容が同一のメッセージの組み合わせで、かつ呼び出し関係が同一の階層構造を持つ複数のトランザクションは、同一種類のトランザクションであるとみなす。この場合、トランザクションの種類毎に０，１，・・・のようにＩＤを与えて、トランザクションの種類を区別する。
【０１５０】
トランザクション種類ＩＤの付け方は、分析者の都合に合わせて適宜設定できるものとする。例えば、新しいトランザクションの種類が識別された順でトランザクション種類のＩＤをつけることができる。また、トランザクション識別処理中には仮のＩＤを付けておき、識別処理終了後にメッセージの文字列の辞書順にソートして、トランザクション種類のＩＤを付けなおすこともできる。
【０１５１】
各トランザクション種類について、どのようなメッセージの組み合わせでどのような階層構造になっているか分かるように、所定の形式でトランザクションの構造情報７２を記述するものとする。
【０１５２】
具体的には、トランザクション種類のＩＤ、およびトランザクション内で各メッセージがどのメッセージから何番目に呼び出されるかについての情報を組み合わせて、構造情報７２を記述する。
【０１５３】
例えば、図１８に示す種類ＩＤが「０」のトランザクション７１は、開始メッセージ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」は、トランザクション種類ＩＤ、子メッセージが呼び出された順番、孫メッセージが呼び出された順番をハイフンでつなげたものであり、このRDB2;pがトランザクション種類０(の開始メッセージ)の０番目の子メッセージの０番目の孫メッセージであることを意味する。
【０１５５】
また、このトランザクション全体の構造情報７２を「0;HTTP;A、0-0;IIOP;i、0-0-0;RDB2;p」のように記述するものとする。
図１９は、トランザクションの構造情報の第２の例を示す図である。図１９に示す種類「１」のトランザクション７３の階層構造では、開始メッセージHTTP;A(種別HTTP、処理内容A)が、メッセージIIOP;i(種別IIOP、処理内容i)とメッセージIIOP;j(種別IIOP、処理内容j)との２つのメッセージをこの順に呼び出す。また、メッセージIIOP;iが、メッセージRDB2;p(種別RDB2、処理内容p)とメッセージRDB2;q(種別RDB2、処理内容q)との２つのメッセージをこの順に呼び出す。さらに、メッセージIIOP;jが、メッセージRDB2;r(種別RDB2、処理内容r)を呼び出す。このように、トランザクション７３では、開始メッセージ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」は、トランザクション種類ＩＤ、子メッセージが呼び出された順番、孫メッセージが呼び出された順番をハイフンでつなげたものであり、このRDB2;rがトランザクション種類１(の開始メッセージ)の１番目の子メッセージの０番目の孫メッセージであることを意味する。
【０１５７】
また、このトランザクション全体の構造情報７４を「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」のように記述する。
以下に、このような構造情報に基づいて、具体的なトランザクション識別処理例について説明する。
【０１５８】
［第１のトランザクション識別例］
図２０は、メッセージ履歴の例を示す図である。このメッセージ履歴１１２には、メッセージＩＤ＝０，１，・・・，４０の４１個のメッセージ情報が記録されている。各メッセージ情報は、「，」でデータが区切られており、各データは、左から順に「メッセージＩＤ」、「要求時刻」、「応答時刻」、「種別」、「処理内容」、「クライアントＩＰアドレス」、「サーバＩＰアドレス」を表している。
【０１５９】
このようなメッセージ履歴１１２に基づいて、トランザクション識別部１４０は、各メッセージが開始メッセージか子孫メッセージかを判別する。そして、トランザクション識別部１４０は、開始メッセージを開始メッセージリストに登録し、子孫メッセージを子孫メッセージリストに登録する。
【０１６０】
ここで、トランザクション識別に用いる制約条件を、以下のように定義する。
・開始メッセージ条件として、「種別がHTTPである」という条件を設定する。
・メッセージ間の呼び出し関係の条件として、「開始メッセージ候補の要求時刻から応答時刻までの期間は、子孫メッセージ候補の要求時刻から応答時刻までの期間を包含する」という条件を設定する。
【０１６１】
これらの条件に基づいて、トランザクション識別部１４０は、メッセージ履歴内の各メッセージが、開始メッセージであるか子孫メッセージであるかを識別し、それぞれ開始メッセージリスト、子孫メッセージリストに登録する。
【０１６２】
そして、トランザクション識別部１４０は、各開始メッセージに関連づけて、確定子孫メッセージリスト、未識別子孫メッセージリスト、および空の推定子孫メッセージリストを作成し、トランザクション識別状況を「未識別（Ｕ）」と設定し、開始メッセージ集合に登録する。また、トランザクション識別部１４０は、子孫メッセージに関連づけて、開始メッセージ候補リストを作成し、開始メッセージ識別状況を設定し、子孫メッセージ集合に登録する。なお、開始メッセージ識別状況の設定方法は、以下の通りである。
【０１６３】
ａ．その開始メッセージ候補リストの要素数が１の場合は、その子孫メッセージについて開始メッセージが確定するので、その開始メッセージ識別状況を「確定（Ｄ）」にする。
【０１６４】
ｂ．その開始メッセージ候補リストの要素数が２以上の場合は、その子孫メッセージについて開始メッセージがまだ識別できないので、その開始メッセージ識別状況を「未識別（Ｕ）」にする。
【０１６５】
ｃ．その開始メッセージ候補リストの要素数が０の場合は、その子孫メッセージについて開始メッセージが存在しないので、分析対象外として子孫メッセージ集合に登録しない。
【０１６６】
図２１は、開始メッセージ集合の例を示す図である。この開始メッセージ集合Ａには、図２０に示したメッセージのうち、開始メッセージ条件を満たしたメッセージの情報が登録されている。メッセージの情報内の各データは「、」で区切られており、「メッセージＩＤ」、「要求時刻」、「応答時刻」、「種別」、「処理内容」、「｛確定子孫メッセージリスト｝」、「｛推定子孫メッセージリスト｝」、「｛未識別子孫メッセージリスト｝」、「トランザクション識別状況」の順でデータが並べられている。
【０１６７】
図２２は、子孫メッセージ集合の例を示す図である。この子孫メッセージ集合Ｂには、図２０に示したメッセージのうち、開始メッセージ条件を満たしていないメッセージの情報が登録されている。メッセージの情報内の各データは「、」で区切られており、「メッセージＩＤ」、「要求時刻」、「応答時刻」、「種別」、「処理内容」、「｛開始メッセージ候補リスト｝」、「開始メッセージ識別状況」の順でデータが並べられている。
【０１６８】
なお、図２０に示すＩＤ「４０」のメッセージは、開始メッセージ候補が存在しないため分析対象からは除外される。そのため、ＩＤ「４０」のメッセージは、子孫メッセージ集合Ｂに登録されていない。
【０１６９】
その後、トランザクション識別部１４０は、開始メッセージ集合Ａに登録されたメッセージを順番に処理対象のメッセージｋとする。そして、トランザクション識別部１４０は、メッセージｋの未識別子孫メッセージリストが空ならばトランザクションが確定するので、そのメッセージｋと確定子孫メッセージリストに登録されたメッセージによって確定トランザクションを構成する。
【０１７０】
図２３は、未識別子孫メッセージリストが空の開始メッセージの例を示す図である。この図では、開始メッセージ集合Ａ内の未識別子孫メッセージリストが空の開始メッセージのみを示している。未識別子孫メッセージリストが空の開始メッセージの「｛確定子孫メッセージリスト｝」のフィールドを参照することで、子孫メッセージ集合Ｂから、未識別子孫メッセージリストが空の開始メッセージに関連する子孫メッセージを抽出できる。
【０１７１】
図２４は、未識別子孫メッセージリストが空の開始メッセージに関連する子孫メッセージの例を示す図である。この図では、子孫メッセージ集合Ｂ内のメッセージのうち、未識別子孫メッセージリストが空の開始メッセージに関連するもののみを示している。
【０１７２】
図２５は、確定トランザクションの構成結果を示す図である。この図には、図２３、図２４に示されたメッセージに基づいて確定したトランザクション７１〜７８が示されている。
【０１７３】
この例では、各トランザクション７１〜７８の構成が、メッセージを要求側と応答側の情報に分けて２レコード１組で記述されている。要求側のレコードには、「トランザクションＩＤ」、「要求/応答時刻」、「種別」、「req」、「メッセージＩＤ」、「トランザクションの構造情報」、「処理内容」、「クライアントＩＰアドレス」、「サーバＩＰアドレス」、「(開始メッセージ識別状況)」の順でデータが並べられている。また、応答側のレコードには、「トランザクションＩＤ」、「応答時刻」、「種別」、「res」、「メッセージＩＤ」、「トランザクションの構造情報」の順でデータが並べられている。
【０１７４】
このとき、トランザクション識別部１４０は、トランザクションの確定回数ｆ（Ｓ）を数え上げる。その結果、処理内容がＡであるＨＴＴＰメッセージと処理内容がｐであるＲＤＢ２メッセージとからなるトランザクション７１，７２，７４，７５，７７，７８の確定回数f(HTTP;A,RDB2;p)=6が算出される。同様に、処理内容がＡであるＨＴＴＰメッセージ、処理内容がｐであるＲＤＢ２メッセージ、および処理内容がｑであるＲＤＢ２メッセージからなるトランザクション７３，７６の確定回数f(HTTP;A,RDB2;p,RDB2;q)=2が算出される。
【０１７５】
トランザクション７１〜７８が構成されると、トランザクション識別部１４０は、確定したトランザクション７１〜７８に含まれるメッセージを、開始メッセージ集合Ａと子孫メッセージ集合Ｂから削除する。
【０１７６】
図２６は、確定トランザクションに属するメッセージ削除後の開始メッセージ集合を示す図である。開始メッセージ集合Ａに残された各メッセージは、トランザクション識別状況が「未識別（Ｕ）」の状態である。
【０１７７】
図２７は、確定トランザクションに属するメッセージ削除後の子孫メッセージ集合を示す図である。子孫メッセージ集合Ｂに残されたメッセージには、開始メッセージ識別状況が「未識別（Ｕ）」のものが多数存在する。
【０１７８】
その後、トランザクション識別部１４０は、推定トランザクションの識別処理を行う。具体的には、トランザクション識別部１４０は、開始メッセージ集合Ａ内に残った各メッセージを処理対象のメッセージｋとして、そのメッセージｋ、メッセージｋの確定子孫メッセージリストに含まれるメッセージ、メッセージｋの推定子孫メッセージリストに含まれるメッセージ、およびメッセージｋの未識別子孫メッセージリストから選択される最大２個のメッセージの組み合わせによって、トランザクションを構成する。このとき、未識別子孫メッセージリストから選択されるメッセージの組み合わせの数に応じたトランザクションが構成される。そして、トランザクション識別部１４０は、構成された各トランザクションの中から、最も確からしいトランザクションを選択する。
【０１７９】
この例では、トランザクションＳの確からしさをh(S)=f(S)+0.2×g(S)と定義する（f(S)は確定回数、g(S)は推定回数）。トランザクション識別部１４０は、確からしさの値が最大のトランザクションをＳ１、２番目の値を持つトランザクションをＳ２で表す。
【０１８０】
この例では、初期状態として、メッセージｋとメッセージｋの確定子孫メッセージリストで構成されるトランザクションをＳ１とし、ダミーのトランザクション（Ｓ＃と表記する)をＳ２とする。Ｓ＃の確からしさh(S#)=0.9とする。
【０１８１】
最も確からしいトランザクションを選択する条件「h(S1)/h(S2)>閾値」において、閾値＝２とする。
まず、ＩＤ「２」の開始メッセージに対する最も確からしいトランザクションの選択処理が行われる。ＩＤ「２」の開始メッセージは、確定子孫メッセージのＩＤが「３」、未識別子孫メッセージのＩＤが「５」である。従って、可能なメッセージの組み合わせは、(HTTP;A,RDB2;p)、あるいは(HTTP;A,RDB2;p,RDB2;q)である。
【０１８２】
これらの組み合わせによって構成されるトランザクションの確からしさは、h(HTTP;A,RDB2;p)=6、h(HTTP;A,RDB2;p,RDB2;q)=2と計算される。このとき、最も確からしいトランザクションの確からしさと、２番目に確からしいトランザクションの確からしさの比は、(S1)/h(S2)＝６／２=３となり、閾値２よりも大きい。
【０１８３】
その結果、トランザクション識別部１４０は、推定トランザクションとして(HTTP;A,RDB2;p)を選択し、推定回数g(HTTP;A,RDB2;p)を１だけ増やす。
また、トランザクション識別部１４０は、ＩＤ「２」のメッセージのトランザクション識別状況を「識別（Ｓ）」に変える。
【０１８４】
図２８は、トランザクション識別状況変更後の開始メッセージ集合を示す図である。このように、開始メッセージに対するトランザクションが確定する毎に、トランザクション識別状況をＳに変更することで、開始メッセージ集合Ａ内での未処理のメッセージと処理済みのメッセージとを容易に判別できる。
【０１８５】
以下同様に、ＩＤ「４」の開始メッセージについての推定トランザクションが構成される。具体的には、ＩＤ「４」の開始メッセージは、ＩＤ「６」の確定子孫メッセージおよびＩＤ「５」の未識別子孫メッセージを有している。従って、可能なメッセージの組み合わせは、(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)が選択される。そして、トランザクション識別部１４０は、推定回数g(HTTP;A,RDB2;p)を１だけ増やす。さらに、トランザクション識別部１４０は、ＩＤ「４」のメッセージのトランザクション識別状況を「識別（Ｓ）」に変える。
【０１８６】
次に、ＩＤ「１２」の開始メッセージについての推定トランザクションが構成される。具体的には、開始メッセージ１２は、ＩＤ「１３」の確定子孫メッセージおよびＩＤ「１５」の未識別子孫メッセージを有する。従って、可能なメッセージの組み合わせは、(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)が選択される。そして、トランザクション識別部１４０は、推定回数g(HTTP;A,RDB2;p)を１だけ増やす。さらに、トランザクション識別部１４０は、ＩＤ「１２」のメッセージのトランザクション識別状況を「識別（Ｓ）」に変える。
【０１８７】
次に、ＩＤ「１４」の開始メッセージについての推定トランザクションが構成される。具体的には、ＩＤ「１４」の開始メッセージは,確定子孫メッセージを持たず、ＩＤ「１５」の未識別子孫メッセージを有する。従って、可能なメッセージの組み合わせは、(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)が選択される。そして、トランザクション識別部１４０は、推定回数g(HTTP;A,RDB2;p)を１だけ増やす。さらに、トランザクション識別部１４０は、ＩＤ「１４」のメッセージのトランザクション識別状況を「識別（Ｓ）」に変えると共に、ＩＤ「１５」のメッセージの開始メッセージ識別状況を「推定（Ｅ）」に変える。
【０１８８】
図２９は、開始メッセージ識別状況変更後の子孫メッセージ集合を示す図である。このように、子孫メッセージに対する開始メッセージが推定されると、開始メッセージ識別状況をＥに変更され、開始メッセージが確定している子孫メッセージと区別される。
【０１８９】
また、ＩＤ「１４」の開始メッセージについて、ＩＤ「１５」の未識別子孫メッセージが選択されたので、トランザクション識別部１４０は、開始メッセージ集合Ａ内のＩＤ「１４」のメッセージの情報において、ＩＤ「１５」を未識別子孫メッセージリストから推定子孫メッセージリストに移動する。
【０１９０】
さらに、トランザクション識別部１４０は、ＩＤ「１５」の子孫メッセージの開始メッセージ候補リストを調べる。すると、開始メッセージ候補としてＩＤ「１２」、「１４」が登録されているので、選択されたＩＤ「１４」の開始メッセージ以外の開始メッセージ候補（ＩＤ「１２」）の情報において、未識別子孫メッセージリストからＩＤ「１５」を削除する。
【０１９１】
図３０は、子孫のメッセージが推定された後の開始メッセージ集合を示す図である。ＩＤ「１５」のメッセージが、ＩＤ「１４」のメッセージの子孫と推定されたため、ＩＤ「１４」のメッセージの情報では、ＩＤ「１５」が未識別子孫メッセージリストから推定子孫メッセージリストに移動され、ＩＤ「１２」のメッセージの情報では、ＩＤ「１５」が未識別子孫メッセージリストから削除されている。
【０１９２】
次に、ＩＤ「１６」の開始メッセージについての推定トランザクションが構成される。ＩＤ「１６」の開始メッセージは、ＩＤ「１７」、「１８」の確定子孫メッセージおよびＩＤ「２０」の未識別子孫メッセージを有する。従って、可能なメッセージの組み合わせは、(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)が選択される。そして、トランザクション識別部１４０は、推定回数g(HTTP;A,RDB2;p,RDB2;q)を１だけ増やす。さらに、トランザクション識別部１４０は、ＩＤ「１６」のメッセージのトランザクション識別状況を「識別（Ｓ）」に変える。
【０１９３】
次に、ＩＤ「１９」の開始メッセージについての推定トランザクションが構成される。ＩＤ「１９」の開始メッセージは、確定子孫メッセージを持たず、ＩＤ「２０」の未識別子孫メッセージを有する。従って、可能なメッセージの組み合わせは、(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)が選択される。そして、トランザクション識別部１４０は、推定回数g(HTTP;A,RDB2;p)を１だけ増やす。さらに、トランザクション識別部１４０は、ＩＤ「１９」のメッセージのトランザクション識別状況を「識別（Ｓ）」に変えると共に、ＩＤ「２０」のメッセージの開始メッセージ識別状況を「推定（Ｅ）」に変える。
【０１９４】
このとき、トランザクション識別部１４０は、ＩＤ「１９」の開始メッセージについて、ＩＤ「２０」の未識別子孫メッセージが選択されたので、ＩＤ「２０」のメッセージを未識別子孫メッセージリストから推定子孫メッセージリストに移動する。また、トランザクション識別部１４０は、ＩＤ「２０」の子孫メッセージの開始メッセージ候補リストを調べると、ＩＤ「１６」、ＩＤ「１９」の開始メッセージ候補を有しているので、選択されたＩＤ「１９」の開始メッセージ以外のＩＤ「１６」の開始メッセージ候補の情報において、未識別子孫メッセージリストからＩＤ「２０」を削除する。
【０１９５】
次に、ＩＤ「３０」のメッセージに対する最も確からしいトランザクションの選択が行われる。ＩＤ「３０」の開始メッセージは、ＩＤ「３１」、「３７」の確定子孫メッセージ、ＩＤ「３３」、「３４」、「３６」の未識別子孫メッセージを有する。開始メッセージと確定子孫メッセージ、および未識別子孫メッセージからの最大２個による可能なメッセージの組み合わせは下記の６通りになる。
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)が選択される。そして、トランザクション識別部１４０は、推定回数g(HTTP;A,RDB2;p,RDB2;q)を１だけ増やす。また、トランザクション識別部１４０は、ＩＤ「３０」のメッセージのトランザクション識別状況を「識別（Ｓ）」に変える。
【０１９６】
次に、ＩＤ「３２」のメッセージに対する最も確からしいトランザクションの選択が行われる。ＩＤ「３２」の開始メッセージは、確定子孫メッセージを持たず、ＩＤ「３３」、「３４」の未識別子孫メッセージを有する。従って、可能なメッセージの組み合わせは、(HTTP;A)、(HTTP;A,RDB2;p)、(HTTP;A,RDB2;q)、(HTTP;A,RDB2;p,RDB2;q)である。トランザクションＳの確からしさは,h(HTTP;A,RDB2;p,RDB2;q)=2.4、それ以外は０と計算される。従って、S1=(HTTP;A,RDB2;p,RDB2;q)、S2＝S#となる。このとき、h(S1)/h(S2)=2.4/0.9>2なので、推定トランザクションとして(HTTP;A,RDB2;p,RDB2;q)が選択される。そして、トランザクション識別部１４０は、推定回数g(HTTP;A,RDB2;p,RDB2;q)を１だけ増やす。さらに、トランザクション識別部１４０は、ＩＤ「３２」のメッセージのトランザクション識別状況を「識別（Ｓ）」に変えると共に、ＩＤ「３３」、「３４」のメッセージの開始メッセージ識別状況を「推定（Ｅ）」に変える。
【０１９７】
このとき、トランザクション識別部１４０は、以下のように開始メッセージ集合Ａを更新する。ＩＤ「３２」の開始メッセージについて、ＩＤ「３３」、「３４」の未識別子孫メッセージが選択されたので、ＩＤ「３３」、「３４」のメッセージを未識別子孫メッセージリストから推定子孫メッセージリストに移動する。次に、トランザクション識別部１４０は、ＩＤ「３３」、「３４」の子孫メッセージの各開始メッセージ候補リストを調べる。すると、それぞれＩＤ「３０」、「３２」の開始メッセージ候補を有しているので、トランザクション識別部１４０は、選択されたＩＤ「３２」の開始メッセージ以外のＩＤ「３０」の開始メッセージ候補について、未識別子孫メッセージリストからＩＤ「３３」、「３４」を削除する。
【０１９８】
次に、ＩＤ「３５」のメッセージに対する最も確からしいトランザクションの選択処理が行われる。ＩＤ「３５」の開始メッセージは、確定子孫メッセージを持たず、ＩＤ「３６」の未識別子孫メッセージを有している。従って、可能なメッセージの組み合わせは、(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)が選択される。そして、トランザクション識別部１４０は、推定回数g(HTTP;A,RDB2;p)を１だけ増やす。さらに、トランザクション識別部１４０は、ＩＤ「３５」のメッセージのトランザクション識別状況を「識別（Ｓ）」に変更し、ＩＤ「３６」のメッセージの開始メッセージ識別状況を「推定（Ｅ）」に変更する。
【０１９９】
以上のようにして、開始メッセージ集合Ａに含まれる各メッセージに応じて、最も確からしいトランザクションが選択される。
図３１は、最も確からしいトランザクションの選択処理で選択されたトランザクションを示す図である。最も確からしいトランザクションの選択処理によって、図３１に示すようなトランザクション８１〜８９が生成される。
【０２００】
トランザクション８１は、ＩＤ「２」の開始メッセージとＩＤ「３」の子孫メッセージとにより構成された推定トランザクションである。トランザクション８２は、ＩＤ「４」の開始メッセージとＩＤ「６」の子孫メッセージとにより構成された推定トランザクションである。トランザクション８３は、ＩＤ「１２」の開始メッセージとＩＤ「１３」の子孫メッセージとにより構成された推定トランザクションである。トランザクション８４は、ＩＤ「１４」の開始メッセージとＩＤ「１５」の子孫メッセージとにより構成された推定トランザクションである。トランザクション８５は、ＩＤ「１６」の開始メッセージとＩＤ「１７」、「１８」の子孫メッセージとにより構成された推定トランザクションである。トランザクション８６は、ＩＤ「１９」の開始メッセージとＩＤ「２０」の子孫メッセージとにより構成された推定トランザクションである。トランザクション８７は、ＩＤ「３０」の開始メッセージとＩＤ「３１」、「３７」の子孫メッセージとにより構成された推定トランザクションである。トランザクション８８は、ＩＤ「３２」の開始メッセージとＩＤ「３３」、「３４」の子孫メッセージとにより構成された推定トランザクションである。トランザクション８９は、ＩＤ「３５」の開始メッセージとＩＤ「３６」の子孫メッセージとにより構成された推定トランザクションである。
【０２０１】
図３２は、最も確からしいトランザクションの選択処理終了後の開始メッセージ集合を示す図である。このように、最も確からしいトランザクションの選択処理が終了すると、開始メッセージ集合Ａ内の各メッセージにおけるトランザクション識別状況は、全て「識別（Ｓ）」となる。
【０２０２】
図３３は、最も確からしいトランザクションの選択処理終了後の子孫メッセージ集合を示す図である。このように、開始メッセージ識別状況が「未識別（Ｕ）」であったメッセージのうち、生成された推定トランザクションに含まれるメッセージの開始メッセージ識別状況が「推定（Ｅ）」に変更されている。
【０２０３】
次に、トランザクション識別部１４０は、推定トランザクションの置換処理を行う。推定トランザクションの置換処理では、子孫メッセージ集合Ｂの中で、開始メッセージ識別状況が「未識別（Ｕ）」のメッセージ（未識別子孫メッセージ）について推定トランザクションの置換を試みる。この例では、置換トランザクション候補Ｓ＊の置換条件「h(S*)>閾値」について、閾値=0を用いる。なお、初期値を、Ｓ＊＝Ｓ＃、ｈ（Ｓ＊）＝ｈ（Ｓ＃）＝０とする。
【０２０４】
図３３に示す状況では、子孫メッセージ集合Ｂの中で未識別なのはＩＤ「５」の子孫メッセージである。トランザクション識別部１４０は、そのメッセージの開始メッセージ候補として設定されているＩＤ「２」、「４」のメッセージについて、以下のように置換トランザクション候補を構成する。
【０２０５】
（ａ）ＩＤ「２」の開始メッセージが属する推定トランザクションは、S1=(HTTP;A,RDB2;p)である。これにＩＤ「５」のメッセージを組み合わせた置換トランザクション候補は、S1*=(HTTP;A,RDB2;p,RDB2;q)である。
【０２０６】
（ｂ）開始メッセージ４が属する推定トランザクションは、S2=(HTTP;A,RDB2;p)である。これにＩＤ「５」のメッセージを組み合わせた置換トランザクション候補は、S2*=(HTTP;A,RDB2;q,RDB2;p)である。
【０２０７】
これらの置換トランザクション候補の確からしさは、h(S1*)=2.6,h(S2*)=0と計算される。確からしさが最大のＳ１*は、置換条件h(S1*)>0を満たすので、トランザクション識別部１４０は、推定トランザクションＳ１をＳ１*に置換する。また、トランザクション識別部１４０は、Ｓ１の推定回数g(HTTP;A,RDB2;p)を１だけ減らし、Ｓ１*の推定回数g(HTTP;A,RDB2;p;RDB2;q)を１だけ増やす。さらに、トランザクション識別部１４０は、ＩＤ「５」の開始メッセージ識別状況を「置換（Ｆ）」に変更する。
【０２０８】
図３４は、推定トランザクション置換処理後の子孫メッセージ集合を示す図である。図３４に示すように、推定トランザクションの置換処理によって推定トランザクションに追加されたメッセージの開始メッセージ識別状況には、「置換（Ｆ）」が設定される。
【０２０９】
図３５は、推定トランザクション置換処理によって構成された置換トランザクションを示す図である。元のトランザクション８１（推定トランザクション）に、ＩＤ「５」のメッセージが追加されることで、トランザクション８１ａ（置換トランザクション）が生成される。
【０２１０】
その後、トランザクション識別部１４０は、ＩＤ「２」の開始メッセージについて、ＩＤ「５」の未識別子孫メッセージが新たに選択されたので、ＩＤ「５」のメッセージを未識別子孫メッセージリストから推定子孫メッセージリストに移動する。また、トランザクション識別部１４０は、ＩＤ「５」の子孫メッセージの開始メッセージ候補リストを調べると、ＩＤ「２」、「４」の開始メッセージ候補を有しているため、選択されたＩＤ「２」以外のＩＤ「４」の開始メッセージについて、未識別子孫メッセージリストからＩＤ「５」を削除する。
【０２１１】
図３６は、推定トランザクション置換処理後の開始メッセージ集合を示す図である。図３６の開始メッセージ集合Ａでは、全てのメッセージに関して、未識別子孫メッセージリストが空となっている。すなわち、識別不能の子孫メッセージが存在していないことを示す。
【０２１２】
以上の処理により、全てのメッセージが識別されたので、トランザクション識別処理が終了し、識別結果が出力される。
図３７は、トランザクション識別結果を示す第１の図である。図３８は、トランザクション識別結果を示す第２の図である。図３７にはトランザクション識別結果９０の前半部分が示されており、図３８にはトランザクション識別結果９０の後半部分が示されている。この例では、トランザクション識別結果９０には、確定トランザクション、推定トランザクション、および置換トランザクションが識別された順に登録されている。
【０２１３】
なお、トランザクション識別結果として、トランザクションの開始時刻順に各トランザクションを並べて出力することもできる。
また、トランザクションの種類別に識別結果を出力することもできる。
【０２１４】
図３９は、種類別のトランザクション識別結果を示す図である。このトランザクション識別結果９１において、「0;HTTP;A,0-0;RDB2;p[11/6/5/7.0]」は、トランザクション種類ＩＤ０のトランザクションを示している。また、「1;HTTP;A,1-0;RDB2;p,1-1;RDB2;q[6/2/4/2.8]」は、トランザクション種類ＩＤ１のトランザクションを示している。
【０２１５】
図４０は、トランザクション種類ＩＤ０のトランザクションを示す図である。このトランザクション９２は、２階層のトランザクションである。ここで、図３９に示す「0;HTTP;A,0-0;RDB2;p[11/6/5/7.0]」における[11/6/5/7.0]の部分は、メッセージ履歴内で１１回識別され、そのうち６回は確定、５回は推定であり、トランザクションの確からしさ=6+0.2*5=7.0であることを示している。
【０２１６】
図４１は、トランザクション種類ＩＤ１のトランザクションを示す図である。このトランザクション９３は、２階層のトランザクションである。ここで、図３９に示す「1;HTTP;A,1-0;RDB2;p,1-1;RDB2;q[6/2/4/2.8]」における[6/2/4/2.8]の部分は、メッセージ履歴内で６回識別され、そのうち２回は確定、４回は推定であり、トランザクションの確からしさ=2+0.2*4=2.8であることを示している。
【０２１７】
［第２のトランザクション識別例］
次に、メッセージ情報に応答内容を含む場合のトランザクション識別例について説明する。この例では、メッセージ情報にＨＴＴＰのステータスコード等の応答内容が含まれる。
【０２１８】
図４２は、応答内容を含むメッセージのメッセージ履歴を示す図である。図４２に示すメッセージ履歴１１２に登録されたメッセージは、データが「メッセージＩＤ」、「要求時刻」、「応答時刻」、「種別」、「処理内容」、「応答内容」、「クライアントＩＰアドレス」、「サーバＩＰアドレス」の順で並べられている。ここで、応答内容は、要求に応じた処理の結果が示される。例えば、HTTPのメッセージでは、正常に処理された場合、応答内容として「ＯＫ」が設定され、正常に処理できなかった場合、応答内容として「ＮＧ」が設定される。また、ＲＤＢ２のメッセージでは、正常に処理された場合にのみ、応答内容として「ＯＫ」が設定される。
【０２１９】
このようなメッセージから、まず確定トランザクションが構成される。具体的には、開始メッセージ集合Ａの各メッセージｋについて、未識別子孫メッセージリストが空であれば、そのメッセージｋを開始メッセージとしたトランザクションが確定する。この場合、メッセージｋと、そのメッセージｋの確定子孫リストに含まれる各メッセージとによって、確定トランザクションが構成される。
【０２２０】
図４３は、確定トランザクションの構成結果を示す図である。この図には、図４２に示されたメッセージに基づいて確定したトランザクション２１１〜２１８が示されている。このトランザクション２１１〜２１８のデータフォーマットは、要求側のレコードについては、図２５に示した例と同様である。応答側のレコードは、「トランザクションＩＤ」、「応答時刻」、「種別」、「res」、「メッセージＩＤ」、「トランザクションの構造情報」、「応答内容」の順でデータが並べられている。このように、構成されたトランザクション内に「応答内容」のデータが追加されている。
【０２２１】
確定トランザクションを構成すると、トランザクション識別部１４０は、トランザクション確定回数ｆ（Ｓ）を数えあげる。このとき、トランザクションを構成するメッセージの種別、処置内容、および応答内容が一致するトランザクションを、同じトランザクションとしてカウントする。その結果、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と算出される。
【０２２２】
その後、推定トランザクション識別処理が行われる。すなわち、トランザクション識別部１４０は、確定トランザクションに属する開始メッセージと子孫メッセージとを、開始メッセージ集合Ａと子孫メッセージ集合Ｂとからそれぞれ削除する。
【０２２３】
図４４は、確定トランザクションに属する開始メッセージ削除後の開始メッセージ集合を示す図である。開始メッセージ集合Ａに残された各メッセージは、トランザクション識別状況が「未識別（Ｕ）」の状態である。
【０２２４】
図４５は、確定トランザクションに属する子孫メッセージ削除後の子孫メッセージ集合を示す図である。子孫メッセージ集合Ｂに残されたメッセージには、開始メッセージ識別状況が「未識別（Ｕ）」のものが多数存在する。
【０２２５】
次に、第１のトランザクション識別例と同様に、最も確からしいトランザクションの選択が行われる。
まず、ＩＤ「２」の開始メッセージに対する最も確からしいトランザクションの選択処理が行われる。ＩＤ「２」の開始メッセージは、ＩＤ「３」の確定子孫メッセージおよびＩＤ「５」の未識別子孫メッセージを有する。従って、可能なメッセージの組み合わせは、(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)=１と計算される。従って、h(S1)/h(S2)=5/1>2であり、推定トランザクションとして(HTTP;A;OK,RDB2;p;ok)が選択され、トランザクション識別部１４０は、推定回数g(HTTP;A;OK,RDB2;p;ok)を１だけ増やす。さらに、トランザクション識別部１４０は、ＩＤ「２」のメッセージのトランザクション識別状況を「識別（Ｓ）」に変える。
【０２２６】
次に、ＩＤ「４」の開始メッセージに対する最も確からしいトランザクションの選択処理が行われる。ＩＤ「４」の開始メッセージは、ＩＤ「６」の確定子孫メッセージおよびＩＤ「５」の未識別子孫メッセージを有する。従って、可能なメッセージの組み合わせは、(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なので、トランザクション識別部１４０は、推定トランザクションを選択しない。
【０２２７】
次に、ＩＤ「１２」の開始メッセージに対する最も確からしいトランザクションの選択処理が行われる。ＩＤ「１２」の開始メッセージは、ＩＤ「１３」の確定子孫メッセージおよびＩＤ「１５」の未識別子孫メッセージを有する。従って、可能なメッセージの組み合わせは、(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)が選択される。そして、トランザクション識別部１４０は、推定回数g(HTTP;A;OK,RDB2;p;ok)を１だけ増やす。さらに、トランザクション識別部１４０は、ＩＤ「１２」のメッセージのトランザクション識別状況を「識別（Ｓ）」に変える。
【０２２８】
次に、ＩＤ「１４」の開始メッセージに対する最も確からしいトランザクションの選択処理が行われる。ＩＤ「１４」の開始メッセージは、確定子孫メッセージを持たず、ＩＤ「１５」の未識別子孫メッセージを有する。従って、可能なメッセージの組み合わせは、(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)が選択される。そして、トランザクション識別部１４０は、推定回数g(HTTP;A;OK,RDB2;p;ok)を１だけ増やす。さらに、トランザクション識別部１４０は、ＩＤ「１４」のメッセージのトランザクション識別状況を「識別（Ｓ）」に変えると共に、ＩＤ「１５」のメッセージの開始メッセージ識別状況を「推定（Ｅ）」に変える。
【０２２９】
ここで、ＩＤ「１４」の開始メッセージについて、ＩＤ「１５」の未識別子孫メッセージが選択されたので、トランザクション識別部１４０は、ＩＤ「１５」を未識別子孫メッセージリストから推定子孫メッセージリストに移動する。次に、トランザクション識別部１４０は、ＩＤ「１５」の子孫メッセージの開始メッセージ候補リストを調べる。すると、ＩＤ「１２」、「１４」を開始メッセージ候補として持っているので、トランザクション識別部１４０は、選択されたＩＤ「１４」の開始メッセージ以外のＩＤ「１２」の開始メッセージ候補について、未識別子孫メッセージリストからＩＤ「１５」を削除する。
【０２３０】
次に、ＩＤ「１６」の開始メッセージに対する最も確からしいトランザクションの選択処理が行われる。ＩＤ「１６」の開始メッセージは、ＩＤ「１７」、「１８」の確定子孫メッセージおよびＩＤ「２０」の未識別子孫メッセージを有する。従って、可能なメッセージの組み合わせは、(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となり、トランザクション識別部１４０は、推定トランザクションを選択しない。
【０２３１】
次に、ＩＤ「１９」の開始メッセージに対する最も確からしいトランザクションの選択処理が行われる。ＩＤ「１９」の開始メッセージは、確定子孫メッセージを持たず、ＩＤ「２０」の未識別子孫メッセージを有する。従って、可能なメッセージの組み合わせは、(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)が選択される。そこで、トランザクション識別部１４０は、推定回数g(HTTP;A;OK,RDB2;p;ok)を１だけ増やす。さらに、トランザクション識別部１４０は、ＩＤ「１９」のメッセージのトランザクション識別状況を「識別（Ｓ）」に変えると共に、ＩＤ「２０」のメッセージの開始メッセージ識別状況を「推定（Ｅ）」に変える。
【０２３２】
ここで、ＩＤ「１９」の開始メッセージについて、ＩＤ「２０」の未識別子孫メッセージが選択されたので、トランザクション識別部１４０は、ＩＤ「２０」のメッセージを未識別子孫メッセージリストから推定子孫メッセージリストに移動する。次に、ＩＤ「２０」の子孫メッセージの開始メッセージ候補リストを調べると、ＩＤ「１６」、「１９」の開始メッセージ候補を有しているので、トランザクション識別部１４０は、選択されたＩＤ「１９」の開始メッセージ以外のＩＤ「１６」の開始メッセージ候補について、未識別子孫メッセージリストからＩＤ「２０」を削除する。
【０２３３】
次に、ＩＤ「３０」の開始メッセージに対する最も確からしいトランザクションの選択処理が行われる。ＩＤ「３０」の開始メッセージは、ＩＤ「３１」、「３７」の確定子孫メッセージＩＤ「３３」、「３４」、「３６」の未識別子孫メッセージを有する。開始メッセージと確定子孫メッセージ、および未識別子孫メッセージから選択された最大２個のメッセージによる可能なメッセージの組み合わせは、下記の６通りになる。
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)
ここで、トランザクションＳの確からしさは、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なので、推定トランザクションが選択されない。
【０２３４】
次に、ＩＤ「３２」の開始メッセージに対する最も確からしいトランザクションの選択処理が行われる。ＩＤ「３２」の開始メッセージは、確定子孫メッセージを持たず、ＩＤ「３３」、「３４」の未識別子孫メッセージを有する。従って、可能なメッセージの組み合わせは、(HTTP;A;NG)、(HTTP;A;NG,RDB2;p;ok)、(HTTP;A;NG,RDB2;q;ok)、あるいは(HTTP;A;NG,RDB2;p;ok,RDB2;q;ok)である。トランザクションＳの確からしさは、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となり、トランザクション識別部１４０は、推定トランザクションを選択しない。
【０２３５】
次に、ＩＤ「３５」の開始メッセージに対する最も確からしいトランザクションの選択処理が行われる。ＩＤ「３５」の開始メッセージは、確定子孫メッセージを持たず、ＩＤ「３６」の未識別子孫メッセージを有する。従って、可能なメッセージの組み合わせは、(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)が選択される。そして、トランザクション識別部１４０は、推定回数g(HTTP;A;OK,RDB2;p;ok)を１だけ増やす。さらに、トランザクション識別部１４０は、ＩＤ「３５」のメッセージのトランザクション識別状況を「識別（Ｓ）」に変え、ＩＤ「３６」のメッセージの開始メッセージ識別状況を「推定（Ｅ）」に変える。
【０２３６】
ここで、ＩＤ「３５」の開始メッセージについて、ＩＤ「３６」の未識別子孫メッセージが選択されたので、トランザクション識別部１４０は、ＩＤ「３６」のメッセージを未識別子孫メッセージリストから推定子孫メッセージリストに移動する。つぎに、ＩＤ「３６」の子孫メッセージの開始メッセージ候補リストを調べると、ＩＤ「３０」、「３５」の開始メッセージ候補を有しているので、選択されたＩＤ「３５」の開始メッセージ以外のＩＤ「３０」の開始メッセージ候補について、未識別子孫メッセージリストからＩＤ３６を削除する。
【０２３７】
以上で、各開始メッセージに対して、推定トランザクション識別処理が一回ずつ行われたことになる。
図４６は、推定トランザクション識別処理を１回ずつ行った後の開始メッセージ集合を示す図である。図４６に示すように、この例では、トランザクション識別状況が「未識別（Ｕ）」の開始メッセージが複数存在している。
【０２３８】
図４７は、推定トランザクション識別処理を１回ずつ行った後の子孫メッセージ集合を示す図である。推定トランザクションに含まれるメッセージは、開始メッセージ識別状況が「推定（Ｅ）」とされている。
【０２３９】
このとき、トランザクション識別終了条件を満たしていない。そこで、トランザクション識別部１４０は、トランザクション識別状況が「未識別（Ｕ）」の開始メッセージに対して、推定トランザクション識別を繰り返し実行する。具体的には、ＩＤ「４」、「１６」、「３０」、「３２」の開始メッセージのトランザクション識別状況が「未識別（Ｕ）」であるため、これらのメッセージについて、再び推定トランザクションの識別を試みられる。
【０２４０】
まず、ＩＤ「４」の開始メッセージについて、可能なメッセージの組み合わせによって構成されるトランザクション(HTTP;A;NG,RDB2;q;ok)あるいは(HTTP;A;NG,RDB2;q;ok,RDB2;p;ok)の確からしさは、いずれも所定の閾値に達しない。そのため、推定トランザクションが選択されない。
【０２４１】
次に、トランザクション識別部１４０は、ＩＤ「１６」の開始メッセージについて、推定トランザクション識別処理を行う。ところで、ＩＤ「１６」の開始メッセージの未識別子孫メッセージリストには、初期段階ではＩＤ「２０」が設定されていた（図４４参照）が、ＩＤ「１９」の開始メッセージに応じた推定トランザクションが選択されたときに、そのＩＤ「２０」が削除されている。その結果、ＩＤ「１６」の開始メッセージにおける未識別子孫メッセージリストが空になっている。そこで、トランザクション識別部１４０は、ＩＤ「１７」、「１８」の確定子孫メッセージとの組み合わせによって構成されるトランザクション(HTTP;A;OK,RDB2;p;ok,RDB2;q;ok)を推定トランザクションとして選択する。そして、トランザクション識別部１４０は、推定回数g(HTTP;A;OK,RDB2;p;ok,RDB2;q;ok)を１だけ増やす。また、トランザクション識別部１４０は、ＩＤ「１６」のメッセージのトランザクション識別状況を「識別（Ｓ）」に変える。
【０２４２】
以降、同様にトランザクション識別部１４０は、ＩＤ「３０」、「３２」の開始メッセージについて、推定トランザクション識別処理を行う。ＩＤ「３０」の開始メッセージについては、可能なメッセージの組み合わせによって構成されるトランザクションの確からしさがいずれも所定の閾値に達しない。そのため、推定トランザクションは選択されない。また、ＩＤ「３２」の開始メッセージについては、可能なメッセージの組み合わせによって構成されるトランザクションの確からしさが、いずれも所定の閾値に達しない。そのため、推定トランザクションは選択されない。
【０２４３】
このような推定トランザクションの識別の繰り返しが行われる。すると、これ以上新たに識別されるメッセージの数は増えないので、推定トランザクションの識別処理が終了する。
【０２４４】
図４８は、推定トランザクションの識別処理によって生成された推定トランザクションを示す図である。最も確からしいトランザクションが選択されることによって、図４８に示すようなトランザクション２２１〜２２６が生成される。
【０２４５】
次に、トランザクション識別部１４０は、推定トランザクションの置換処理を行う。図４７に示す子孫メッセージ集合Ｂを参照すると、開始メッセージ識別状況が「未識別（Ｕ）」なのは、ＩＤ「５」、「３３」、「３４」の子孫メッセージである。そこで、トランザクション識別部１４０は、これらの子孫メッセージを対象として、推定トランザクションの置換処理を試みる。
【０２４６】
トランザクション識別部１４０は、まず、ＩＤ「５」の子孫メッセージについて、推定トランザクションの置換処理を行う。ＩＤ「５」の子孫メッセージは、ＩＤ「２」、「４」の開始メッセージ候補を有している。そこで、トランザクション識別部１４０は、以下のように置換トランザクション候補を構成する。
【０２４７】
（ａ）ＩＤ「２」の開始メッセージが属する推定トランザクションは、S1=(HTTP;A;OK,RDB2;p;ok)である。これにＩＤ「５」のメッセージを組み合わせた置換トランザクション候補はS1*=(HTTP;A;OK,RDB2;p;ok,RDB2;q;ok)となる。
【０２４８】
（ｂ）ＩＤ「４」の開始メッセージはトランザクション未識別であり、ＩＤ「４」の開始メッセージ、その確定子孫メッセージ（ＩＤ「６」のメッセージ）、およびＩＤ「５」のメッセージを組み合わせた置換トランザクション候補はS2*=(HTTP;A;NG,RDB2;q;ok,RDB2;p;ok)である。
【０２４９】
これらの置換トランザクション候補の確からしさは、h(S1*)=1、h(S2*)=0と計算される。確からしさが最大のS1*は、置換条件h(S1*)>0を満たす。そこで、トランザクション識別部１４０は、推定トランザクションＳ１をS1*に置換する。そして、トランザクション識別部１４０は、S1の推定回数g(HTTP;A;OK,RDB2;p;ok)を１だけ減らし、S1*の推定回数g(HTTP;A;OK,RDB2;p;ok,RDB2;q;ok)を１だけ増やす。さらに、トランザクション識別部１４０は、ＩＤ「５」のメッセージの開始メッセージ識別状況を「置換（Ｆ）」に変える。
【０２５０】
図４９は、推定トランザクション置換処理によって構成された置換トランザクションを示す図である。元のトランザクション２２１（推定トランザクション）に、ＩＤ「５」のメッセージが追加されることで、トランザクション２２１ａ（置換トランザクション）が生成される。
【０２５１】
その後、トランザクション識別部１４０は、ＩＤ「２」の開始メッセージについて、ＩＤ「５」の未識別子孫メッセージが新たに選択されたので、ＩＤ「５」のメッセージを未識別子孫メッセージリストから推定子孫メッセージリストに移動する。また、トランザクション識別部１４０は、ＩＤ「５」の子孫メッセージの開始メッセージ候補リストを調べると、ＩＤ「２」、「４」の開始メッセージ候補を有しているため、選択されたＩＤ「２」以外のＩＤ「４」の開始メッセージについて、未識別子孫メッセージリストからＩＤ「５」を削除する。
【０２５２】
次に、トランザクション識別部１４０は、ＩＤ「３３」の子孫メッセージについて、推定トランザクションの置換処理を行う。ＩＤ「３３」の未識別子孫メッセージは、ＩＤ「３０」、「３２」の開始メッセージ候補を有している。そこで、トランザクション識別部１４０は、以下のように置換トランザクション候補を構成する。
【０２５３】
（ａ）ＩＤ「３０」の開始メッセージはトランザクション未識別であり、ＩＤ「３０」の開始メッセージ、その確定子孫メッセージ（ＩＤ「３１」、「３７」のメッセージ）、およびＩＤ「３３」のメッセージを組み合わせた置換トランザクション候補はS1*=(HTTP;A;OK,RDB2;p;ok,RDB2;p;ok;RDB2;q;ok)となる。
【０２５４】
（ｂ）ＩＤ「３２」の開始メッセージはトランザクション未識別であり、ＩＤ「３２」の開始メッセージとＩＤ「３３」のメッセージと組み合わせた置換トランザクション候補はS2*=(HTTP;A;NG,RDB2;p;ok)となる。
【０２５５】
これらの置換トランザクション候補の確からしさは、h(S1*)=0、h(S2*)=1と計算される。確からしさが最大のS2*は、置換条件h(S2*)>0を満たすので、トランザクション識別部１４０は、ＩＤ「３２」の開始メッセージが属する置換トランザクションをS2*にして、S2*の推定回数g(HTTP;A;NG,RDB2;p;ok)を１だけ増やす。また、トランザクション識別部１４０は、ＩＤ「３２」のメッセージのトランザクション識別状況を「識別（Ｓ）」に変えると共に、ＩＤ「３３」のメッセージの開始メッセージ識別状況を「置換（Ｆ）」に変える。
【０２５６】
図５０は、推定トランザクション置換処理によって新たに生成されたトランザクションを示す図である。推定トランザクション置換処理により、図５０に示すようなトランザクション２２７（置換トランザクション）が生成される。この例では、ＩＤ「３２」の開始メッセージに関して、推定トランザクションが生成されていないため、推定トランザクション置換処理において新たに生成されている。
【０２５７】
ここで、トランザクション識別部１４０は、ＩＤ「３２」の開始メッセージについて、ＩＤ「３３」の未識別子孫メッセージが新たに選択されたので、ＩＤ「３３」のメッセージを未識別子孫メッセージリストから推定子孫メッセージリストに移動する。また、トランザクション識別部１４０は、ＩＤ「３３」の子孫メッセージの開始メッセージ候補リストを調べ、ＩＤ「３０」、「３２」の開始メッセージ候補があることを確認する。そこで、トランザクション識別部１４０は、選択されたＩＤ「３２」以外のＩＤ「３０」の開始メッセージ候補について、未識別子孫メッセージリストからＩＤ「３３」を削除する。
【０２５８】
次に、トランザクション識別部１４０は、ＩＤ「３４」の子孫メッセージについて、推定トランザクションの置換処理を行う。ＩＤ「３４」の未識別子孫メッセージについて、その各開始メッセージ候補（ＩＤ「３０」、「３２」）について、下記のように置換トランザクション候補を構成する。
【０２５９】
（ａ）ＩＤ「３０」の開始メッセージはトランザクション未識別であり、ＩＤ「３０」の開始メッセージとその確定子孫メッセージ（ＩＤ「３１」、「３７」）とＩＤ「３４」のメッセージを組み合わせた置換トランザクション候補はS1*=(HTTP;A;OK,RDB2;p;ok,RDB2;q;ok;RDB2;q;ok)である。
【０２６０】
（ｂ）ＩＤ「３２」の開始メッセージが属する推定トランザクションは、S2=(HTTP;A;NG,RDB2;p;ok)である。これにＩＤ「３４」のメッセージを組み合わせた置換トランザクション候補はS2*=(HTTP;A;NG,RDB2;p;ok,RDB2;q;ok)である。
【０２６１】
これらの置換トランザクション候補の確からしさはh(S1*)=0、h(S2*)=1と計算される。確からしさが最大のＳ２*は、置換条件h(S2*)>0を満たすので、トランザクション識別部１４０は、ＩＤ「３２」の開始メッセージが属する推定トランザクションＳ２をＳ２*に置換する。また、トランザクション識別部１４０は、S2の推定回数g(HTTP;A;NG,RDB2;p;ok)を１だけ減らし、Ｓ２*の推定回数g(HTTP;A;NG,RDB2;p;ok,RDB2;q;ok)を１だけ増やす。さらに、トランザクション識別部１４０は、ＩＤ「３４」のメッセージの開始メッセージ識別状況を「置換（Ｆ）」に変える。
【０２６２】
図５１は、推定トランザクション置換処理によって構成された置換トランザクションを示す図である。元のトランザクション２２７（推定トランザクション）に、ＩＤ「３４」のメッセージが追加されることで、トランザクション２２７ａ（置換推定トランザクション）が生成される。
【０２６３】
その後、トランザクション識別部１４０は、ＩＤ「３２」の開始メッセージについて、ＩＤ「３４」の未識別子孫メッセージが新たに選択されたので、ＩＤ「３４」のメッセージを未識別子孫メッセージリストから推定子孫メッセージリストに移動する。次に、トランザクション識別部１４０は、ＩＤ「３４」の子孫メッセージの開始メッセージ候補リストを調べる。すると、ＩＤ「３０」、「３２」の開始メッセージ候補を有しているので、選択されたＩＤ「３２」開始メッセージ以外のＩＤ「３０」のメッセージにおける識別子孫メッセージリストからＩＤ「３４」を削除する。
【０２６４】
これによりすべての未識別子孫メッセージが識別されたので、トランザクション識別部１４０は推定トランザクションの置換処理を終了する。
トランザクション識別部１４０は、推定トランザクションの置換処理の終了後、トランザクション識別状況が「未識別（Ｕ）」の開始メッセージ（ＩＤ「４」、ＩＤ「３０」）が残っているので、推定トランザクションの識別処理に戻る。
【０２６５】
まず、ＩＤ「４」の開始メッセージについて、未識別子孫メッセージリストが空になっているので、トランザクション識別部１４０は、ＩＤ「６」の確定子孫メッセージとの組み合わせによって構成されるトランザクション(HTTP;A;NG,RDB2;p;ok)を推定トランザクションとして選択する。そして、トランザクション識別部１４０は、推定回数g(HTTP;A;NG,RDB2;p;ok)を１だけ増やす。さらに、トランザクション識別部１４０は、ＩＤ「４」メッセージのトランザクション識別状況を「識別（Ｓ）」に変える。
【０２６６】
図５２は、推定トランザクション識別処理によって新たに生成されたトランザクションを示す図である。図５２に示すように、ＩＤ「４」の開始メッセージと、ＩＤ「６」の子孫メッセージとにより、トランザクション２２８（推定トランザクション）が生成される。
【０２６７】
次に、ＩＤ３０の開始メッセージについて、未識別子孫メッセージリストが空になっているので、トランザクション識別部１４０は、ＩＤ「３１」、「３７」の確定子孫メッセージの組み合わせによって構成されるトランザクション(HTTP;A;OK,RDB2;p;ok,RDB2;q;ok)を推定トランザクションとして選択する。そして、トランザクション識別部１４０は、推定回数g(HTTP;A;OK,RDB2;p;ok,RDB2;q;ok)を１だけ増やす。また、トランザクション識別部１４０は、ＩＤ「３０」のメッセージのトランザクション識別状況を「識別（Ｓ）」に変える。
【０２６８】
図５３は、推定トランザクション識別処理によって新たに生成されたトランザクションを示す図である。図５３に示すように、ＩＤ「３０」の開始メッセージとＩＤ「３１」、「３７」の子孫メッセージとにより、トランザクション２２９（推定トランザクション）が構成される。
【０２６９】
これにより全てのメッセージが識別され、トランザクション識別処理が終了する。トランザクション識別処理終了後、トランザクション識別部１４０は、識別結果として、確定トランザクション、推定トランザクション、置換トランザクションを所定の形式で出力する。
【０２７０】
トランザクションの出力は、(1)確定トランザクション、(2)推定トランザクションと置換トランザクションというように識別された順に出力しても良いし、あるいは、トランザクションの開始時刻順にソートして出力しても良い。
【０２７１】
図５４は、トランザクション識別結果を示す第１の図である。図５５は、トランザクション識別結果を示す第２の図である。図５４にはトランザクション識別結果２４０の前半部分が示されており、図５５にはトランザクション識別結果２４０の後半部分が示されている。この例では、トランザクション識別結果２４０には、確定トランザクション、推定トランザクション、および置換トランザクションが識別された順に登録されている。
【０２７２】
なお、トランザクション識別結果として、トランザクションの開始時刻順に各トランザクションを並べて出力することもできる。
また、トランザクションの種類別に識別結果を出力することもできる。
【０２７３】
図５６は、種類別のトランザクション識別結果を示す図である。このトランザクション識別結果２４１において、「0;HTTP;A;OK,0-0;RDB2;p;ok[9/5/4/5.8]」は、トランザクション種類ＩＤ「０」のトランザクションを示している。「1;HTTP;A;OK,1-0;RDB2;p;ok,1-1;RDB2;q;ok[4/1/3/1.6]」は、トランザクション種類ＩＤ「１」のトランザクションを示している。「2;HTTP;A;NG,2-0;RDB2;p;ok[2/1/1/1.2]」は、トランザクション種類ＩＤ「２」のトランザクションを示している。「3;HTTP;A;NG, 3-0;RDB2;p;ok, 3-1;RDB2;q;ok[2/1/1/1.2]」は、トランザクション種類ＩＤ「３」のトランザクションを示している。
【０２７４】
図５７は、トランザクション種類ＩＤ０のトランザクションを示す図である。このトランザクション２４２は、２階層のトランザクションである。ここで、図５６に示す「0;HTTP;A;OK,0-0;RDB2;p;ok[9/5/4/5.8]」における[9/5/4/5.8]の部分は、メッセージ履歴内で９回識別され、そのうち５回は確定、４回は推定であり、トランザクションの確からしさが５．８であることを示している。
【０２７５】
図５８は、トランザクション種類ＩＤ１のトランザクションを示す図である。このトランザクション２４３は、２階層のトランザクションである。ここで、図５６に示す「1;HTTP;A;OK,1-0;RDB2;p;ok,1-1;RDB2;q;ok[4/1/3/1.6]」における[4/1/3/1.6]の部分は、メッセージ履歴内で４回識別され、そのうち１回は確定、３回は推定であり、トランザクションの確からしさが１．６であることを示している。
【０２７６】
図５９は、トランザクション種類ＩＤ２のトランザクションを示す図である。このトランザクション２４４は、２階層のトランザクションである。ここで、図５６に示す「2;HTTP;A;NG, 2-0;RDB2;p;ok[2/1/1/1.2]」における[2/1/1/1.2]の部分は、メッセージ履歴内で２回識別され、そのうち１回は確定、１回は推定であり、トランザクションの確からしさが１．２であることを示している。
【０２７７】
図６０は、トランザクション種類ＩＤ３のトランザクションを示す図である。このトランザクション２４５は、２階層のトランザクションである。ここで、図５６に示す「3;HTTP;A;NG, 3-0;RDB2;p;ok,3-1;RDB2;q;ok[2/1/1/1.2]」における[2/1/1/1.2]の部分は、メッセージ履歴内で２回識別され、そのうち１回は確定、１回は推定であり、トランザクションの確からしさが１．２であることを示している。
【０２７８】
このように、メッセージのコードが異なる場合、それぞれを異なる種別のトランザクションと認識することで、コードに応じたトランザクションの処理時間を判別することができる。例えば、ＨＴＴＰでは、メッセージのCodeが「５００」の場合、「Internal Server Error」を示している。また、メッセージのCodeが「２００」の場合、「OK」（正常終了）を示している。従って、分析部１５０がメッセージのコード毎にトランザクションを区別して処理時間等の分析を行うことで、正常終了時とエラー発生時との処理時間の違いを認識することができる。そして、分析部１５０は、分析結果をグラフ等によって画面表示する。
【０２７９】
図６１は、コード別の分析結果を示す図である。この例では、横軸にトランザクションの処理開始時刻を取り、縦軸にトランザクションの処理時間を取ったグラフにより、処理終了ステータス別処理時間分布を示している。図中、黒い菱形がCode２００のトランザクションを示しており、白い正方形がCode５００のトランザクションを示している（コード以外のメッセージ内容は同一である）。
【０２８０】
このグラフを参照すると、正常終了（Code２００）の場合、処理時間にばらつきがあるが、エラー終了の場合（Code５００）、処理時間が集中していることが分かる。具体的には、Code:500(Error)のトランザクションの処理時間は0.34秒前後に集中しており、Code:200(OK)のトランザクションの処理時間は0.3〜1.8秒で長め、かつばらつきが大きい。
【０２８１】
また、分析部１５０は、分析結果から、正常に処理が完了したと判断できる処理時間の範囲や、何らかの問題が発生したと判断できる処理時間の範囲を算出することができる。
図６２は、トランザクションの分析結果を示す図である。分析結果２５１には、トランザクション識別部１４０で認識されたトランザクションに対して、同じ種別のトランザクションの数（[31;30;1]：全体で３１個のトランザクションが認識され、そのうち３０個が確定トランザクション、１個が推定トランザクションであることを示す）が示されている。
【０２８２】
また、処理時間に分布が対数正規分布となる場合、処理時間がｍ±σ（0.348,0.963)の範囲内のトランザクションを正常なトランザクションとみなしている。ここで、ｍは処理時間の平均値を示しており、図６２の例ではｍ＝０．５７９である。また、σは標準偏差を表しており、図６２の例ではσ＝１．６６である。この場合、ｍ±σの範囲は、０．３４８以上、０．９６３以下となる。
【０２８３】
また、処理時間がｍ±２σ（0.209,1.60)の範囲をはずれたトランザクションを、問題有りのトランザクションとする。また、処理時間が、正常な範囲と問題有りの範囲との時間となるトランザクションは、要注意のトランザクションと判定される。
【０２８４】
図６３は、処理時間に応じた良否分析を行ったトランザクションの分布状況を示す図である。この例では、横軸にトランザクションの処理開始時刻を取り、縦軸にトランザクションの処理時間を取ったグラフにより、処理終了ステータス別処理時間分布を示している。
【０２８５】
このようにトランザクションの処理時間の分布状況を、正常な範囲にあるトランザクション、要注意のトランザクション、問題のあるトランザクションに分けて分かりやすく表示することができる。
【０２８６】
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、サービス処理状況分析装置が有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記録装置には、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープなどがある。光ディスクには、ＤＶＤ（DigitalVersatileDisc）、ＤＶＤ−ＲＡＭ（RandomAccessMemory）、ＣＤ−ＲＯＭ（CompactDiscReadOnlyMemory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。光磁気記録媒体には、ＭＯ（Magneto-Opticaldisk）などがある。
【０２８７】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【０２８８】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送される毎に、逐次、受け取ったプログラムに従った処理を実行することもできる。
【０２８９】
なお、本発明は、上述の実施の形態にのみ限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々の変更を加えることができる。
以上説明した実施の形態の主な技術的特徴は、以下の付記の通りである。
【０２９０】
（付記１）  複数のサーバが接続されたネットワークシステムのサービス処理状況を分析するためのサービス処理状況分析プログラムにおいて、
コンピュータを、
ネットワークを介して受け渡されるメッセージを収集するメッセージ観測手段、
収集したメッセージの内容を解析して、解析されたメッセージの情報をメッセージ記憶手段に格納するメッセージ解析手段、
前記メッセージ記憶手段に格納されたメッセージの情報から、メッセージ間の呼び出し関係に関する所定の制約条件を満たし、かつ、すべての呼び出し関係が一意に確定するメッセージの組み合わせを抽出し、抽出したメッセージの組み合わせに基づいて確定トランザクションを生成する確定トランザクション生成手段、
前記確定トランザクションおよび先に識別されている推定トランザクションに含まれない未識別メッセージを順次選択し、前記制約条件を満たし、かつ、選択した前記未識別メッセージを含むメッセージの組み合わせを複数抽出し、抽出したメッセージの組み合わせに基づいて、１以上のトランザクション候補を生成するトランザクション候補生成手段、
生成された前記トランザクション候補について、同種類のトランザクションがこれまでに前記確定トランザクションまたは前記推定トランザクションとして識別された回数に基づいて前記トランザクション候補それぞれの確からしさを評価する評価手段、
生成された前記トランザクション候補の１つを、それぞれの確からしさに基づいて推定トランザクションとして識別する推定トランザクション識別手段、
前記確定トランザクションと前記推定トランザクションとを識別結果として出力する出力手段、
として機能させることを特徴とするサービス処理状況分析プログラム。
【０２９１】
（付記２）  前記評価手段は、確定トランザクションとして識別された回数と、推定トランザクションとして識別された回数に１以下の係数を乗算した値とを加算した値を、確からしさとすることを特徴とする付記１記載のサービス処理状況分析プログラム。
【０２９２】
（付記３）  前記推定トランザクション識別手段は、最も確からしいと評価されたトランザクション候補の確からしさを示す数値が、所定の閾値以上の場合にのみ、最も確からしいと評価されたトランザクション候補を推定トランザクションとして識別することを特徴とする付記１記載のサービス処理状況分析プログラム。
【０２９３】
（付記４）  前記トランザクション候補生成手段は、所定の推定処理終了条件を満たすまで、トランザクション候補の生成を繰り返すことを特徴とする付記１記載のサービス処理状況分析プログラム。
【０２９４】
（付記５）  前記トランザクション候補生成手段は、前記推定処理終了条件が満たされた後において前記未識別メッセージが残存するとき、前記未識別メッセージを既に識別されている前記推定トランザクションに追加することにより生成される置換トランザクション候補を含め、生成された前記トランザクション候補を生成し、
前記推定トランザクション識別手段は、前記置換トランザクション候補を前記推定トランザクションとして識別した場合、前記置換トランザクション候補の生成元となった前記推定トランザクションを前記置換トランザクション候補に置き換えることを特徴とする付記４記載のサービス処理状況分析プログラム。
【０２９５】
（付記６）  複数のサーバが接続されたネットワークシステムのサービス処理状況を分析するためのサービス処理状況分析方法において、
メッセージ観測手段が、ネットワークを介して受け渡されるメッセージを収集し、
メッセージ解析手段が、収集したメッセージの内容を解析して、解析されたメッセージの情報をメッセージ記憶手段に格納し、
確定トランザクション生成手段が、前記メッセージ記憶手段に格納されたメッセージの情報から、メッセージ間の呼び出し関係に関する所定の制約条件を満たし、かつ、すべての呼び出し関係が一意に確定するメッセージの組み合わせを抽出し、抽出したメッセージの組み合わせに基づいて確定トランザクションを生成し、
トランザクション候補生成手段が、前記確定トランザクションおよび先に識別されている推定トランザクションに含まれない未識別メッセージを順次選択し、前記制約条件を満たし、かつ、選択した前記未識別メッセージを含むメッセージの組み合わせを複数抽出し、抽出したメッセージの組み合わせに基づいて、１以上のトランザクション候補を生成し、
評価手段が、生成された前記トランザクション候補について、同種類のトランザクションがこれまでに前記確定トランザクションまたは前記推定トランザクションとして識別された回数に基づいて前記トランザクション候補それぞれの確からしさを評価し、
推定トランザクション識別手段が、生成された前記トランザクション候補の１つを、それぞれの確からしさに基づいて推定トランザクションとして識別し、
出力手段が、前記確定トランザクションと前記推定トランザクションとを識別結果として出力する、
ことを特徴とするサービス処理状況分析方法。
【０２９６】
（付記７）  複数のサーバが接続されたネットワークシステムのサービス処理状況を分析するサービス処理状況分析装置において、
ネットワークを介して受け渡されるメッセージを収集するメッセージ観測手段と、
収集したメッセージの内容を解析して、解析されたメッセージの情報をメッセージ記憶手段に格納するメッセージ解析手段と、
前記メッセージ記憶手段に格納されたメッセージの情報から、メッセージ間の呼び出し関係に関する所定の制約条件を満たし、かつ、すべての呼び出し関係が一意に確定するメッセージの組み合わせを抽出し、抽出したメッセージの組み合わせに基づいて確定トランザクションを生成する確定トランザクション生成手段と、
前記確定トランザクションおよび先に識別されている推定トランザクションに含まれない未識別メッセージを順次選択し、前記制約条件を満たし、かつ選択した前記未識別メッセージを含むメッセージの組み合わせを複数抽出し、抽出したメッセージの組み合わせに基づいて、１以上のトランザクション候補を生成するトランザクション候補生成手段と、
生成された前記トランザクション候補について、同種類のトランザクションがこれまでに前記確定トランザクションまたは前記推定トランザクションとして識別された回数に基づいて前記トランザクション候補それぞれの確からしさを評価する評価手段と、
生成された前記トランザクション候補の１つを、それぞれの確からしさに基づいて推定トランザクションとして識別する推定トランザクション識別手段と、
前記確定トランザクションと前記推定トランザクションとを識別結果として出力する出力手段と、
を有することを特徴とするサービス処理状況分析装置。
【図面の簡単な説明】
【０２９７】
【図１】本実施の形態の概略を示す図である。
【図２】収集されたメッセージの例を示す図である。
【図３】従来手法と本実施の形態とのトランザクションの識別結果を比較する図である。
【図４】本実施の形態に係るシステム構成を示す図である。
【図５】サービス処理状況分析装置のハードウェア構成例を示す図である。
【図６】サービス処理状況分析装置の機能ブロックを示す図である。
【図７】トランザクション識別処理の手順を示すフローチャートである。
【図８】子孫メッセージ集合への情報の登録処理の手順を示すフローチャートである。
【図９】確定トランザクションの識別処理の手順を示すフローチャートである。
【図１０】推定トランザクションの識別処理の手順を示すフローチャートである。
【図１１】確からしいトランザクションの選択処理手順を示すフローチャートの前半である。
【図１２】確からしいトランザクションの選択処理手順を示すフローチャートの後半である。
【図１３】推定トランザクションの置換処理手順を示すフローチャートの前半である。
【図１４】推定トランザクションの置換処理手順を示すフローチャートの後半である。
【図１５】呼び出し条件の第１の例を示す図である。
【図１６】呼び出し条件の第２の例を示す図である。
【図１７】呼び出し条件の第３の例を示す図である。
【図１８】トランザクションの構造情報の第１の例を示す図である。
【図１９】トランザクションの構造情報の第２の例を示す図である。
【図２０】メッセージ履歴の例を示す図である。
【図２１】開始メッセージ集合の例を示す図である。
【図２２】子孫メッセージ集合の例を示す図である。
【図２３】未識別子孫メッセージリストが空の開始メッセージの例を示す図である。
【図２４】未識別子孫メッセージリストが空の開始メッセージに関連する子孫メッセージの例を示す図である。
【図２５】確定トランザクションの構成結果を示す図である。
【図２６】確定トランザクションに属するメッセージ削除後の開始メッセージ集合を示す図である。
【図２７】確定トランザクションに属するメッセージ削除後の子孫メッセージ集合を示す図である。
【図２８】トランザクション識別状況変更後の開始メッセージ集合を示す図である。
【図２９】開始メッセージ識別状況変更後の子孫メッセージ集合を示す図である。
【図３０】子孫のメッセージが推定された後の開始メッセージ集合を示す図である。
【図３１】最も確からしいトランザクションの選択処理で選択されたトランザクションを示す図である。
【図３２】最も確からしいトランザクションの選択処理終了後の開始メッセージ集合を示す図である。
【図３３】最も確からしいトランザクションの選択処理終了後の子孫メッセージ集合を示す図である。
【図３４】推定トランザクション置換処理後の子孫メッセージ集合を示す図である。
【図３５】推定トランザクション置換処理によって構成された置換トランザクションを示す図である。
【図３６】推定トランザクション置換処理後の開始メッセージ集合を示す図である。
【図３７】トランザクション識別結果を示す第１の図である。
【図３８】トランザクション識別結果を示す第２の図である。
【図３９】種類別のトランザクション識別結果を示す図である。
【図４０】トランザクション種類ＩＤ０のトランザクションを示す図である。
【図４１】トランザクション種類ＩＤ１のトランザクションを示す図である。
【図４２】応答内容を含むメッセージのメッセージ履歴を示す図である。
【図４３】確定トランザクションの構成結果を示す図である。
【図４４】確定トランザクションに属する開始メッセージ削除後の開始メッセージ集合を示す図である。
【図４５】確定トランザクションに属する子孫メッセージ削除後の子孫メッセージ集合を示す図である。
【図４６】推定トランザクション識別処理を１回ずつ行った後の開始メッセージ集合を示す図である。
【図４７】推定トランザクション識別処理を１回ずつ行った後の子孫メッセージ集合を示す図である。
【図４８】推定トランザクションの識別処理によって生成された推定トランザクションを示す図である。
【図４９】推定トランザクション置換処理によって構成された置換トランザクションを示す図である。
【図５０】推定トランザクション置換処理によって新たに生成されたトランザクションを示す図である。
【図５１】推定トランザクション置換処理によって構成された置換トランザクションを示す図である。
【図５２】推定トランザクション識別処理によって新たに生成されたトランザクションを示す図である。
【図５３】推定トランザクション識別処理によって新たに生成されたトランザクションを示す図である。
【図５４】トランザクション識別結果を示す第１の図である。
【図５５】トランザクション識別結果を示す第２の図である。
【図５６】種類別のトランザクション識別結果を示す図である。
【図５７】トランザクション種類ＩＤ０のトランザクションを示す図である。
【図５８】トランザクション種類ＩＤ１のトランザクションを示す図である。
【図５９】トランザクション種類ＩＤ２のトランザクションを示す図である。
【図６０】トランザクション種類ＩＤ３のトランザクションを示す図である。
【図６１】コード別の分析結果を示す図である。
【図６２】トランザクションの分析結果を示す図である。
【図６３】処理時間に応じた良否分析を行ったトランザクションの分布状況を示す図である。
【符号の説明】
【０２９８】
１  サービス処理状況分析装置
１ａ  メッセージ観測手段
１ｂ  メッセージ解析手段
１ｃ  メッセージ記憶手段
１ｄ  確定トランザクション生成手段
１ｅ  トランザクション候補生成手段
１ｆ  評価手段
１ｇ  推定トランザクション識別手段
１ｈ  出力手段
２  ネットワーク
３ａ，３ｂ，３ｃ，３ｄ  サーバ
【手続補正２】
【補正対象書類名】図面
【補正対象項目名】図６
【補正方法】変更
【補正の内容】
【図６】
2006323471.tif 000066
【手続補正３】
【補正対象書類名】図面
【補正対象項目名】図１１
【補正方法】変更
【補正の内容】
【図１１】
2006323471.tif 000067
【手続補正４】
【補正対象書類名】図面
【補正対象項目名】図５６
【補正方法】変更
【補正の内容】
【図５６】
2006323471.tif 000068
【手続補正５】
【補正対象書類名】図面
【補正対象項目名】図５９
【補正方法】変更
【補正の内容】
【図５９】
2006323471.tif 000069
【手続補正６】
【補正対象書類名】図面
【補正対象項目名】図６０
【補正方法】変更
【補正の内容】
【図６０】
2006323471.tif 000070