(57)【特許請求の範囲】
【請求項１】
第１のサーバで実行された複数の第１処理に関する時刻情報を含む要求元時刻情報を取得し、前記複数の第１処理それぞれに応じて出力された複数の実行要求に応じて第２のサーバで実行された複数の第２処理に関する時刻情報を含む要求先時刻情報を取得し、前記要求先時刻情報および前記要求元時刻情報に基づき、前記複数の第１処理の実行期間と前記複数の第２処理の実行期間とを算出し、前記複数の第２処理それぞれについて、第２処理の補正後の実行期間が第１処理の実行期間内に含まれる時刻情報の補正範囲を算出する第１の手段と、
第２処理の実行期間が時系列上で連続し、算出した補正範囲が所定の条件を満たす第２処理に関する時刻情報の集合を生成する第２の手段と、
を有する情報処理装置。
【請求項２】
さらに、
生成された集合に属する第２処理に関する時刻情報それぞれの補正範囲に共通の値で、該集合に属する第２処理に関する時刻情報を補正する第３の手段を有する請求項１記載の情報処理装置。
【請求項３】
前記複数の第１処理に関する時刻情報の少なくとも一部は、第１処理を包含するトランザクションの識別子を含み、
前記複数の第２処理に関する時刻情報の少なくとも一部は、第２処理を包含するトランザクションの識別子を含み、
前記第１の手段は、
第１処理の開始と終了とのそれぞれの時刻を示す時刻情報を関連づけた第１時刻情報対に基づいて、該第１処理の実行期間を算出し、
第２処理の開始と終了とのそれぞれの時刻を示す時刻情報を関連づけた第２時刻情報対に基づいて、該第２処理の実行期間を算出し、
第２時刻情報対と同じトランザクションの識別子を有する第１時刻情報対に基づいて判断された実行期間内に、該第２時刻情報対に対応する処理の補正後の実行期間を包含させることができる時刻情報の補正範囲を、該第２時刻情報対の時刻情報の補正範囲とする請求項１または２のいずれかに記載の情報処理装置。
【請求項４】
前記第１の手段は、第１処理の開始と終了とのそれぞれの時刻を示す時刻情報を関連づけた、前記複数の第１処理の複数の第１時刻情報対それぞれに基づいて算出された複数の実行期間のいずれかに、第２処理の開始と終了とのそれぞれを示す時刻情報を関連づけた第２時刻情報対に基づいて算出された実行期間を包含させることができる時刻情報の補正値の範囲を、該第２時刻情報対の時刻情報の補正範囲とする請求項１乃至３のいずれかに記載の情報処理装置。
【請求項５】
前記複数の第１処理に関する時刻情報の少なくとも一部は、第１処理を包含するトランザクションの識別子を含み、
前記複数の第２処理に関する時刻情報の少なくとも一部は、第２処理を包含するトランザクションの識別子を含み、
前記第１の手段は、
第１処理の開始と終了とのそれぞれの時刻を示す時刻情報を関連づけた第１時刻情報対に基づいて、該第１処理の実行期間を算出し、
第２処理の開始と終了とのそれぞれの時刻を示す時刻情報を関連づけた第２時刻情報対に基づいて、該第２処理の実行期間を算出し、
トランザクションの識別子を含む第２時刻情報対に関しては、該第２時刻情報対と同じトランザクションの識別子を有する第１時刻情報対に基づいて判断された実行期間内に、該第２時刻情報対に対応する第２の処理の補正後の実行期間を包含させることができる時刻情報の補正範囲を、該第２時刻情報対の時刻情報の補正範囲とし、
トランザクションの識別子を含まない第２時刻情報対に関しては、前記複数の第１処理の複数の第１時刻情報対それぞれに基づいて算出された複数の実行期間のいずれかに、トランザクションの識別子を含む第２時刻情報対に基づいて算出された補正範囲内で、トランザクションの識別子を含まない第２時刻情報対に対応する第２処理の補正後の実行期間を包含させることができる時刻情報の補正範囲を、該第２時刻情報対の時刻情報の補正範囲とする請求項１乃至４のいずれかに記載の情報処理装置。
【請求項６】
前記第１の手段は、
複数の第２時刻情報対のうち、最初に、トランザクションの識別子を含む第２時刻情報対の時刻情報の補正範囲を判断することを特徴とする請求項５記載の情報処理装置。
【請求項７】
コンピュータが、
第１のサーバで実行された複数の第１処理に関する時刻情報を含む要求元時刻情報を取得し、
前記複数の第１処理それぞれに応じて出力された複数の実行要求に応じて第２のサーバで実行された複数の第２処理に関する時刻情報を含む要求先時刻情報を取得し、
前記要求先時刻情報および前記要求元時刻情報に基づき、前記複数の第１処理の実行期間と前記複数の第２処理の実行期間とを算出し、
前記複数の第２処理それぞれについて、第２処理の補正後の実行期間が第１処理の実行期間内に含まれる時刻情報の補正範囲を算出し、
第２処理の実行期間が時系列上で連続し、算出した補正範囲が所定の条件を満たす第２処理に関する時刻情報の集合を生成する、
ことを特徴とする情報処理方法。
【請求項８】
コンピュータに、
第１のサーバで実行された複数の第１処理に関する時刻情報を含む要求元時刻情報を取得し、
前記複数の第１処理それぞれに応じて出力された複数の実行要求に応じて第２のサーバで実行された複数の第２処理に関する時刻情報を含む要求先時刻情報を取得し、
前記要求先時刻情報と前記要求元時刻情報に基づき、前記複数の第１処理と前記複数の第２処理の実行期間とを算出し、
前記複数の第２処理それぞれについて、第２処理の補正後の実行期間が第１処理の実行期間内に含まれる時刻情報の補正範囲を算出し、
第２処理の実行期間が時系列上で連続し、算出した補正範囲が所定の条件を満たす第２処理に関する時刻情報の集合を生成する、
処理を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、発生したイベントに関する情報を処理する情報処理装置、情報処理方法、およびプログラムに関する。
【背景技術】
【０００２】
インターネットを介してユーザにサービスを提供するＷｅｂアプリケーションの運用管理などでは、ユーザの処理要求の遅延などを監視するために、性能の測定が行われる。例えば、ユーザからの処理要求に応じた実行された一連の処理がトランザクションとして捉えられ、トランザクションの内容が分析される。トランザクションの分析では、例えばトランザクション中で発生した最初のリクエストからユーザへのレスポンスまでのＨＴＴＰ（HyperText Transfer Protocol）のリクエスト／レスポンス処理、データベース（ＤＢ）アクセス処理などが検知される。そして、検知された処理を分析することで、各処理に要した時間などが算出される。【０００３】
トランザクションの分析手法では、例えばネットワーク上を流れるメッセージをパケットキャプチャやロギングなどの手段により取得される。取得されたメッセージのうち、同一トランザクション内で送受信されたメッセージ同士が関連付けられる。関連付けられたメッセージ群により、トランザクションの処理内容が解析される。メッセージ間の関連付けには、例えばメッセージに付与された時刻情報が用いられる。例えば、記録されたメッセージの情報には、通常、メッセージ本体以外に時刻情報が付加される。メッセージの時刻情報を利用して事象の前後関係が判定することで、同一のトランザクションを構成するメッセージ群が見つけられる。【０００４】
パケットキャプチャやロギングなどで取得したメッセージの時刻情報を用いた分析を行う場合、分析の精度向上には、メッセージを採取する機器間の時刻を正確にあわせることが有効となる。ところが、メッセージなどの情報を記録するプログラムや装置は、それぞれが独立して時刻を刻んでおり、互いの時刻にずれがあるのが通常である。これらの機器は、自己の内部時計に基づいて、取得した情報に時刻情報を付加するので、メッセージなどの情報に付加された時刻情報にもずれが生じてしまう。メッセージの時刻情報にずれがあれば、メッセージの前後関係の判定が不正確となる。このため、メッセージの時刻情報を利用した、トランザクションを構成するメッセージの判定において、誤った判定が引き起こされる。
【０００５】
これまで、サーバ機器間の時刻同期の機構として、ＮＴＰ（Network Time Protocol）による時刻同期が使われてきた。ただし、ＮＴＰによる方法ではメッセージの関連付けに十分な同期の精度が得られないことが多い。しかも、同一機器上で複数のプロセスを使ってメッセージ情報を採取するような場合は、元の時刻情報が同一であってもメッセージにタイムスタンプを打つタイミングがプロセス間で異なるために時間がずれているのと同じ作用が発生することがある。【０００６】
なお遠隔地のサーバとの時刻をＧＰＳ（Global Positioning System）で同期するという方法もあるが、特殊なハードウェアを利用することとなり、コストの増大を招く。しかも、時刻をＧＰＳで同期させたとしても、プロセスのタイムスタンプ付加のタイミングの違いによる時刻のずれが生じることには変わりがない。そのため、機器の時刻情報を揃えるという方法では解決できない。【０００７】
このように、複数個所で記録されたログの時刻情報に不整合があって正しい解析ができないケースがある。そこで、例えば複数の計算機から出力される複数のログに対して、時刻補正ログと、ログ間の整合性ルールによって、各ログに記録されているタイムスタンプを補正することが考えられている。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００６−１１６８３号公報
【特許文献２】特開２００８−２６９０８４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかし、従来の時刻補正方法では、求めだした時刻の補正値を、どの程度の範囲の情報の時刻補正に適用可能なのかを明確に判断していないため、適切な補正値で補正できない場合がある。例えば、単位時間当たりの時刻のずれが一様でない場合、過大な期間の情報について、共通の補正値で補正しようとしても、該当期間内のすべての情報の間の整合性を保てる時刻の補正値が見つけ出せない可能性がある。このように、求めだした時刻の補正値の適用範囲が不正確であれば、適切な補正値を得ることができず、時刻補正を適切に行うことができない場合がある。【００１０】
１つの側面では、本発明は、適切な時刻補正を可能とする情報処理装置、情報処理方法、およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１１】
１つの案では、判断手段、および生成手段を有する情報処理装置が提供される。判断手段は、第１のサーバで実行された処理に関するイベントの発生時刻を示す時刻情報を含む要求元イベント情報を記憶する第１の記憶手段、および前記第１のサーバからの実行要求に応じて第２のサーバで実行された処理に関するイベントの発生時刻を示す時刻情報を含む要求先イベント情報を記憶する第２の記憶手段を参照し、要求先イベント情報の時刻情報と要求元イベント情報の時刻情報とを比較し、要求先イベント情報それぞれについて、時刻情報を補正可能な値の範囲を判断する。生成手段は、時刻情報によって時系列に並べられた要求先イベント情報のうち、時系列上で連続し、補正可能な値の範囲に共通の値を含む要求先イベント情報の集合を生成する。
【発明の効果】
【００１２】
１態様によれば、適切な時刻補正が可能となる。
本発明の上記および他の目的、特徴および利点は本発明の例として好ましい実施の形態を表す添付の図面と関連した以下の説明により明らかになるであろう。
【図面の簡単な説明】
【００１３】
【図１】第１の実施の形態に係るシステムの一例を示す図である。
【図２】第２の実施の形態のシステム構成の一例を示す図である。
【図３】第２の実施の形態に用いる分析装置のハードウェアの一構成例を示す図である。
【図４】分析装置の機能の一例を示すブロック図である。
【図５】トランザクション分析処理の手順を示すフローチャートである。
【図６】Ｗｅｂメッセージ記憶部のデータ構造の一例を示す図である。
【図７】アプリケーションメッセージ記憶部のデータ構造の一例を示す図である。
【図８】ＤＢメッセージ記憶部のデータ構造の一例を示す図である。
【図９】アプリケーション層とＤＢ層とのメッセージ対の一例を示す図である。
【図１０】時刻補正前のメッセージの送信タイミングの一例を示す図である。
【図１１】３時間分のメッセージに対して同一の補正値を適用する場合の、補正値候補に応じた適合率とカバー率との推移の一例を示す図である。
【図１２】１５分間分のメッセージに対して同一の補正値を適用する場合の、補正値候補に応じた適合率とカバー率との推移の一例を示す図である。
【図１３】１分間分のメッセージに対して同一の補正値を適用する場合の、補正値候補に応じた適合率とカバー率との推移の一例を示す図である。
【図１４】トランザクションＩＤが付与されたメッセージ対に対する時刻補正範囲の第１の例を示す図である。
【図１５】トランザクションＩＤが付与されたメッセージ対に対する時刻補正範囲の第２の例を示す図である。
【図１６】トランザクションＩＤが付与されていないメッセージ対に対する時刻補正範囲の一例を示す図である。
【図１７】時刻補正範囲の更新例を示す図である。
【図１８】時刻補正範囲の制約の有無による処理量の違いを示す図である。
【図１９】時刻補正処理の手順を示すフローチャートである。
【図２０】補正値の適切な適用範囲を決定した場合とそうでない場合とにおける適合率とカバー率との違いを示す図である。
【発明を実施するための形態】
【００１４】
以下、本実施の形態について図面を参照して説明する。なお各実施の形態は、矛盾のない範囲で複数の実施の形態を組み合わせて実施することができる。
〔第１の実施の形態〕
図１は、第１の実施の形態に係るシステムの一例を示す図である。第１の実施の形態に係るシステムには、例えば、情報処理装置１、端末装置２、第１のサーバ３、第２のサーバ４、およびキャプチャ装置５が含まれる。
【００１５】
端末装置２は、例えばユーザからの入力に応じて、第１のサーバ３に対して処理要求を送信する。第１のサーバ３と第２のサーバ４とは、互いに連携し、端末装置２からの処理要求に応じて、トランザクション処理を実行する。例えば第１のサーバ３がＷｅｂサーバとアプリケーションサーバとの機能を備え、第２のサーバ４がＤＢサーバの機能を備える。この場合、第１のサーバ３は、端末装置２から処理要求に応じたＷｅｂサービスおよびアプリケーションの処理サービスを実行し、第２のサーバ４が管理するデータにアクセスする際に、第２のサーバ４に対してリクエストメッセージを送信する。なお第１のサーバ３が第２のサーバ４に送信するリクエストメッセージには、トランザクションの識別子を含めることができる。第２のサーバ４は、受信したリクエストメッセージに応じたデータへのアクセスを行い、アクセス結果をレスポンスメッセージとして第１のサーバ３に応答する。
【００１６】
第１の実施の形態に係るシステムは、第１のサーバ３と第２のサーバ４とのそれぞれに関し、トランザクションの処理に関連して発生したイベントに関するイベント情報を記録する機能を備えている。
【００１７】
例えば第１のサーバ３は、リクエストメッセージに応じてトランザクションの処理の一部を実行すると、実行した処理の開始イベントに関するイベント情報と、処理の終了イベントに関するイベント情報と生成する。なお第１のサーバ３は、生成したイベント情報に、イベントの発生時刻を示す時刻情報を含める。また第１のサーバ３は、実行したトランザクションを一意に示す識別子を生成し、イベント情報にトランザクションの識別子を含める。そして第１のサーバ３は、生成したイベント情報を内部の記憶装置に格納する。
【００１８】
また第１のサーバ３と第２のサーバ４との通信経路上にネットワークタップ６が設けられ、そのネットワークタップ６にキャプチャ装置５が接続されている。ネットワークタップ６は、第１のサーバ３と第２のサーバ４との間で送受信されたパケットのコピーを、キャプチャ装置５に送信する。キャプチャ装置５は、ネットワークタップ６から送信されたパケットを解析して、第１のサーバ３から第２のサーバ４へのリクエストメッセージ、および第２のサーバ４から第１のサーバ３へのレスポンスメッセージを再生する。そしてキャプチャ装置５は、それぞれのメッセージの発生イベントを示すイベント情報を、内部の記憶装置に記憶する。なおキャプチャ装置５は、イベント情報を記憶する際に、イベントの発生時刻を示す時刻情報をイベント情報に付与する。またキャプチャ装置５は、取得したメッセージにトランザクションの識別子が含まれていれば、その識別子をイベント情報に含める。
【００１９】
情報処理装置１は、第１の記憶手段１ａ、第２の記憶手段１ｂ、取得手段１ｃ、判断手段１ｄ、生成手段１ｅ、および補正手段１ｆを有する。
第１の記憶手段１ａは、トランザクションの一部として第１のサーバ３で実行された処理に関するイベントの発生時刻を示す時刻情報を含む要求元イベント情報を記憶する。例えば第１の記憶手段１ａ内の要求元イベント情報の少なくとも一部は、第１のサーバ３で実行された処理を包含するトランザクションの識別子を含む。
【００２０】
第２の記憶手段１ｂは、第１のサーバ３からのトランザクションの一部の実行要求に応じて第２のサーバ４で実行された処理に関するイベントの発生時刻を示す時刻情報を含む要求先イベント情報を記憶する。例えば第２の記憶手段１ｂ内の要求先イベント情報の少なくとも一部は、第２のサーバ４で実行された処理を包含するトランザクションの識別子を含む。
【００２１】
取得手段１ｃは、キャプチャ装置５から第１のサーバ３で実行された処理に関する要求元イベント情報を取得し、第１の記憶手段１ａに格納する。また取得手段１ｃは、第２のサーバ４から、第２のサーバ４で実行された処理に関する要求先イベント情報を取得し、第２の記憶手段１ｂに格納する。
【００２２】
判断手段１ｄは、第１の記憶手段１ａと第２の記憶手段１ｂとを参照し、要求先イベント情報の時刻情報と要求元イベント情報の時刻情報とを比較する。そして判断手段１ｄは、要求先イベント情報それぞれについて、時刻情報を補正可能な値の範囲を判断する。
【００２３】
例えば判断手段１ｄは、同一処理の開始と終了とのそれぞれを示す要求元イベント情報を関連づけた要求元イベント情報対に基づいて、第１のサーバ３で実行された該処理の実行期間を判断する。また判断手段１ｄは、同一処理の開始と終了とのそれぞれを示す要求先イベント情報を関連づけた要求先イベント情報対に基づいて、第２のサーバ４で実行された処理の実行期間を判断する。さらに判断手段１ｄは、要求先イベント情報対と同じトランザクションの識別子を有する要求元イベント情報対に基づいて判断された実行期間内に、要求先イベント情報対に対応する処理の補正後の実行期間を包含させることができる補正値の範囲を求める。そして判断手段１ｄは、求めた補正値の範囲を、要求先イベント情報対の時刻情報を補正可能な値の範囲とする。
【００２４】
生成手段１ｅは、時刻情報によって時系列に並べられた要求先イベント情報のうち、時系列上で連続し、補正可能な値の範囲に共通の値を含む要求先イベント情報の集合を生成する。
【００２５】
補正手段１ｆは、生成された集合に属する要求先イベント情報それぞれの補正可能な値の範囲に共通の補正値で、第２の記憶手段１ｂ内における、該集合に属する要求先イベント情報それぞれの時刻情報を補正する。
【００２６】
このようなシステムによれば、端末装置２からの処理要求に応じて、第１のサーバ３と第２のサーバ４とでトランザクション処理が実行される。第１のサーバ３で実行された処理に関する要求元イベント情報は、キャプチャ装置５で記録される。第２のサーバ４で実行された処理に関する要求先イベント情報は、第２のサーバ４で記録される。このとき、キャプチャ装置５と第２のサーバ４との間に、内部時計にずれがあれば、それぞれで記録したイベント情報に付与される時刻情報にもずれが生じる。そこで、情報処理装置１によって、時刻ずれの補正値と、その補正値の適用範囲とが判断される。
【００２７】
例えば情報処理装置１の取得手段１ｃにより、キャプチャ装置５から要求元イベント情報が取得され、第１の記憶手段１ａに格納される。また取得手段１ｃにより、第２のサーバ４から要求先イベント情報が取得され第２の記憶手段１ｂに格納される。
【００２８】
次に判断手段１ｄにより、第１の記憶手段１ａと第２の記憶手段１ｂとが参照され、要求先イベント情報の時刻情報と要求元イベント情報の時刻情報とが比較される。そして判断手段１ｄにより、要求先イベント情報それぞれについて、時刻情報を補正可能な値の範囲が判断される。
【００２９】
図１の例では、第１のサーバ３と第２のサーバ４とにより、識別子「tid1」、「tid2」、「tid3」のトランザクションが実行されている。第１の記憶手段１ａには、各トランザクションにおいて、第１のサーバ３で実行された処理の開始と終了とのそれぞれのイベントを示す要求元イベント情報が格納されている。そして、同一のトランザクションの識別子を有する開始と終了との要求元イベント情報を関連付けた要求元イベント情報対に基づいて、第１のサーバ３における、そのトランザクションの処理の実行期間が判断される。例えば識別子「tid1」のトランザクションの処理の第１のサーバ３での開始時刻は「3.10秒」であり、終了時刻は「3.20秒」である。すると、識別子「tid1」のトランザクションの第１のサーバ３での処理の実行期間は「3.10〜3.20」となる。同様に、識別子「tid2」のトランザクションの第１のサーバ３での処理の実行期間は「3.30〜3.40」となる。識別子「tid3」のトランザクションの第１のサーバ３での処理の実行期間は「3.50〜3.59」となる。
【００３０】
また第２の記憶手段１ｂには、各トランザクションにおいて、第２のサーバ４で実行された処理の開始と終了とのそれぞれのイベントを示す要求先イベント情報が格納されている。そして、同一のトランザクションの識別子を有する開始と終了との要求先イベント情報を関連付けた要求先イベント情報対に基づいて、第２のサーバ４における、そのトランザクションの処理の実行期間が判断される。例えば識別子「tid1」のトランザクションの処理の第２のサーバ４での開始時刻は「3.05秒」であり、終了時刻は「3.07秒」である。すると、識別子「tid1」のトランザクションの第２のサーバ４での処理の実行期間は「3.05〜3.07」となる。同様に、識別子「tid2」のトランザクションの第２のサーバ４での処理の実行期間は「3.31〜3.35」となる。識別子「tid3」のトランザクションの第２のサーバ４での処理の実行期間は「3.43〜3.45」となる。
【００３１】
この場合、トランザクションの識別子「tid1」の要求先イベント情報の補正可能な値の範囲は、「3.05〜3.07」の期間を補正して、「3.10〜3.20」の範囲内に収めることができる値の範囲である。この場合、「+0.05〜+0.13」の範囲であれば、「3.05〜3.07」を補正後の期間が「3.10〜3.20」の範囲内となる。従って、補正可能な値の範囲は、「+0.05〜+0.13」となる。同様に、トランザクションの識別子「tid2」の要求先イベント情報の補正可能な値の範囲は、「-0.01〜+0.05」である。トランザクションの識別子「tid3」の要求先イベント情報の補正可能な値の範囲は、「+0.07〜+0.14」である。
【００３２】
補正可能な値の範囲が求められると、生成手段１ｅにより、時刻情報によって時系列に並べられた要求先イベント情報のうち、時系列上で連続し、補正可能な値の範囲に共通の値を含む要求先イベント情報の集合が生成される。例えば生成手段１ｅは、時系列上、古い要求先イベント情報対から順に選択する。そして生成手段１ｅは、要求先イベント情報対を選択するごとに、既に選択された要求先イベント情報対における補正可能な値の範囲の共通範囲と、新たに選択した要求先イベント情報対における補正可能な値の範囲との共通性の有無を判断する。共通する値があれば、新たに選択した要求先イベント情報対が、補正可能な値の範囲に共通の値を含む要求先イベント情報の集合に追加される。
【００３３】
図１の例では、例えばトランザクションの識別子「tid1」の要求先イベント情報対と、トランザクションの識別子「tid2」の要求先イベント情報対とが選択される。選択された要求先イベント情報対の補正可能な値の範囲は、共通する値「+0.05」を有する。そこでトランザクションの識別子「tid1」の要求先イベント情報対と、トランザクションの識別子「tid2」の要求先イベント情報対とのそれぞれを構成する要求先イベント情報が、同じ集合に纏められる。
【００３４】
次に、トランザクションの識別子「tid3」の要求先イベント情報対が選択される。この要求先イベント情報対の補正可能な値の範囲は、「+0.07〜+0.14」である。すると、先に選択された要求先イベント情報対の補正可能な値の範囲に共通する値「0.05」と、新たに選択した要求先イベント情報対の補正可能な値の範囲「+0.07〜+0.14」とに、共通する値が存在しない。そこで、トランザクションの識別子「tid3」の要求先イベント情報対を構成する要求先イベント情報は、それ以前の要求先イベント情報とは別の集合となる。その結果、第２の記憶手段１ｂ内の時刻情報「3.05」の要求先イベント情報から、時刻情報「3.35」の要求先イベント情報までの時系列上で連続する要求先イベント情報を、１つの集合とすることが確定する。
【００３５】
要求先イベント情報の集合が決定されると、補正手段１ｆにより、集合内の要求先イベント情報の時刻情報が、同一の補正値で補正される。例えば時刻情報「3.05」の要求先イベント情報から、時刻情報「3.35」の要求先イベント情報までの時系列上で連続する要求先イベント情報が適用範囲とされる。そして要求先イベント情報の補正可能な値の範囲に共通する値「+0.05」を補正値として、適用範囲の要求先イベント情報の時刻情報が補正される。例えば、要求先イベント情報の時刻情報の値に、補正値が加算される。
【００３６】
このように、要求先イベント情報の補正可能な値の範囲を判断し、時系列上で連続し、補正可能な値の範囲に共通する値が存在する要求先イベント情報が、同一の補正値で時刻補正を行う情報の範囲を示す集合とされる。このようにして生成された集合に属する要求先イベント情報は、補正可能の値の範囲に共通な値が存在するため、共通な値を補正値として時刻情報を補正すれば、補正後において、要求元と要求先との処理の実行期間に関する整合性が合う。すなわち、時刻情報の適切な補正が行われる。このように要求先イベント情報の時刻情報を適切に補正すれば、例えば、要求元イベント情報と要求先イベント情報とに基づくトランザクション分析の信頼性が向上する。
【００３７】
なお、取得手段１ｃ、判断手段１ｄ、生成手段１ｅ、および補正手段１ｆは、情報処理装置１が有するＣＰＵ（Central Processing Unit）により実現することができる。また、第１の記憶手段１ａと第２の記憶手段１ｂとは、情報処理装置１が有するＲＡＭ（Random Access Memory）やハードディスクドライブ（ＨＤＤ:Hard Disk Drive）などにより実現することができる。
【００３８】
また、図１に示した各要素間を接続する線は通信経路の一部を示すものであり、図示した通信経路以外の通信経路も設定可能である。
〔第２の実施の形態〕
次に第２の実施の形態について説明する。第２の実施の形態は、トランザクションの分析を行う分析装置において、トランザクションの分析に先立って時刻情報の補正値を決定するものである。
【００３９】
なお、第２の実施の形態では、ＷＷＷ（World Wide Web）を用いたサービスを提供するＷｅｂ３階層システムの例を用いる。Ｗｅｂ３階層システムでは、トランザクションの処理が、ＷＷＷによるサービスの入口となるＷｅｂ層、各種データ処理を行うアプリケーション層、およびデータを管理するＤＢ層の３つの階層（レイヤ）に分かれる。Ｗｅｂ３階層システムでは、Ｗｅｂ層が最上位である。Ｗｅｂ層の下位にアプリケーション層が存在する。さらにアプリケーション層の下位に、ＤＢ層が存在する。
【００４０】
また第２の実施の形態では、第１の実施の形態のイベント情報の一例として、各サーバに入出力されたメッセージに関する情報（メッセージ情報）を取得する。例えばサーバにリクエストメッセージが入力されれば、そのサーバでの処理の開始イベントが発生したものと認識できる。また、サーバからレスポンスメッセージが出力されれば、そのサーバでの処理の終了イベントが発生したものと認識できる。
【００４１】
また、第２の実施の形態では、同一処理の開始と終了とを示すメッセージ情報を関連付け、メッセージ情報対とする。そしてメッセージ情報対ごとに、そのメッセージ情報対を構成するメッセージ情報の時刻情報の補正可能な値の範囲を判断する。以下、時刻情報を補正可能な値の範囲を、「時刻補正範囲」と呼ぶこととする。
【００４２】
また第２の実施の形態では、補正値および補正値の適用範囲の決定に際し、トランザクションＩＤが付与されていないメッセージ情報も利用する。トランザクションＩＤが付与されたメッセージと、トランザクションＩＤが付与されていないメッセージとでは、時刻補正範囲が異なる。
【００４３】
図２は、第２の実施の形態のシステム構成の一例を示す図である。図２には、Ｗｅｂ３階層システムを用いてサービスを提供するシステムの例が示されている。このシステムでは、端末装置３１〜３３がネットワーク２１、スイッチ２２を介してＷｅｂサーバ４１に接続されている。端末装置３１〜３３は、サービスの提供を受けるユーザが使用するコンピュータ、携帯端末装置などの機器である。
【００４４】
スイッチ２２は、例えばレイヤ２スイッチである。またスイッチ２２は、中継するパケットの信号を分岐させて出力するキャプチャポートを備えている。スイッチ２２のキャプチャポートには、キャプチャ装置４４が接続されている。
【００４５】
Ｗｅｂサーバ４１は、ＷＷＷによる情報通信機能を備えたコンピュータである。Ｗｅｂサーバ４１は、端末装置３１〜３３からの要求に応じて、処理を実行し、処理結果を応答する。またＷｅｂサーバ４１は、処理の実行過程でアプリケーションサーバ４２の処理機能を利用する場合、アプリケーションサーバ４２に処理要求を送信し、処理結果の応答を受け取る。
【００４６】
なおＷｅｂサーバ４１は、例えば端末装置３１〜３３から処理を要求するリクエストメッセージを受信すると、そのリクエストメッセージに応じて実行するトランザクションを一意に識別するトランザクションＩＤを生成する。そしてＷｅｂサーバ４１は、トランザクションの処理の一部をアプリケーションサーバ４２に依頼する場合、そのトランザクションのトランザクションＩＤを付与したリクエストメッセージをアプリケーションサーバ４２に送信する。さらにＷｅｂサーバ４１は、トランザクションの処理結果を示すレスポンスメッセージに、そのトランザクションのトランザクションＩＤを付与する。
【００４７】
アプリケーションサーバ４２は、各種アプリケーションソフトウェアを実行するコンピュータである。アプリケーションサーバ４２は、Ｗｅｂサーバ４１からの要求に応じて処理を実行し、実行結果を応答する。なおアプリケーションサーバ４２は、処理の実行過程でＤＢサーバ４３が管理するデータへのアクセス処理が発生した場合、ＤＢサーバ４３にデータアクセスの処理要求を送信し、処理結果の応答を受け取る。またアプリケーションサーバ４２は、実行した処理に関連して送受信したメッセージ（アプリケーションメッセージ）の履歴を、タイムスタンプ（時刻情報）を付加して記憶する。
【００４８】
なおアプリケーションサーバ４２は、ＤＢサーバ４３に送信するリクエストメッセージの少なくとも一部に、Ｗｅｂサーバ４１からのリクエストメッセージに含まれていたトランザクションＩＤを付与する。
【００４９】
ＤＢサーバ４３は、スイッチ２３を介してアプリケーションサーバ４２に接続されている。ＤＢサーバ４３は、データベースを有し、そのデータベースを管理するコンピュータである。ＤＢサーバ４３は、アプリケーションサーバ４２からの要求に応じて処理を実行し、実行結果を応答する。
【００５０】
スイッチ２３は、例えばレイヤ２スイッチである。またスイッチ２３は、中継するパケットの信号を分岐させて出力するキャプチャポートを備えている。スイッチ２３のキャプチャポートには、キャプチャ装置４５が接続されている。
【００５１】
キャプチャ装置４４は、スイッチ２２を介して端末装置３１〜３３それぞれと、Ｗｅｂサーバ４１との間で送受信されたパケットを取得するコンピュータである。そしてキャプチャ装置４４は、取得したパケットに含まれるメッセージ（Ｗｅｂメッセージ）を解析し、タイムスタンプを付加して記憶する。
【００５２】
キャプチャ装置４５は、スイッチ２３を介してアプリケーションサーバ４２とＤＢサーバ４３との間で送受信されたパケットを取得するコンピュータである。そしてキャプチャ装置４５は、取得したパケットに含まれるメッセージ（ＤＢメッセージ）を解析し、タイムスタンプを付加して記憶する。
【００５３】
分析装置１００は、ネットワーク２４を介してアプリケーションサーバ４２、およびキャプチャ装置４４，４５に接続されている。分析装置１００は、Ｗｅｂサーバ４１、アプリケーションサーバ４２、およびＤＢサーバ４３によって処理が実行された一連のトランザクションを分析するコンピュータである。例えば分析装置１００は、キャプチャ装置４４から、端末装置３１〜３３それぞれと、Ｗｅｂサーバ４１との間で送受信されたメッセージの情報を取得する。また分析装置１００は、アプリケーションサーバ４２から、Ｗｅｂサーバ４１とアプリケーションサーバ４２との間で送受信されたメッセージの情報を取得する。さらに分析装置１００は、キャプチャ装置４５から、アプリケーションサーバ４２とＤＢサーバ４３との間で送受信されたメッセージに関するメッセージ情報を取得する。そして分析装置１００は、取得したメッセージ情報を解析し、例えばトランザクションの種別ごとの各サーバでの平均処理時間などを解析する。
【００５４】
分析装置１００は、メッセージを解析する際に、同一トランザクションの処理に関するメッセージ同士の関連付けを行う。そして分析装置１００は、各トランザクションに関するメッセージを解析することで、例えばトランザクションの階層ごとの処理時間の分析が可能となる。
【００５５】
なお、同一トランザクションの処理であれば、上位層の処理の開始から終了までの実行期間内に、下位層の処理の実行期間は包含される。従って、上位層へのリクエストメッセージとレスポンスメッセージとの間に、同一トランザクションにおける下位層のリクエストメッセージやレスポンスメッセージが発生する。このような条件を満たすメッセージ同士を関連付けることで、同一トランザクションにおいて発生したメッセージの集合を生成することができる。この条件を満たすか否かは、例えば各メッセージを時系列に並べることで判断できる。
【００５６】
ここで、各メッセージに付与されたタイムスタンプの時刻が正確であれば、メッセージを正しく時系列で並べることができる。しかし、第２の実施の形態では、Ｗｅｂメッセージのタイムスタンプは、キャプチャ装置４４によって付加される。アプリケーションメッセージのタイムスタンプは、アプリケーションサーバ４２によって付加される。ＤＢメッセージのタイムスタンプは、キャプチャ装置４５によって付加される。するとアプリケーションサーバ４２と各キャプチャ装置４４，４５の内部時計の時刻にずれがある場合、タイムスタンプで示された時刻にもずれが生じる。またアプリケーションサーバ４２と各キャプチャ装置４４，４５との内部時計の時刻が一致していたとしても、タイムスタンプを設定するプロセスの処理タイミングの違いにより、例えば０．０１秒単位での微妙な時刻のずれが生じる。このような時刻のずれにより、メッセージを、そのメッセージが送信された順に正しく時系列に並べるのが困難となる。
【００５７】
そこで分析装置１００では、異なる機器でタイムスタンプが付与されたメッセージ間の時刻を補正する補正値を算出し、時刻の補正を行ったうえでメッセージを時系列に並べる。これにより、上位の処理と、その処理に呼び出されて実行された下位の処理の時間的な包含関係が正しく再現され、同一トランザクションに含まれるメッセージ集合を正しく判定可能となる。
【００５８】
分析装置１００は、メッセージの時刻を補正する場合、各メッセージについての時刻補正範囲を順に求める。なお、第２の実施の形態では、処理のリクエストメッセージと、その処理のレスポンスメッセージとを関連付けたメッセージ対ごとに、時刻補正範囲を求める。このとき、第２の実施の形態では、トランザクションＩＤを有するメッセージのみならず、トランザクションＩＤを持たないメッセージの時刻補正範囲も求める。そして分析装置１００は、トランザクションＩＤを有するメッセージ対を１つずつ取得し、取得するごとに、それまでに取得したメッセージ対の時刻補正範囲の共通部分を求め、共通部分を、取得したメッセージ対の集合に対する時刻補正範囲とする。分析装置１００は、時刻補正範囲が空集合になると、最後に取得したメッセージを除いたメッセージの集合を、同一補正値で時刻補正を行うメッセージの集合に決定する。そして分析装置１００は、メッセージの集合に属する各メッセージの時刻補正範囲に共通する値で、その集合に属するメッセージの時刻を補正する。
【００５９】
このような処理を実現する分析装置１００は、例えば以下のようなハードウェアで構成される。
図３は、第２の実施の形態に用いる分析装置のハードウェアの一構成例を示す図である。分析装置１００は、ＣＰＵ１０１によって装置全体が制御されている。ＣＰＵ１０１には、バス１０８を介してＲＡＭ１０２と複数の周辺機器が接続されている。
【００６０】
ＲＡＭ１０２は、分析装置１００の主記憶装置として使用される。ＲＡＭ１０２には、ＣＰＵ１０１に実行させるＯＳ（Operating System）のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ１０２には、ＣＰＵ１０１による処理に必要な各種データが格納される。
【００６１】
バス１０８に接続されている周辺機器としては、ＨＤＤ１０３、グラフィック処理装置１０４、入力インタフェース１０５、光学ドライブ装置１０６、および通信インタフェース１０７がある。
【００６２】
ＨＤＤ１０３は、内蔵したディスクに対して、磁気的にデータの書き込みおよび読み出しを行う。ＨＤＤ１０３は、分析装置１００の二次記憶装置として使用される。ＨＤＤ１０３には、ＯＳのプログラム、アプリケーションプログラム、および各種データが格納される。なお、二次記憶装置としては、フラッシュメモリなどの半導体記憶装置を使用することもできる。
【００６３】
グラフィック処理装置１０４には、モニタ１１が接続されている。グラフィック処理装置１０４は、ＣＰＵ１０１からの命令に従って、画像をモニタ１１の画面に表示させる。モニタ１１としては、ＣＲＴ（Cathode Ray Tube）を用いた表示装置や液晶表示装置などがある。
【００６４】
入力インタフェース１０５には、キーボード１２とマウス１３とが接続されている。入力インタフェース１０５は、キーボード１２やマウス１３から送られてくる信号をＣＰＵ１０１に送信する。なお、マウス１３は、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
【００６５】
光学ドライブ装置１０６は、レーザ光などを利用して、光ディスク１４に記録されたデータの読み取りを行う。光ディスク１４は、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク１４には、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。
【００６６】
通信インタフェース１０７は、ネットワーク２４に接続されている。通信インタフェース１０７は、ネットワーク２４を介して、アプリケーションサーバ４２、またはキャプチャ装置４４，４５との間でデータの送受信を行う。
【００６７】
以上のようなハードウェア構成によって、第２の実施の形態の処理機能を実現することができる。なお、第１の実施の形態に示した情報処理装置１も、図３に示した分析装置１００と同様のハードウェアにより実現することができる。
【００６８】
図４は、分析装置の機能の一例を示すブロック図である。分析装置１００は、メッセージ収集部１１０、Ｗｅｂメッセージ記憶部１２０、アプリケーションメッセージ記憶部１３０、ＤＢメッセージ記憶部１４０、時刻補正部１５０、およびトランザクション分析部１６０を有する。
【００６９】
メッセージ収集部１１０は、アプリケーションサーバ４２、および各キャプチャ装置４４，４５からメッセージを収集する。例えばメッセージ収集部１１０は、キャプチャ装置４４から、キャプチャ装置４４が記憶しているＷｅｂメッセージを取得し、Ｗｅｂメッセージ記憶部１２０に格納する。またメッセージ収集部１１０は、アプリケーションサーバ４２から、アプリケーションサーバ４２が記憶しているアプリケーションメッセージを取得し、アプリケーションメッセージ記憶部１３０に格納する。さらにメッセージ収集部１１０は、キャプチャ装置４５から、キャプチャ装置４５が記憶しているＤＢメッセージを取得し、ＤＢメッセージ記憶部１４０に格納する。
【００７０】
Ｗｅｂメッセージ記憶部１２０は、端末装置３１〜３３とＷｅｂサーバ４１との間で送受信されたＷｅｂメッセージを記憶する。例えばＲＡＭ１０２またはＨＤＤ１０３の記憶領域の一部が、Ｗｅｂメッセージ記憶部１２０として使用される。
【００７１】
アプリケーションメッセージ記憶部１３０は、Ｗｅｂサーバ４１とアプリケーションサーバ４２との間で送受信されたアプリケーションメッセージを記憶する。例えばＲＡＭ１０２またはＨＤＤ１０３の記憶領域の一部が、アプリケーションメッセージ記憶部１３０として使用される。
【００７２】
ＤＢメッセージ記憶部１４０は、アプリケーションサーバ４２とＤＢサーバ４３との間で送受信されたＤＢメッセージを記憶する。例えばＲＡＭ１０２またはＨＤＤ１０３の記憶領域の一部が、ＤＢメッセージ記憶部１４０として使用される。
【００７３】
時刻補正部１５０は、Ｗｅｂメッセージ、アプリケーションメッセージ、ＤＢメッセージ間の時刻情報の補正値を計算する。時刻補正部１５０は、算出した補正値により、いずれかのメッセージ記憶部内のメッセージの時刻を補正する。
【００７４】
トランザクション分析部１６０は、メッセージ記憶部に格納されたメッセージを、補正後の時刻に従って時系列に並べる。そしてトランザクション分析部１６０は、時系列に並べられたメッセージに基づいて、同一トランザクションで送信されたメッセージを関連付ける。そして関連付けられたメッセージの情報に基づいて、トランザクションの各サーバでの処理時間などを分析する。なお、メッセージに基づくトランザクションの分析技術は、例えば、前述の「特許文献１」に示す特開２００６−１１６８３号公報に開示されている。
【００７５】
なお、図４に示した各要素間を接続する線は通信経路の一部を示すものであり、図示した通信経路以外の通信経路も設定可能である。
以上のような機能を有する分析装置１００により、Ｗｅｂ３階層システムで実行されたトランザクションが再現され、トランザクションの分析が行われる。
【００７６】
なお、メッセージ収集部１１０は、図１に示した第１の実施の形態における取得手段１ｃの一例である。時刻補正部１５０は、図１に示した第１の実施の形態における判断手段１ｄ、生成手段１ｅ、および補正手段１ｆを合わせた機能の一例である。Ｗｅｂメッセージ記憶部１２０は、図１に示した第１の実施の形態における第１の記憶手段１ａの一例である。アプリケーションメッセージ記憶部１３０は、Ｗｅｂメッセージとアプリケーションメッセージとの間の時刻補正の補正値を決定する際には、図１に示した第１の実施の形態における第２の記憶手段１ｂの一例となる。またアプリケーションメッセージ記憶部１３０は、アプリケーションメッセージとＤＢメッセージとの間の時刻補正の補正値を決定する際には、図１に示した第１の実施の形態における第１の記憶手段１ａの一例となる。ＤＢメッセージ記憶部１４０は、図１に示した第１の実施の形態における第２の記憶手段１ｂの一例である。
【００７７】
次に、トランザクション分析処理の手順について説明する。
図５は、トランザクション分析処理の手順を示すフローチャートである。以下、図５に示す処理をステップ番号に沿って説明する。
【００７８】
［ステップＳ１０１］メッセージ収集部１１０は、アプリケーションサーバ４２、および各キャプチャ装置４４，４５からメッセージ情報を収集する。例えばメッセージ収集部１１０は、管理者の操作などによるトランザクション分析の指示が入力されると、メッセージ情報を収集する。メッセージ収集部１１０は、キャプチャ装置４４から収集したメッセージ情報をＷｅｂメッセージ記憶部１２０に格納する。またメッセージ収集部１１０は、アプリケーションサーバ４２から収集したメッセージ情報をアプリケーションメッセージ記憶部１３０に格納する。さらにメッセージ収集部１１０は、キャプチャ装置４５から収集したメッセージ情報をＤＢメッセージ記憶部１４０に格納する。
【００７９】
［ステップＳ１０２］時刻補正部１５０は、メッセージに付与された時刻を補正する。時刻を補正する際には、時刻補正部１５０は、階層ごとのメッセージに付与された時刻を同一の補正値で補正するメッセージの集合と、その集合のメッセージに適用する補正値とを算出する。例えば時刻補正部１５０は、Ｗｅｂメッセージの時刻を基準として、アプリケーションメッセージの時刻の補正値を算出する。また時刻補正部１５０は、アプリケーションメッセージの時刻を基準として、ＤＢメッセージの補正値を算出する。そして、時刻補正部１５０は、メッセージの集合ごとに、その集合のメッセージに基づいて算出した補正値によって、いずれかのメッセージ記憶部内のメッセージの時刻を補正する。なお時刻補正処理の詳細は後述する（図１９参照）。
【００８０】
［ステップＳ１０３］トランザクション分析部１６０は、Ｗｅｂメッセージ記憶部１２０、アプリケーションメッセージ記憶部１３０、およびＤＢメッセージ記憶部１４０からメッセージを取り出す。そしてトランザクション分析部１６０は、トランザクションの分析を行う。
【００８１】
次に、メッセージ収集部１１０で収集されたメッセージ情報について、図６〜図８を参照して説明する。
図６は、Ｗｅｂメッセージ記憶部のデータ構造の一例を示す図である。Ｗｅｂメッセージ記憶部１２０内には、Ｗｅｂメッセージ管理テーブル１２１が設けられている。Ｗｅｂメッセージ管理テーブル１２１には、タイムスタンプ、種別、ＵＲＬ（Uniform Resource Locator）、セッションＩＤ、およびトランザクションＩＤの欄が設けられている。Ｗｅｂメッセージ管理テーブル１２１の各行に、Ｗｅｂメッセージに関する情報が登録されている。
【００８２】
タイムスタンプの欄には、Ｗｅｂメッセージをキャプチャ装置４４が取得した時刻（タイムスタンプ）が設定される。このタイムスタンプは、キャプチャ装置４４の内部時計に基づいて設定されている。
【００８３】
種別の欄には、Ｗｅｂメッセージの種別が設定される。種別は、例えばリクエストメッセージとレスポンスメッセージとがある。図６の例では、リクエストメッセージの場合、種別の欄に「ｒｅｑ」と設定される。またレスポンスメッセージの場合、種別の欄に「ｒｅｓ」と設定される。
【００８４】
ＵＲＬの欄には、リクエストメッセージにおけるアクセス先のＵＲＬが設定される。
セッションＩＤの欄には、端末装置３１〜３３とＷｅｂサーバ４１との間の通信のセッションを一意に示すＩＤ（セッションＩＤ）が設定される。セッションＩＤが同じリクエストメッセージとレスポンスメッセージとの対（メッセージ対）により、そのリクエストメッセージに応じて実行された処理の開始時刻と終了時刻とが示される。
【００８５】
トランザクションＩＤの欄には、端末装置からの要求に応じて実行されるトランザクションを一意に識別するＩＤ（トランザクションＩＤ）が設定される。メッセージ対のレスポンスメッセージに示されるトランザクションＩＤにより、そのメッセージ対に対応する処理のトランザクションが一意に示される。
【００８６】
図７は、アプリケーションメッセージ記憶部のデータ構造の一例を示す図である。アプリケーションメッセージ記憶部１３０内には、アプリケーションメッセージ管理テーブル１３１が設けられている。アプリケーションメッセージ管理テーブル１３１には、スタート／エンド、トランザクションＩＤ、タイムスタンプ、クラス名、およびメソッド名の欄が設けられている。アプリケーションメッセージ管理テーブル１３１の各行に、アプリケーションメッセージに関する情報が登録されている。
【００８７】
スタート／エンドの欄には、アプリケーションサーバ４２において、処理開始の契機となるリクエストメッセージを受信したのか、処理の完了により、処理結果を示すレスポンスメッセージを送信したのかを示す情報が設定される。アプリケーションサーバ４２がリクエストメッセージを受信したのであれば、処理の開始（スタート）を示すフラグ「Ｓ」が設定される。アプリケーションサーバ４２がレスポンスメッセージを送信したのであれば、処理の終了（エンド）を示すフラグ「Ｅ」が設定される。
【００８８】
トランザクションＩＤの欄には、アプリケーションサーバ４２で実行された処理に対応するトランザクションのトランザクションＩＤが設定される。
タイムスタンプの欄には、アプリケーションサーバ４２がメッセージを受信または送信した時刻が設定される。
【００８９】
クラス名の欄には、トランザクションの処理の一環として、アプリケーションサーバ４２で実行された処理のクラス名が設定される。
メソッド名の欄には、トランザクションの処理の一環として、アプリケーションサーバ４２で実行された処理のメソッド名が設定される。
【００９０】
なお、アプリケーションサーバ４２における特定の処理の開始のアプリケーションメッセージと終了のアプリケーションメッセージとには、同じトランザクションＩＤ、クラス名、メソッド名が設定される。従ってトランザクションＩＤ、クラス名、メソッド名が同じ、スタート（Ｓ）のアプリケーションメッセージとエンド（Ｅ）のアプリケーションメッセージとにより、メッセージ対が形成される。形成されたメッセージ対それぞれのタイムスタンプにより、そのトランザクションＩＤに対応する処理の実行期間が求められる。
【００９１】
また図７の例では、同じトランザクションＩＤの複数のスタートのアプリケーションメッセージが存在する。これは、Ｗｅｂサーバ４１が、１つのトランザクション中で複数回、アプリケーションサーバ４２にリクエストメッセージを送信したためである。
【００９２】
図８は、ＤＢメッセージ記憶部のデータ構造の一例を示す図である。ＤＢメッセージ記憶部１４０内には、ＤＢメッセージ管理テーブル１４１が設けられている。ＤＢメッセージ管理テーブル１４１には、識別子、タイムスタンプ、トランザクションＩＤ、種別＋プロトコル、ＳＱＬコマンド／データの欄が設けられている。ＤＢメッセージ管理テーブル１４１の各行に、ＤＢメッセージに関する情報が登録されている。
【００９３】
識別子の欄には、アプリケーションサーバ４２とＤＢサーバ４３との間のセッション内でのメッセージに付与される識別子が設定される。アプリケーションサーバ４２からＤＢサーバ４３に送信されたリクエストメッセージと、そのリクエストメッセージに応答してＤＢサーバ４３から送信されるレスポンスメッセージとには、同じ識別子が付与される。
【００９４】
タイムスタンプの欄には、キャプチャ装置４５によってＤＢメッセージに付与されたタイムスタンプが設定される。
トランザクションＩＤの欄には、ＤＢメッセージに付与されたトランザクションＩＤが設定される。
【００９５】
種別＋プロトコルの欄には、ＤＢメッセージがリクエストメッセージなのかレスポンスメッセージなのかの種別と、ＤＢメッセージのプロトコルが設定される。
ＳＱＬコマンド／データの欄には、ＤＢメッセージに含まれていたＳＱＬコマンドとデータとが設定される。
【００９６】
ＤＢメッセージ管理テーブル１４１における同じ識別子のリクエストメッセージとレスポンスメッセージとを対応付けることで、メッセージ対を形成することができる。
以下、アプリケーションメッセージとＤＢメッセージとの間の時刻の補正値の算出例について説明する。
【００９７】
図９は、アプリケーション層とＤＢ層とのメッセージ対の一例を示す図である。図９には、アプリケーションメッセージとＤＢメッセージとを、簡略的に示している。図９において、アプリケーションメッセージについては、タイムスタンプに示された時刻を「time」、トランザクションＩＤを「tid」、スタートエンドフラグを「S/E」、その他の情報を「info」としている。またＤＢメッセージについては、タイムスタンプに示された時刻を「time」、トランザクションＩＤを「tid」、種別を「Req/Res」、その他の情報を「info」としている。種別の「Req」は、リクエストメッセージを表し、「Res」はレスポンスメッセージを表している。アプリケーション層のメッセージ対５１〜５４は、それぞれにトランザクションＩＤが付与されている。
【００９８】
図９の例では、アプリケーションメッセージによる４つのメッセージ対５１〜５４が生成されている。また、ＤＢメッセージによる７つのメッセージ対６１〜６７が生成されている。ＤＢ層のメッセージ対６１〜６７のうち、３つのメッセージ対６２，６４，６７のリクエストメッセージにのみ、トランザクションＩＤが付与されている。
【００９９】
このようなメッセージ対を構成する各メッセージをタイムスタンプに示された時刻によって時系列に並べると、メッセージに付与された時刻の前後関係が明確となる。
図１０は、時刻補正前のメッセージの送信タイミングの一例を示す図である。図１０では、図９に示したメッセージ対５１〜５４，６１〜６７を構成するメッセージが、時系列に並べられている。各メッセージに付与されている補正する前の時刻に基づいて、アプリケーションサーバ４２とＤＢサーバ４３とにおける処理の実行期間を判断すると以下のようになる。
【０１００】
アプリケーション層のメッセージ対５１〜５４により、トランザクションＩＤに対応するトランザクションの処理が、アプリケーションサーバ４２で実行された期間が示される。メッセージ対５１を構成するリクエストメッセージ５１ａとレスポンスメッセージ５１ｂとにより、トランザクションＩＤ「tid1」の処理の実行期間は、時刻「1.00」から「1.12」となる。メッセージ対５２を構成するリクエストメッセージ５２ａとレスポンスメッセージ５２ｂとにより、トランザクションＩＤ「tid2」の１回目の処理の実行期間は、時刻「1.33」から「1.41」となる。メッセージ対５３を構成するリクエストメッセージ５３ａとレスポンスメッセージ５３ｂとにより、トランザクションＩＤ「tid2」の２回目の処理の実行期間は、時刻「1.42」から「1.49」となる。メッセージ対５４を構成するリクエストメッセージ５４ａとレスポンスメッセージ５４ｂとにより、トランザクションＩＤ「tid3」の処理の実行期間は、時刻「1.55」から「1.68」となる。
【０１０１】
またＤＢ層のメッセージ対６１〜６７により、トランザクションＩＤに対応するトランザクションの処理の少なくとも一部について、ＤＢサーバ４３で実行された期間が示される。メッセージ対６２を構成するリクエストメッセージ６２ａとレスポンスメッセージ６２ｂとにより、トランザクションＩＤ「tid1」の処理の実行期間は、時刻「1.04」から「1.05」となる。メッセージ対６４を構成するリクエストメッセージ６４ａとレスポンスメッセージ６４ｂとにより、トランザクションＩＤ「tid2」の処理の実行期間は、時刻「1.41」から「1.42」となる。メッセージ対６７を構成するリクエストメッセージ６７ａとレスポンスメッセージ６７ｂとにより、トランザクションＩＤ「tid3」の処理の実行期間は、時刻「1.55」から「1.56」となる。
【０１０２】
また、ＤＢ層の一部のメッセージ対６１，６３，６５，６６にはトランザクションＩＤが付与されておらず、どのトランザクションの処理を実行したのかが不明である。メッセージ対６１を構成するリクエストメッセージ６１ａとレスポンスメッセージ６１ｂとにより、時刻「1.02」から「1.03」の期間に、いずれかのトランザクションの処理が実行されている。メッセージ対６３を構成するリクエストメッセージ６３ａとレスポンスメッセージ６３ｂとにより、時刻「1.33」から「1.34」の期間に、いずれかのトランザクションの処理が実行されている。メッセージ対６５を構成するリクエストメッセージ６５ａとレスポンスメッセージ６５ｂとにより、時刻「1.43」から「1.44」の期間に、いずれかのトランザクションの処理が実行されている。メッセージ対６６を構成するリクエストメッセージ６６ａとレスポンスメッセージ６６ｂとにより、時刻「1.53」から「1.54」の期間に、いずれかのトランザクションの処理が実行されている。
【０１０３】
ここで現実のトランザクションの処理の実行においては、処理を実行しているアプリケーションサーバ４２からＤＢサーバ４３への処理の呼び出し（リクエストメッセージの送信）が行われる。そして、処理の実行が完了したＤＢサーバ４３から、アプリケーションサーバ４２へ応答（レスポンスメッセージの送信）が行われる。そのため、時刻の補正が正しく行われた場合、アプリケーションサーバ４２のメッセージ対５１〜５４とＤＢサーバ４３のメッセージ対６１〜６７との間では、以下の２つの条件が満たされる。
【０１０４】
第１の条件は、トランザクションＩＤが付与されたＤＢサーバ４３の処理の実行期間は、同じトランザクションＩＤのアプリケーションサーバ４２の処理の実行期間に包含されることである。すなわち、ＤＢサーバ４３の処理の開始時刻は、同一トランザクションＩＤのアプリケーションサーバ４２の処理の開始時刻以降である。またＤＢサーバ４３の処理の終了時刻は、同一トランザクションＩＤのアプリケーションサーバ４２の処理の終了時刻以前である。第２の実施の形態では、このような同一トランザクションＩＤの処理間での包含関係の条件を満たすような下位層（図１０の例ではＤＢ層）のメッセージ対を、トランザクションＩＤが適合しているメッセージ対と呼ぶ。そして、トランザクションＩＤが付与された下位層のメッセージ対のうち、トランザクションＩＤが適合しているメッセージ対の割合を適合率と呼ぶ。
【０１０５】
第２の条件は、トランザクションＩＤが付与されていないＤＢサーバ４３の処理の実行期間は、アプリケーションサーバ４２のいずれかの処理の実行期間に包含されることである。すなわち、ＤＢサーバ４３の各処理に関して、その処理の開始時刻以前に実行が開始され、その処理の終了時刻以降に実行が終了するような、アプリケーションサーバ４２の処理が存在する。第２の実施の形態では、このようなトランザクションＩＤに拘束されない包含関係の条件を満たすような下位層（図１０の例ではＤＢ層）のメッセージ対を、カバーされたメッセージ対と呼ぶ。そして、下位層のすべてのメッセージ対のうち、カバーされたメッセージ対の割合をカバー率と呼ぶ。
【０１０６】
図１０の例では、トランザクションＩＤが付与されたＤＢ層の３つのメッセージ対６２，６４，６７のうち、１つのメッセージ対６４はトランザクションＩＤが適合していない。従って、適合率は６６．７％となる。またＤＢ層の７つのメッセージ対６１〜６７のうち、呼び出し元となる処理にカバーされていない２つのメッセージ対６４，６６が存在する。従って、カバー率は７１．４％となる。
【０１０７】
このように時刻を補正しないままでは、適合率・カバー率共に１００％とならない。実際のトランザクションでは、適合率・カバー率が１００％となるような順序で、各メッセージが送信されているはずである。そこで時刻補正部１５０は、適合率・カバー率が共に１００％となるような補正値を求める。
【０１０８】
ただし、同一の補正値を適用するメッセージ対が過大な場合、適合率とカバー率とが共に１００％となる補正値が存在しない場合がある。以下、図１１〜図１３を参照し、メッセージ対の量と、補正値候補ごとの適合率・カバー率との関係について説明する。
【０１０９】
図１１は、３時間分のメッセージに対して同一の補正値を適用する場合の、補正値候補に応じた適合率とカバー率との推移の一例を示す図である。図１１では、横軸に補正値候補を示し、縦軸に適合率およびカバー率を示している。図１１に示すように、３時間分のメッセージの時刻を同一の補正値候補で補正しようとすると、適合率とカバー率との最高値は、１３％程度に留まってしまう。
【０１１０】
図１２は、１５分間分のメッセージに対して同一の補正値を適用する場合の、補正値候補に応じた適合率とカバー率との推移の一例を示す図である。図１２では、横軸に補正値候補を示し、縦軸に適合率およびカバー率を示している。なお図１２のグラフは、図１１のグラフ作成時に用いた３時間分のメッセージのうちの、先頭の１５分間分のメッセージを用いて、補正値候補に応じた適合率とカバー率とを計算したものである。図１２に示すように、１５分間分のメッセージの時刻を同一の補正値で補正しようとすると、適合率の最高値は２３％程度まで高くなり、カバー率の最高値は２４％程度まで高くなる。しかし、適合率・カバー率共に、１００％には達していない。
【０１１１】
図１３は、１分間分のメッセージに対して同一の補正値を適用する場合の、補正値候補に応じた適合率とカバー率との推移の一例を示す図である。図１３では、横軸に補正値候補を示し、縦軸に適合率およびカバー率を示している。なお図１３のグラフは、図１１のグラフ作成時に用いた３時間分のメッセージのうちの、先頭の１分間分のメッセージを用いて、補正値候補に応じた適合率とカバー率とを計算したものである。
【０１１２】
図１１〜図１３に示したように、同一補正値を適用するメッセージ数が大量になると、適合率とカバー率とを共に１００％にする補正値候補が存在しないことがある。そこで第２の実施の形態では、同一の補正値候補を適用するメッセージの範囲を制限する。このとき、同一の補正値を適用するメッセージの数が少なすぎると、適合率とカバー率とが共に１００％になる補正値候補に幅が生じる。図１３の例では、補正値候補が0.0195秒〜0.0198秒の範囲で、適合率とカバー率とが共に１００％になる。このように、適合率とカバー率とが共に１００％になる補正値候補に幅がある場合、その幅が広すぎると、どの補正値候補が補正値として適切なのかを判断するのが難しい。
【０１１３】
そこで第２の実施の形態では、適合率・カバー率が共に１００％となるような補正値が得られるような、より多くのメッセージに対して、同一の補正値を適用する。
次に、下位層（図９、図１０の例ではＤＢ層）の個々のメッセージ対に対する時刻補正範囲の決定方法について説明する。メッセージ対に対する時刻補正範囲は、トランザクションＩＤが付与されているか否かによって異なる。
【０１１４】
まずトランザクションＩＤが付与されているメッセージ対に対する、時刻補正範囲について説明する。トランザクションＩＤが付与されているメッセージ対に関しては、処理の実行期間が、同じトランザクションＩＤを持つ上位層のメッセージ対に対応する処理の実行期間に包含される範囲で、時刻補正が可能である。
【０１１５】
なお厳密にはアプリケーション層の処理と、その処理から呼び出されるＤＢ層の処理との開始時刻同士、または終了時刻同士がまったく同時ということはなく、多少の時間差がある。しかし、例えば極めて短時間の時間差しかない場合、外部からの観測上は、上位層の処理と下位層の処理との開始時刻同士または終了時刻同士が同時になることもあり得る。そこで第２の実施の形態では、時刻補正範囲を閉区間で定義する。すなわち、上位層の処理の開始時刻（リクエストメッセージの時刻）と、その処理から呼び出される下位層の処理の開始時刻（リクエストメッセージの時刻）とが同時であることを許容する。また上位層の処理の終了時刻（レスポンスメッセージの時刻）と、その処理から呼び出される下位層の処理の終了時刻（レスポンスメッセージの時刻）とが同時であることを許容する。
【０１１６】
ただし、タイムスタンプの時刻の単位が非常に微細である場合など、外部からの観測上においても、上位層の処理と下位層の処理との開始時刻または終了時刻が同時になることを抑止できる場合には、時刻補正範囲を開区間で定義してもよい。
【０１１７】
図１４は、トランザクションＩＤが付与されたメッセージ対に対する時刻補正範囲の第１の例を示す図である。図１４には、ＤＢ層のメッセージ対に対応する処理７２の実行期間が、同じトランザクションＩＤのアプリケーション層のメッセージ対に対応する処理７１の実行期間に包含されている場合の例が示されている。この場合、処理７１の開始時刻と処理７２の開始時刻との差分ｔ1以下の時間を、処理７２に対応するメッセージの時刻から減算する補正を行うことができる。また処理７１の終了時刻と処理７２の終了時刻との差分ｔ2以下の時間を、処理７２に対応するメッセージの時刻に加算する補正を行うことができる。すなわち補正値が［−ｔ1，ｔ2］の範囲内であれば、処理７２に対応するメッセージの時刻を補正しても、処理７２の実行期間は処理７１の実行期間に包含される。
【０１１８】
なお第２の実施の形態では、補正値が閉区間で定義されている。そのため、時刻補正範囲には、「−ｔ1」および「ｔ2」も含まれる。もし時刻補正範囲を開区間で定義した場合、時間補正の範囲が（−ｔ1，ｔ2）と表され、時間補正の範囲に「−ｔ1」および「ｔ2」は含まれない。
【０１１９】
図１５は、トランザクションＩＤが付与されたメッセージ対に対する時刻補正範囲の第２の例を示す図である。図１５には、ＤＢ層のメッセージ対に対応する処理７４の実行期間が、同じトランザクションＩＤのアプリケーション層のメッセージ対に対応する処理７３の実行期間に包含されていない場合の例が示されている。この場合、処理７３の開始時刻と処理７４の開始時刻との差分ｔ3以上の時間を、処理７４に対応するメッセージの時刻に加算する補正を行うことができる。ただし、加算する時間は、処理７３の終了時刻と処理７４の終了時刻との差分ｔ4以下であることが要求される。すなわち補正値が［ｔ3，ｔ4］の範囲内とすることで、処理７４に対応するメッセージの時刻補正後における処理７４の実行期間は、処理７３の実行期間に包含される。
【０１２０】
次に、トランザクションＩＤが付与されていないメッセージ対に対する、時刻補正範囲について説明する。トランザクションＩＤが付与されていないメッセージ対に関しては、処理の実行期間が、上位層のいずれかのメッセージ対に対応する処理の実行期間に包含される範囲で、時刻補正が可能である。
【０１２１】
図１６は、トランザクションＩＤが付与されていないメッセージ対に対する時刻補正範囲の一例を示す図である。トランザクションＩＤが付与されていないＤＢ層のメッセージ対に対応する処理８５の実行期間が、アプリケーション層のメッセージ対に対応する処理８１〜８４それぞれの実行期間と比較される。そして、ＤＢ層の処理８５の実行期間が、比較対象のアプリケーション層のいずれかの処理８１〜８４の実行期間に包含される範囲が、すべて時刻補正範囲となる。
【０１２２】
図１６の例では、処理８１の開始時刻と処理８５の開始時刻との差分ｂ３以下、処理８２の終了時刻と処理８５の終了時刻との差分ｂ２以上の範囲での減算が、時刻補正範囲の１つとなる。この範囲は［−ｂ３，−ｂ２］と表される。
【０１２３】
また、処理８３の開始時刻と処理８５の開始時刻との差分ｂ１以下の減算から、処理８５の終了時刻と処理８３の終了時刻との差分ａ１以上の加算の範囲が、時刻補正範囲の１つとなる。この範囲は［−ｂ１，ａ１］と表される。
【０１２４】
また、処理８５の開始時刻と処理８４の開始時刻との差分ａ２以下、処理８５の終了時刻と処理８４の終了時刻との差分ａ３以上の加算の範囲が、時刻補正範囲の１つとなる。この範囲は［ａ２，ａ３］と表される。
【０１２５】
これらの各時刻補正範囲の論理和が、処理８５のリクエストメッセージとレスポンスメッセージとによるメッセージ対の時刻補正範囲となる。
以上のようにして、個々のメッセージ対ごとの時刻補正範囲を決定することができる。時刻補正部１５０は、複数のメッセージ対に基づいて時刻補正範囲を決定する場合、個々のメッセージ対の時刻補正範囲の重複部分を、複数のメッセージ対に対する時刻補正範囲とする。例えば時刻補正部１５０は、下位層（例えばＤＢ層）のメッセージ対を時刻の古い順に選択し、選択するごとに時刻補正範囲を更新していく。
【０１２６】
図１７は、時刻補正範囲の更新例を示す図である。図１７には、旧時刻補正範囲、追加時刻補正範囲、および新時刻補正範囲が示されている。旧時刻補正範囲は、以前に選択したメッセージ対に基づいて判断された時刻補正範囲である。追加時刻補正範囲は、新たに選択したメッセージ対に基づく時刻補正範囲である。新時刻補正範囲は、以前に選択したメッセージ対と新たに選択したメッセージ対とに基づいた時刻補正範囲である。
【０１２７】
図１７に示すように、新時刻補正範囲は、旧時刻補正範囲と追加時刻補正範囲との重複部分となっている。
このようにして時刻補正範囲を更新していくことで、時刻補正範囲は徐々に狭くなっていく。
【０１２８】
なお第２の実施の形態では、メッセージ対の時刻補正範囲を求める際に、最初は、トランザクションＩＤが付与されたメッセージ対に基づいて時刻補正範囲を求める。そして、その時刻補正範囲を、順次選択したメッセージ対の時刻補正範囲によって更新していく。このように最初に求める時刻補正範囲を、トランザクションＩＤが付与されたメッセージ対に基づいて決定することで、最初にトランザクションＩＤが付与されていないメッセージ対に基づいて時刻補正範囲を求める場合よりも、処理の効率化が図れる。すなわち、トランザクションＩＤが付与されていないメッセージ対に基づいて時刻補正範囲を求める際には、新たに時刻補正範囲を生成する場合よりも、既存の時刻補正範囲の制約を受けていた場合の方が、処理量が少なくて済む。
【０１２９】
図１８は、時刻補正範囲の制約の有無による処理量の違いを示す図である。図１８には、選択したＤＢ層のメッセージ対に対応する処理９６の実行期間と、アプリケーション層のメッセージ対に対応する処理９１〜９５の実行期間とを示している。またトランザクションＩＤが付与されたメッセージ対に基づく時刻補正範囲９７が示されている。
【０１３０】
ここで時刻補正範囲９７が先に決定されておらず、選択したメッセージ対の時刻補正範囲の決定に際して期間の制約がない場合、アプリケーション層のすべての処理９１〜９５が、ＤＢ層の処理の呼び出し元である可能性が残されている。そのため、ＤＢ層の処理９６の実行期間と、アプリケーション層の５つの処理９１〜９５それぞれの実行期間との比較により、ＤＢ層の処理９６に対応するメッセージ対の時刻補正範囲が決定される。
【０１３１】
他方、時刻補正範囲９７が先に決定されている場合、選択したメッセージ対の時刻補正範囲が、時刻補正範囲９７によって制約を受ける。この場合、時刻補正範囲９７に包含される実行期間の処理９３，９４のみが、ＤＢ層の処理９６の呼び出し元である可能性がある。そのため、ＤＢ層の処理９６の実行期間と、アプリケーション層の２つの処理９３〜９４それぞれの実行期間との比較により、ＤＢ層の処理９６に対応するメッセージ対の時刻補正範囲が決定される。
【０１３２】
このように、トランザクションＩＤが付与されたメッセージ対に基づく時刻補正範囲９７を先に決定しておけば、トランザクションＩＤが付与されていないメッセージ対の時刻補正範囲の決定の際の比較対象が少なくなり、処理効率が向上する。すなわち、トランザクションＩＤが付与されたメッセージ対に基づく時刻補正範囲の制約がない場合、どれだけずらしても包含関係さえ満たせば親子関係の候補になり得るので、親候補が多数となり、効率よく補正値を求めるのが困難である。他方、トランザクションＩＤが付与されたメッセージ対に基づく時刻補正範囲の制約があれば、親候補が限定され、効率的な時刻補正範囲の探索が可能になる。そこで、第２の実施の形態では、トランザクションＩＤが付与されていないメッセージ対の時刻補正範囲の判断に先立って、トランザクションＩＤが付与されているメッセージ対の時刻補正範囲を判断する。これにより、常に効率的な処理が行われる。
【０１３３】
次に、時刻補正処理の手順について説明する。なお、以下の説明では、アプリケーション層とＤＢ層との間の時刻のずれを補正する場合を例にとって、時刻補正処理を説明する。
【０１３４】
図１９は、時刻補正処理の手順を示すフローチャートである。以下、図１９に示す処理をステップ番号に沿って説明する。
［ステップＳ１１］時刻補正部１５０は、集合Ｓを初期化する。例えば時刻補正部１５０は、集合Ｓを空集合にする。
【０１３５】
［ステップＳ１２］時刻補正部１５０は、下位層（ＤＢ層）のメッセージ対を１つ取得する。例えば時刻補正部１５０は、ＤＢメッセージ記憶部１４０内のメッセージ対から、リクエストメッセージに付与された時刻が早い順に取得する。
【０１３６】
［ステップＳ１３］時刻補正部１５０は、取得したメッセージ対にトランザクションＩＤが付与されているか否かを判断する。例えば時刻補正部１５０は、取得したメッセージ対のリクエストメッセージとレスポンスメッセージとのいずれか一方に、トランザクションＩＤが含まれていれば、そのトランザクションＩＤを、メッセージ対に付与されたトランザクションＩＤと判断する。トランザクションＩＤが付与されている場合、時刻補正部１５０は処理をステップＳ１７に進める。また時刻補正部１５０は、トランザクションＩＤが付与されていない場合、処理をステップＳ１４に進める。
【０１３７】
［ステップＳ１４］時刻補正部１５０は、トランザクションＩＤが付与されたメッセージ対に基づいて求められた時刻補正範囲による、補正時間の制約があるか否かを判断する。例えば時刻補正部１５０は、同時補正集合の時刻補正範囲として、有限の範囲が設定されている場合、補正時間の制約があると判断する。時刻補正部１５０は、補正時間の制約がある場合、処理をステップＳ１６に進める。また時刻補正部１５０は、補正時間の制約がない場合、処理をステップＳ１５に進める。
【０１３８】
［ステップＳ１５］時刻補正部１５０は、補正時間の制約がない場合、取得したメッセージ対を集合Ｓに追加する。その後、時刻補正部１５０は処理をステップＳ２９に進める。
【０１３９】
［ステップＳ１６］時刻補正部１５０は、補正時間の制約がある場合、取得したメッセージ対に基づいて、同時補正集合の時刻補正範囲を更新する。例えば時刻補正部１５０は、アプリケーションメッセージ記憶部１３０に格納されているアプリケーション層のメッセージ対のうち、対応する処理の実行期間が、同時補正集合の時刻補正範囲に包含されるメッセージ対を抽出する。時刻補正部１５０は、アプリケーションメッセージ記憶部１３０から抽出したメッセージ対に対応する処理の実行期間と、ステップＳ１２で取得したメッセージ対に対応する処理の実行期間とを比較し、取得したメッセージ対の時刻補正範囲を判断する。そして時刻補正部１５０は、同時補正集合の時刻補正範囲と取得したメッセージ対の時刻補正範囲との重複範囲を、同時補正集合の新たな時刻補正範囲として設定する。その後、時刻補正部１５０は処理をステップＳ２０に進める。
【０１４０】
［ステップＳ１７］取得したメッセージ対にトランザクションＩＤが付与されていた場合、時刻補正部１５０は、呼び出し元のメッセージ対を求め、同時補正集合の時刻補正範囲を更新する。例えば時刻補正部１５０は、取得したメッセージ対と同じトランザクションＩＤが付与されているメッセージ対を、アプリケーションメッセージ記憶部１３０から抽出する。次に時刻補正部１５０は、抽出したメッセージ対に対応する処理の実行期間と、ステップＳ１２で取得したメッセージ対に対応する処理の実行期間とを比較し、取得したメッセージ対の時刻補正範囲を判断する。そして時刻補正部１５０は、同時補正集合の時刻補正範囲と取得したメッセージ対の時刻補正範囲との重複範囲を、同時補正集合の新たな時刻補正範囲として設定する。
【０１４１】
なお、同時補正集合の時刻補正範囲と取得したメッセージ対の時刻補正範囲とに重複範囲が存在しない場合、同時補正集合の時刻補正範囲として空集合が設定される。同時補正集合の時刻補正範囲が空集合に更新された場合、時刻補正部１５０は、更新前の時刻補正範囲をＲＡＭ１０２などのメモリに保存する。
【０１４２】
［ステップＳ１８］時刻補正部１５０は、集合Ｓが空集合か否かを判断する。時刻補正部１５０は、集合Ｓが空集合であれば、処理をステップＳ２０に進める。また時刻補正部１５０は、集合Ｓが空集合でなければ、処理をステップＳ１９に進める。
【０１４３】
［ステップＳ１９］時刻補正部１５０は、集合Ｓに含まれるＤＢ層の各メッセージ対を用いて同時補正集合の時刻補正範囲を更新する。例えば時刻補正部１５０は、集合Ｓに含まれるメッセージ対を１つずつ選択する。次に時刻補正部１５０は、アプリケーションメッセージ記憶部１３０に格納されているアプリケーション層のメッセージ対のうち、対応する処理の実行期間が、同時補正集合の時刻補正範囲に包含されるメッセージ対を抽出する。時刻補正部１５０は、アプリケーションメッセージ記憶部１３０から抽出したメッセージ対に対応する処理の実行期間と、選択したメッセージ対に対応する処理の実行期間とを比較し、選択したメッセージ対の時刻補正範囲を判断する。そして時刻補正部１５０は、同時補正集合の時刻補正範囲と選択したメッセージ対の時刻補正範囲との重複範囲を、同時補正集合の新たな時刻補正範囲として設定する。
【０１４４】
なお、同時補正集合の時刻補正範囲と選択したメッセージ対の時刻補正範囲とに重複範囲が存在しない場合、同時補正集合の時刻補正範囲として空集合が設定される。同時補正集合の時刻補正範囲が空集合に更新された場合、時刻補正部１５０は、更新前の時刻補正範囲をＲＡＭ１０２などのメモリに保存する。
【０１４５】
［ステップＳ２０］時刻補正部１５０は、同時補正集合の時刻補正範囲が空集合か否かを判断する。同時補正集合の時刻補正範囲が空集合でなければ、時刻補正部１５０は、処理をステップＳ２１に進める。また同時補正集合の時刻補正範囲が空集合であれば、時刻補正部１５０は、処理をステップＳ２２に進める。
【０１４６】
［ステップＳ２１］時刻補正部１５０は、同時補正集合の時刻補正範囲が空集合でなければ、取得したメッセージ対を同時補正集合に追加する。その後、時刻補正部１５０は、処理をステップＳ２９に進める。
【０１４７】
［ステップＳ２２］時刻補正部１５０は、ステップＳ１６，Ｓ１９における更新前の同時補正集合の時刻補正範囲内の１点を、現在の同時補正集合に含まれているメッセージ対の時刻の補正値に決定する。そして時刻補正部１５０は、決定した補正値により、同時補正集合に含まれるメッセージ対のタイムスタンプの時刻を補正する。例えば時刻補正部１５０は、更新前の同時補正集合の時刻補正範囲内の中点を補正値とする。また時刻補正部１５０は、更新前の同時補正集合の時刻補正範囲内の最も小さい値、または最も大きい値を補正値とすることもできる。次に時刻補正部１５０は、同時補正集合に含まれるメッセージ対のタイムスタンプの時刻に対して、補正値を加算する。なお、補正値が負の値であれば、メッセージの時刻から、補正値の絶対値が減算される。そして時刻補正部１５０は、時刻を補正したメッセージ対を構成するメッセージのレコードを、ＤＢメッセージ記憶部１４０内の元のレコードに対して上書きで書き込む。
【０１４８】
［ステップＳ２３］時刻補正部１５０は、取得したメッセージ対にトランザクションＩＤが付与されているか否かを判断する。時刻補正部１５０は、トランザクションＩＤが付与されていれば、処理をステップＳ２６に進める。また時刻補正部１５０は、トランザクションＩＤが付与されていなければ、処理をステップＳ２４に進める。
【０１４９】
［ステップＳ２４］取得したメッセージ対にトランザクションＩＤが付与されていなければ、時刻補正部１５０は、取得したメッセージ対のみを集合Ｓの要素とする。例えば時刻補正部１５０は、集合Ｓの要素をすべて削除した後、取得したメッセージ対を集合Ｓに追加する。
【０１５０】
［ステップＳ２５］時刻補正部１５０は、同時補正集合の時刻補正範囲を、時刻補正時間の制約とはならないように初期化する。例えば時刻補正部１５０は、同時補正集合の時刻補正範囲として、すべての範囲（例えばマイナス無限大からプラス無限大まで）を設定する。その後、時刻補正部１５０は、処理をステップＳ２８に進める。
【０１５１】
［ステップＳ２６］時刻補正部１５０は、取得したメッセージ対にトランザクションＩＤが付与されている場合、集合Ｓを空集合に更新する。
［ステップＳ２７］時刻補正部１５０は、取得したメッセージ対に対応する処理に基づいて、同時補正集合の新たな時刻補正範囲を設定する。例えば時刻補正部１５０は、取得したメッセージ対と同じトランザクションＩＤが付与されているメッセージ対を、アプリケーションメッセージ記憶部１３０から抽出する。次に時刻補正部１５０は、抽出したメッセージ対に対応する処理の実行期間と、ステップＳ１２で取得したメッセージ対に対応する処理の実行期間とを比較し、取得したメッセージ対の時刻補正範囲を判断する。そして時刻補正部１５０は、取得したメッセージ対の時刻補正範囲を、同時補正集合の時刻補正範囲として新たに設定する。
【０１５２】
［ステップＳ２８］時刻補正部１５０は、同時補正集合を、取得したメッセージ対のみに更新する。
［ステップＳ２９］時刻補正部１５０は、次のメッセージ対があるか否かを判断する。時刻補正部１５０は、次のメッセージ対があれば、処理をステップＳ１２に進める。また時刻補正部１５０は、ＤＢメッセージ記憶部１４０内のすべてのメッセージ対に対する処理が完了し、次のメッセージ対がなければ、時刻補正処理を終了する。
【０１５３】
このようにして、同時補正集合ごとに補正値が決定される。
なお、図１９の例では、まずトランザクションＩＤが付与された下位層のメッセージ対について、時刻補正範囲が求められる。次に、そこから遡ってまだ親子関係候補の列挙が終わっていない、トランザクションＩＤが付与されていないメッセージ対（集合Ｓのメッセージ対）について、時刻補正範囲が求められる。そして、トランザクションＩＤが付与されていないメッセージ対について時刻補正範囲と、先に求められていた時刻補正範囲との共通部分が、新たな時刻補正範囲に設定される。このとき、共通部分を求めた結果、共通部分が存在せず、時刻補正範囲が空集合になる場合も考えられる。この場合、アプリケーションサーバ４２において、トランザクションＩＤを付与するリクエストメッセージの数が不足しているものと考えられる。そこで管理者は、例えば、アプリケーションサーバ４２に対して、ＤＢサーバ４３に対するリクエストメッセージのうち、トランザクションＩＤを付与するリクエストメッセージの数を増加するように設定する。これにより、次回からのトランザクション分析では、トランザクションＩＤが付与されていないメッセージ対を、トランザクションＩＤが付与されたメッセージ対と同一の補正値を適用する集合に含めることができる可能性を向上させることができる。
【０１５４】
集合Ｓのメッセージ対に基づく時刻補正範囲の更新が行われた後は、トランザクションＩＤが付与された１つ目のメッセージ対以降のメッセージ対が時系列に順次抽出され、時刻補正範囲との共通部分によって時刻補正範囲が更新される。そして共通部分がない場合には、最後に抽出したメッセージ対を除き、それ以前に抽出されたメッセージ対に対して、同一補正値による時刻の補正が行われる。そして最後に抽出したメッセージ対を先頭とし、新たな補正値判定が続行される。
【０１５５】
このように、第２の実施の形態では、制約を満たして補正できる値の範囲と、同一の補正値で補正するメッセージ群を求めていき、制約を満たせなくなった時点で全体を補正する。そのため、制約を満たさない場合に補正し直して、また制約を満たすか調べて、という繰り返しが不要である。また補正する値は、トランザクションＩＤが付与されたメッセージ対の親子関係から定まり、時計の特定のずれ方を仮定しないで済む。その結果、第２の実施の形態では、トランザクションＩＤが付与されていないメッセージがある場合でも、時刻のずれが不規則に変化する場合にも、時刻のずれを適切に補正することが可能になる。
【０１５６】
また、第２の実施の形態では、１つの同時補正集合に含まれるメッセージ対それぞれの時刻補正範囲のすべてで共通する値の範囲内の１点が、それらのメッセージ対を構成するメッセージに適用する時刻の補正値となる。すなわち、決定された補正値で同時補正集合に含まれるメッセージ対を構成するメッセージそれぞれの時刻を補正した場合、補正後の適合率とカバー率は１００％となる。
【０１５７】
図２０は、補正値の適切な適用範囲を決定した場合とそうでない場合とにおける適合率とカバー率との違いを示す図である。図２０の上段には、補正値の適切な適用範囲を判断することなく、１５分間のすべてのメッセージに同一の補正値を適用した場合のカバー率と適合率との上限の一例が示されている。この例では、補正値を0.0152秒としたときにカバー率が上限値となる。その上限値は、23.02％である。また、補正値を0.0151秒としたときに適合率が上限値となる。その上限値は、22.09％である。このように、補正値の適切な適用範囲を判断せずに補正値を適用すると、カバー率または適合率が１００％になる補正値が得られない場合がある。
【０１５８】
図２０の下段には、補正値の適切な適用範囲を判断し、適用範囲ごとに別個の補正値を適用した場合のカバー率と適合率とが示されている。図２０に示すように、１５分間のログが６個の期間に分割され、各期間が適用範囲に決定されている。そして適用範囲ごとに適切な補正値が求められている。例えば適用範囲「０〜２分」の補正値は「0.013秒」であり、適用範囲「２〜５分」の補正値は「0.010秒」である。このように適用範囲ごとの補正値でメッセージの時刻を補正した場合、すべての適用範囲の期間において、カバー率と適合率とを共に１００％とすることができる。
【０１５９】
このように、第２の実施の形態では、補正値の適用範囲の適切な判断を行うことで、すべての適用範囲について、適合率・カバー率といった呼び出し元処理（親）と呼び出し先処理（子）との制約条件を満たすことができる補正値で補正することができる。このような補正値で下位層のメッセージ情報の時刻を補正することで、トランザクション分析における信頼性が向上する。
【０１６０】
〔その他の実施の形態〕
第２の実施の形態では、同一の補正値の適用範囲（同時補正集合）の決定に際し、カバー率と適合率との両方を用いているが、カバー率と適合率との少なくとも一方を用いて同一の補正値の適用範囲を決定するようにしてもよい。例えば適合率のみを利用する場合、トランザクションＩＤが付与されていないメッセージ対を取得した場合、無条件に同時補正集合に含めるようにしてもよい。またカバー率のみを利用する場合、例えば、トランザクションＩＤが付与されているメッセージ対についても、そのメッセージ対に対応する処理の実行期間が、上位層のいずれかの処理の実行期間に包含される補正値の範囲を、時刻補正範囲とする。
【０１６１】
また、第２の実施の形態では、下位層のメッセージの時刻を補正しているが、時刻のずれ量は相対的なものである。そのため上位層のメッセージを補正してもよい。また上位層と下位層とのそれぞれのメッセージの時刻を補正してもよい。
【０１６２】
なお第２の実施の形態では、観測失敗に際して、上位層のメッセージの観測漏れがある可能性を考慮していない。上位層のメッセージの観測漏れがある場合、例えば、トランザクションＩＤが付与された下位層のメッセージ対に対応する、上位層のメッセージ対が見つからない可能性がある。このように同一トランザクションＩＤの上位層のメッセージ対が見つからない場合には、例えば、時刻補正部１５０は、最後に取得したメッセージ対までのメッセージについて、同一の補正値で時刻補正を行ってもよい。このとき、同一トランザクションＩＤの上位層のメッセージ対が見つからない事態が頻繁に発生すると、ＩＤがつく複数個のデータについてまとめて補正することができず、同一の補正値で補正する集合が細かく分割される可能性がある。ただし細かく分割されても、問題とするほどの処理時間の増加や補正値の正確性の低下は生じない。
【０１６３】
ただし、不必要に集合を細分化するのを避けるために、例えばカバー率は１００％に達していなくても、所定の値以上（例えば９５％以上）の間は、取得したメッセージ対を、同時補正集合に含めるようにしてもよい。
【０１６４】
またパケットロスがある場合、トランザクションＩＤが付与された下位層のメッセージ対に関し、同一トランザクションＩＤの上位層のメッセージ対が見つからない場合もあり得る。この場合、時刻補正部１５０は、同一トランザクションＩＤの上位層のメッセージ対が見つからない下位層のメッセージ対に関し、トランザクションＩＤが付与されていないメッセージ対であると見なして、時刻補正範囲を判断してもよい。
【０１６５】
また第２の実施の形態では、適合率・カバー率を求める際に、下位層のメッセージについては、メッセージ対を構成せずに、個々のメッセージについて時刻補正範囲を求めてもよい。例えば、トランザクションＩＤが付与されたＤＢ層のメッセージについては、補正後の時刻が、同一トランザクションＩＤのアプリケーション層のメッセージ対に対応する処理の実行期間内に含まれる範囲を、時刻補正範囲とすることができる。トランザクションＩＤが付与されていないＤＢ層のメッセージについては、補正後の時刻が、アプリケーション層のいずれかのメッセージ対に対応する処理の実行期間内に含まれる範囲を、時刻補正範囲とすることができる。
【０１６６】
また第２の実施の形態では、時刻補正部１５０が、メッセージの時刻補正を行っているが、例えばトランザクション分析部１６０が、分析を行う際に時刻補正を行ってもよい。その場合、時刻補正部１５０は、例えば、図２０に示したような適用範囲と補正値とを示す値をメモリなどの記憶装置に書き込む。そしてトランザクション分析部１６０は、分析を行う際に、各メッセージ記憶部からメッセージを読み出すと、メッセージに付与された時刻がどの適用範囲に含まれるかを判断し、該当する適用範囲の補正値で時刻を補正する。
【０１６７】
なお、上記の各実施の形態に示した処理機能は、コンピュータによって実現することができる。その場合、情報処理装置１または分析装置１００が有する機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープなどがある。光ディスクには、ＤＶＤ、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ／ＲＷなどがある。光磁気記録媒体には、ＭＯ（Magneto-Optical disk）などがある。なおプログラムを記録する記録媒体には、一時的な伝搬信号自体は含まれない。
【０１６８】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【０１６９】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
【０１７０】
また、上記の処理機能の少なくとも一部を、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、ＰＬＤ（Programmable Logic Device）などの電子回路で実現することもできる。
【０１７１】
上記については単に本発明の原理を示すものである。さらに、多数の変形、変更が当業者にとって可能であり、本発明は上記に示し、説明した正確な構成および応用例に限定されるものではなく、対応するすべての変形例および均等物は、添付の請求項およびその均等物による本発明の範囲とみなされる。
【符号の説明】
【０１７２】
１  情報処理装置
１ａ  第１の記憶手段
１ｂ  第２の記憶手段
１ｃ  取得手段
１ｄ  判断手段
１ｅ  生成手段
１ｆ  補正手段
２  端末装置
３  第１のサーバ
４  第２のサーバ
５  キャプチャ装置
６  ネットワークタップ
【図１】
0005842930.tif 000002
【図２】
0005842930.tif 000003
【図３】
0005842930.tif 000004
【図４】
0005842930.tif 000005
【図５】
0005842930.tif 000006
【図６】
0005842930.tif 000007
【図７】
0005842930.tif 000008
【図８】
0005842930.tif 000009
【図９】
0005842930.tif 000010
【図１０】
0005842930.tif 000011
【図１１】
0005842930.tif 000012
【図１２】
0005842930.tif 000013
【図１３】
0005842930.tif 000014
【図１４】
0005842930.tif 000015
【図１５】
0005842930.tif 000016
【図１６】
0005842930.tif 000017
【図１７】
0005842930.tif 000018
【図１８】
0005842930.tif 000019
【図１９】
0005842930.tif 000020
【図２０】
0005842930.tif 000021