(57)【特許請求の範囲】
【請求項１】
コンピュータに、
複数のサーバが連携してトランザクションを実行する複数階層システムにおいて実行された各トランザクションに関し、各階層のサーバが各トランザクションに関する処理を実行した期間を示す情報を記憶する記憶手段を参照し、第１の階層に属するサーバの１処理当たりの平均処理時間の時系列推移と、第２の階層に属するサーバの１処理当たりの平均処理時間の時系列推移とを計算し、
前記第１の階層に属するサーバの平均処理時間の時系列推移と、前記第２の階層に属するサーバの平均処理時間の時系列推移との間の相関の有無を判定する、
処理を実行させることを特徴とする解析プログラム。
【請求項２】
前記コンピュータに、
前記記憶手段を参照し、最上位のサーバにおける処理要求の受信から応答の送信までの時間に基づいて、前記複数階層システムの異常の有無を判定し、
前記記憶手段を参照し、異常が検出された期間における各階層に属するサーバの１処理当たりの平均処理時間が、異常が検出されていない期間における１処理当たりの平均処理時間より所定値以上増大したか否かを判断し、処理時間が所定値以上増大した２つの階層を、それぞれ前記第１の階層および前記第２の階層として、異常が検出された期間と異常が検出されていない期間とのそれぞれにおける１処理当たりの平均処理時間の時系列推移を計算し、
異常が検出された期間における前記第１の階層に属するサーバの処理時間の時系列推移と前記第２の階層に属するサーバの処理時間の時系列推移との相関と、異常が検出されていない期間における前記第１の階層に属するサーバの処理時間の時系列推移と前記第２の階層に属するサーバの処理時間の時系列推移との相関とに基づいて、前記第１の階層に属するサーバにおける１処理当たりの処理時間の増大と、前記第２の階層に属するサーバにおける１処理当たりの処理時間の増大との因果関係の有無を判定する、
処理を実行させることを特徴とする請求項１記載の解析プログラム。
【請求項３】
前記コンピュータに、平均処理時間の時系列推移を計算させる際には、
前記第１の階層に属するサーバまたは前記第２の階層に属するサーバが、上位層のサーバからの処理要求に応じた処理中に下位層のサーバへの処理要求を出力している場合、処理の開始の契機となる通信および処理の終了時に行われる通信に応じて各処理を複数の種別に分類し、前記複数の種別から選択した少なくとも１つの種別に属する処理の実行期間の処理時間の平均を、前記第１の階層に属するサーバまたは前記第２の階層に属するサーバの１処理当たりの平均処理時間とする、
処理を実行させることを特徴とする請求項１または２のいずれかに記載の解析プログラム。
【請求項４】
前記コンピュータに、各処理を前記複数の種別に分類させる際には、
上位層のサーバから入力された処理要求を契機として開始され、下位層のサーバへ処理要求を出力して終了する処理が属する第１種、下位層のサーバに対して出力した処理要求に対する該サーバからの応答を契機として開始され、下位層のサーバへ処理要求を出力して終了する処理が属する第２種、および下位層のサーバに対して出力した処理要求に対する該サーバからの応答を契機として開始され、上位層のサーバに対して応答を出力して終了する処理が属する第３種に分類する、
処理を実行させることを特徴とする請求項３記載の解析プログラム。
【請求項５】
前記コンピュータに、１処理当たりの平均処理時間の時系列推移を計算させる際には、前記記憶手段に記憶されたトランザクション情報のうち、前記複数階層システムにおける処理負荷が所定値以上の期間に行われたトランザクションに関するトランザクション情報を除外して、１処理当たりの平均処理時間の時系列推移を計算する、
処理を実行させることを特徴とする請求項１乃至４のいずれかに記載の解析プログラム。
【請求項６】
コンピュータが、
複数のサーバが連携してトランザクションを実行する複数階層システムにおいて実行された各トランザクションに関し、各階層のサーバが各トランザクションに関する処理を実行した期間を示す情報を記憶する記憶手段を参照し、第１の階層に属するサーバの１処理当たりの平均処理時間の時系列推移と、第２の階層に属するサーバの１処理当たりの平均処理時間の時系列推移とを計算し、
前記第１の階層に属するサーバの平均処理時間の時系列推移と、前記第２の階層に属するサーバの平均処理時間の時系列推移との間の相関の有無を判定する、
ことを特徴とする解析方法。
【請求項７】
複数のサーバが連携してトランザクションを実行する複数階層システムにおいて実行された各トランザクションに関し、各階層のサーバが各トランザクションに関する処理を実行した期間を示す情報を記憶する記憶手段を参照し、第１の階層に属するサーバの１処理当たりの平均処理時間の時系列推移と、第２の階層に属するサーバの１処理当たりの平均処理時間の時系列推移とを計算する処理時間解析手段と、
前記第１の階層に属するサーバの平均処理時間の時系列推移と、前記第２の階層に属するサーバの平均処理時間の時系列推移との間の相関の有無を判定する相関判定手段と、
を有することを特徴とする解析装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は複数階層システムから得られた情報を解析する解析プログラム、解析方法、および解析装置に関する。
【背景技術】
【０００２】
従来、複数のコンピュータが階層的に処理を分担する情報処理システム（複数階層システムという）が利用されている。以下、複数階層システムを構成するコンピュータを「サーバ」と呼ぶ。複数階層システムとして、例えばシステム利用のためのインタフェースを提供するＷｅｂサーバ、システム上の処理を実行するＡｐｐ（Application）サーバおよびデータを管理するＤＢ（Database）サーバを有する３階層システムが知られている。各サーバは、ユーザからの処理要求に対して連携して処理を実行し、その処理要求に応答する。このように、各サーバに処理を分担させることで、システムの信頼性や応答性を向上できる。
【０００３】
このようなＷｅｂ複数階層システムに代表される複数階層システムにおいて、エンドユーザにおける応答時間の増大が発生した際には、問題が発生しているサーバが属する階層を特定することが、障害対応の第一歩として非常に重要である。そのために、各階層のサーバにおいて処理時間を測定し、その推移を監視することによって問題の有無を判定する手法が広く一般に採用されている。
【０００４】
例えば、トランザクションモデルを生成し、スイッチを介して送受信されたメッセージからトランザクションモデルに沿って進行するメッセージの受け渡しを検出する技術が考えられている。この技術により、任意のトランザクションを構成するメッセージの集合を特定し、そのトランザクションの解析が可能となる。例えば、ユーザのリクエストからレスポンスまでの各アプリケーションの処理を追跡することができる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００６−０１１６８３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかし、従来の方法では、各階層のサーバにおける処理時間の解析により、個々のサーバでの処理時間の増加は検出できるものの、処理遅延などの問題の発生原因となる箇所を迅速に特定するには不十分な場合があった。
【０００７】
例えば、複数の階層のサーバにおいて処理時間が同時に増加する場合がある。このような処理時間の増加原因として、例えば、以下の２つの発生パターンが想定される。
第１の発生パターンは、各階層のサーバそれぞれにおいて過負荷などの問題が独立して発生している場合である。第２の発生パターンは、下位層のサーバにのみ問題が発生しており、上位層のサーバは、下位層のサーバの処理時間の増加の影響を受けているだけの場合である。ところが従来の技術では、このような２つの発生パターンを区別することができなかった。その結果、処理時間の増加を複数の階層のサーバにおいて検出すると、各階層のサーバそれぞれを調査して原因究明を行うこととなり、原因究明とその対策に時間がかかっていた。
【０００８】
１つの側面では、本発明は、異なる階層に属する複数サーバ間での処理時間の影響伝搬の可能性の有無の解析を行う解析プログラム、解析方法および解析装置を提供することを目的とする。
【課題を解決するための手段】
【０００９】
１つの案では、コンピュータは、複数のサーバが連携してトランザクションを実行する複数階層システムにおいて実行された各トランザクションに関し、各階層のサーバが各トランザクションに関する処理を実行した期間を示す情報を記憶する記憶手段を参照する。そしてコンピュータは、第１の階層に属するサーバの１処理当たりの平均処理時間の時系列推移と、第２の階層に属するサーバの１処理当たりの平均処理時間の時系列推移とを計算する。さらにコンピュータは、第１の階層に属するサーバの平均処理時間の時系列推移と、第２の階層に属するサーバの平均処理時間の時系列推移との間の相関の有無を判定する。
【００１０】
また、上記解析プログラムを実行するコンピュータと同様の処理をコンピュータに実行させる解析方法を用いる。
また、上記解析プログラムを実行するコンピュータと同様の処理を実行する機能を有する解析装置を用いる。
【発明の効果】
【００１１】
異なる階層に属する複数サーバ間での処理時間の影響伝搬の可能性の有無が解析できる。
【図面の簡単な説明】
【００１２】
【図１】第１の実施の形態に係る解析装置の機能を示すブロック図である。
【図２】第２の実施の形態の業務システムの全体構成を示す図である。
【図３】第２の実施の形態の運用管理サーバのハードウェア構成を示す図である。
【図４】第２の実施の形態の運用管理サーバの機能構成を示すブロック図である。
【図５】影響伝搬解析処理の手順を示すフローチャートの一例である。
【図６】業務システムにおける通信の流れの具体例を示すシーケンス図である。
【図７】メッセージ記憶部に記憶されたメッセージの一例を示す第１の図である。
【図８】メッセージ記憶部に記憶されたメッセージの一例を示す第２の図である。
【図９】メッセージフロー情報記憶部のデータ構造例を示す図である。
【図１０】正常時の処理時間解析処理手順を示すフローチャートの一例である。
【図１１】１トランザクションにおけるサーバの処理区間の分類例を示す図である。
【図１２】異常時の処理時間解析処理の手順の一例を示すフローチャートの前半である。
【図１３】異常時の処理時間解析処理の手順の一例を示すフローチャートの後半である。
【図１４】「問い合わせ開始前」区間のみ処理時間が増加した状況を示す図である。
【図１５】正常時平均処理時間記憶部のデータ構造の一例を示す図である。
【図１６】正常時の処理時間の時系列推移を示す図である。
【図１７】正常時相関係数記憶部のデータ構造の一例を示す図である。
【図１８】異常時処理時間記憶部のデータ構造の一例を示す図である。
【図１９】異常時の処理時間の時系列推移を示す図である。
【図２０】異常時相関係数記憶部のデータ構造の一例を示す図である。
【図２１】異常警報画面の一例を示す図である。
【図２２】第３の実施の形態の運用管理サーバの機能構成を示すブロック図である。
【図２３】システムへの入力負荷と平均処理時間の標準偏差との関係を示す図である。
【図２４】入力負荷と標準偏差との関係の解析例を示す図である。
【図２５】入力負荷と標準偏差との関係をプロットした例を示す図である。
【図２６】部分時系列選択処理の手順の一例を示すフローチャートである。
【図２７】下位層での部分時系列選択処理の手順の一例を示すフローチャートである。
【図２８】上位層での部分時系列選択処理手順の一例を示す図である。
【発明を実施するための形態】
【００１３】
以下、本実施の形態について図面を参照して説明する。
〔第１の実施の形態〕
図１は、第１の実施の形態に係る解析装置の機能を示すブロック図である。第１の実施の形態に係る解析装置１は、記憶手段２に記憶された情報を参照して解析処理を行う。
【００１４】
記憶手段２は、２つ以上のサーバが連携してトランザクションを実行する複数階層システムにおいて実行されたトランザクションに関する複数のトランザクション情報２ａ，２ｂ，２ｃを記憶する。トランザクション情報２ａ，２ｂ，２ｃは、各階層のサーバが各トランザクションに関する処理を実行した期間を示す情報を含んでいる。例えば、トランザクションにおけるサーバ間で通信されたメッセージと、各メッセージの通信時刻とがトランザクション情報に含まれる。この場合、メッセージの通信時刻によって、各階層のサーバがトランザクションに関する処理を実行した期間が示されている。すなわち、サーバがトランザクション中のメッセージを受信し、その次のメッセージを送信するまでの期間が、そのサーバで処理を実行した期間となる。
【００１５】
解析装置１は、トランザクション情報を用いた解析機能として、異常判定手段１ａ、処理時間解析手段１ｂ、および相関判定手段１ｃを有する。
異常判定手段１ａは、記憶手段２を参照し、複数階層システムでの異常の有無を判定する。例えば異常判定手段１ａは、最上位のサーバにおける処理要求の受信から応答の送信までの時間に基づいて、複数階層システムの異常の有無を判定することができる。この場合、異常判定手段１ａは、例えば、所定期間内に実行された複数のトランザクションそれぞれにおける最上位のサーバによる処理要求の受信から応答の送信までの経過時間の平均が、予め設定された閾値以上の場合、その所定期間を、異常が検出された期間と判定する。以下、異常が検出された期間を「異常時」、異常が検出されていない期間を「正常時」とする。
【００１６】
処理時間解析手段１ｂは、トランザクション情報に基づいて、第１の階層に属するサーバの１処理当たりの平均処理時間の時系列推移と、第２の階層に属するサーバの１処理当たりの平均処理時間の時系列推移とを計算する。図１の例では、サーバ「Ａ」とサーバ「Ｂ」とについて、１処理当たりの平均処理時間の時系列推移が計算されている。なお、処理時間解析手段１ｂは、正常時と異常時との時系列推移を個別に計算することができる。例えば処理時間解析手段１ｂは、正常時におけるトランザクション情報に基づいて、第１の階層に属するサーバの１処理当たりの平均処理時間の時系列推移と、第２の階層に属するサーバの１処理当たりの平均処理時間の時系列推移とを計算する。また処理時間解析手段１ｂは、異常時におけるトランザクション情報に基づいて、第１の階層に属するサーバの１処理当たりの平均処理時間の時系列推移と、第２の階層に属するサーバの１処理当たりの平均処理時間の時系列推移とを計算する。
【００１７】
なお処理時間解析手段１ｂは、次のようにして、第１の階層と第２の階層とを決定する。例えば、処理時間解析手段１ｂは、記憶手段２を参照する。そして処理時間解析手段１ｂは、異常時における各階層に属するサーバの１処理当たりの平均処理時間が、正常時における１処理当たりの平均処理時間より所定値以上増大したか否かを判断する。処理時間解析手段１ｂは、処理時間が所定値以上増大した２つの階層を、それぞれ第１の階層および第２の階層として決定する。
【００１８】
相関判定手段１ｃは、第１の階層に属するサーバの平均処理時間の時系列推移と、第２の階層に属するサーバの平均処理時間の時系列推移との間の相関の有無を判定する。例えば相関判定手段１ｃは、第１の階層に属するサーバの１処理当たりの平均処理時間の時系列推移と、第２の階層に属するサーバの１処理当たりの平均処理時間の時系列推移との相関係数を算出する。そして相関判定手段１ｃは、相関係数が所定の有意水準の限界値以上の場合に、時系列推移間に相関があると判断する。
【００１９】
なお相関判定手段１ｃは、正常時と異常時とにおいて、個別に相関の有無を判定することができる。すなわち、相関判定手段１ｃは、処理時間解析手段１ｂによって計算された正常時の時系列推移を取得する。そして相関判定手段１ｃは、正常時の第１の階層のサーバの平均処理時間の時系列推移と、正常時の第２の階層に属するサーバの平均処理時間の時系列推移との間の相関の有無を判定する。また相関判定手段１ｃは、処理時間解析手段１ｂから異常時の時系列推移を取得する。そして相関判定手段１ｃは、異常時の第１の階層のサーバの平均処理時間の時系列推移と、異常時の第２の階層に属するサーバの平均処理時間の時系列推移との間の相関の有無を判定する。
【００２０】
正常時と異常時とにおいて個別に相関の有無を判定した場合、相関判定手段１ｃは、階層の異なるサーバ間での１処理当たりの処理時間の増大の因果関係の有無を判定することができる。例えば相関判定手段１ｃは、異常時において相関ありと判定され、正常時において相関なしと判定された場合に、処理時間の増大の因果関係ありと判定する。
【００２１】
このような機能を有する解析装置１によれば、複数階層システムにおける異なる階層のサーバ間の処理時間の影響伝搬の有無を判断することができる。影響伝搬がある場合、処理時間増大などの異常発生時に、因果関係がある複数の階層のうち一方の階層に属するサーバにおける異常の原因を取り除くだけで、システム全体の異常が解消できる可能性がある。すると因果関係を有する他方の階層のサーバにおいて異常の原因の探索を行わずにすみ、異常解析の作業効率が向上する。
【００２２】
なお図１の例では因果関係の有無まで判定しているが、正常時、異常時の区別をせずに、解析装置１が所定期間における相関の有無を判定するだけでも、管理者は、影響伝搬の可能性を容易に認識できる。例えば、管理者が複数階層システムに何らかの異常が検出した期間のトランザクション情報のみを記憶手段２に格納する。その後、管理者は、異常が検出された期間のトランザクション情報に基づいて、解析装置１でサーバ間の処理時間の相関を判定させる。管理者がこのような作業を行えば、解析装置１に異常判定手段１ａを備えなくとも、異常時におけるサーバ間の処理時間の相関を判定できる。少なくとも異常時に有意な相関が認められれば、管理者は、サーバ間に影響伝搬の可能性があることが認識できる。
【００２３】
また、図１に示す解析装置１は、有意な相関の有無にとどまらず、因果関係の有無までも判断している。因果関係の有無までも判定することで、障害解析の経験が不十分な管理者であっても、サーバ間の処理時間の増加の因果関係の有無を適格に判断でき、異常状態の解消にかかる作業効率が向上する。
【００２４】
すなわち、図１に示す解析装置１を用いれば、複数の階層の処理時間が同時に増大した場合に、それらの両方共が本当に問題を抱えているのか、それとも一方だけが問題を抱えていてそれが他方に影響を与えているのか認識できる。異なる階層のサーバ間に処理時間の因果関係があることが分かれば、因果関係の方向（どちらが原因でどちらが結果か）は推定可能である。例えば、複数階層システムの場合は通常は下位層のサーバが上位層のサーバに影響を与える。そこで、複数階層システムに異常がある場合、管理者は、因果関係にある複数の階層のうち下位層のサーバだけを調べればよいことが理解でき、作業効率が向上する。逆に、因果関係の有無が判別できないと、両方の階層に原因があると誤解して調査を進めてしまう場合があり得る。その結果、両方の階層を調査する為に余計な時間がかかったり、無駄に両方の階層のハードウェアを買い替えたり、原因分析が混乱して問題原因が発見できなかったりといった作業が行われ、作業効率が低下する。
【００２５】
なお、複数階層システムでは、第１の階層に属するサーバまたは第２の階層に属するサーバが、上位層のサーバからの処理要求に応じた処理中に下位層のサーバへの処理要求を出力している場合がある。このような場合、処理時間解析手段１ｂは、処理の開始の契機となる通信および処理の終了時に行われる通信に応じて各処理の実行期間を複数の種別に分類してもよい。複数の種別に分類した場合、処理時間解析手段１ｂは、複数の種別から少なくとも１つの種別を選択する。そして処理時間解析手段１ｂは、選択した少なくとも１つの種別に属する処理の実行期間の処理時間の平均を、第１の階層に属するサーバまたは第２の階層に属するサーバの１処理当たりの平均処理時間とする。
【００２６】
処理を複数の種別に分類する場合、処理時間解析手段１ｂは、例えば以下のような３種に分類する。
第１種は、上位層のサーバから入力された処理要求を契機として開始され、下位層のサーバへ処理要求を出力して終了する処理の実行期間が属する。第２種は、下位層のサーバに対して出力した処理要求に対する該サーバからの応答を契機として開始され、下位層のサーバへ処理要求を出力して終了する処理の実行期間が属する。第３種は、下位層のサーバに対して出力した処理要求に対する該サーバからの応答を契機として開始され、上位層のサーバに対して応答を出力して終了する処理の実行期間が属する。
【００２７】
処理の実行期間を第１種〜第３種に分類した場合、処理時間解析手段１ｂは、例えば第２種に属する実行期間が存在すれば、第２種を優先的に選択する。すなわち処理時間解析手段１ｂは、第２種に属する実行期間の処理時間の平均を、第１の階層に属するサーバまたは第２の階層に属するサーバの１処理当たりの平均処理時間とする。第２種は、他の階層のサーバとの接続待ち時間の影響を受けづらく、サーバの処理負荷の状況が、処理時間として正確に現れると考えられるためである。
【００２８】
また、相関判定手段１ｃは、特定の条件が満たされた場合、処理時間の時系列推移を用いずに、因果関係の有無を判定することができる。例えば、第１の階層と第２の階層とのうちの上位層において、第１種に属する実行時間の平均処理時間が所定値以上増大し、第２種および第３種に属する実行時間の平均処理時間の所定値以上の増大が認められない場合がある。このような場合、相関判定手段１ｃは、上位層の処理時間の増大と、下位層の処理時間増大との間に因果関係があると判定する。この場合、因果関係の有無に加え、原因の発生箇所と、原因の影響を受けた箇所とについても特定できる。すなわち相関判定手段１ｃは、上位層の処理時間の増大は、下位層の処理時間増大の影響が伝搬したものであると判定できる。
【００２９】
〔第２の実施の形態］
以下、第２の実施の形態について図面を参照して詳細に説明する。第２の実施の形態は、ネットワークを介して伝送されるパケットをキャプチャし、キャプチャしたパケットを用いて解析を行うものである。
【００３０】
第２の実施の形態では、複数階層システムとしてＷｅｂ３階層システムを例として説明する。Ｗｅｂ３階層システムとは、Ｗｅｂサーバ、アプリケーションサーバ（以降、Ａｐｐサーバ）、データベースサーバ（以降、ＤＢサーバ）からなる複数階層システムである。エンドユーザのコンピュータ上のブラウザが出力する処理要求は、ＷｅｂサーバがＨＴＴＰ（hyper text transfer protocol）に従ったパケットで受ける。処理要求が静的コンテンツの取得であれば、Ｗｅｂサーバが、保持しているコンテンツを直接エンドユーザのコンピュータへ返信する。他方、処理要求がプログラムによって生成される動的コンテンツの取得の場合、Ｗｅｂサーバは、処理をＡｐｐサーバへ依頼する。処理の依頼を受けたＡｐｐサーバは、Java（登録商標）などで記述されたプログラムによってその処理要求を実行する。Ａｐｐサーバは、処理の過程において、使用されるデータは、それを保持するＤＢサーバに対して処理要求を発行して取得する。
【００３１】
このようなＷｅｂ３階層システムにおいて、例えばＡｐｐサーバとＤＢサーバとにおいて同時に、１つのトランザクションに関する処理に要する時間が増大することがある。このとき、Ａｐｐサーバの処理時間の増大はＤＢサーバの処理時間の増大の影響が伝搬したものであり、ＤＢサーバにおいて発生した問題を解消することで、Ａｐｐサーバの処理時間は減少する場合がある。このような影響の伝搬の関係が予め分かっていれば、処理時間の増大という異常が発生した場合、その対策を迅速に行うことができる。
【００３２】
図２は、第２の実施の形態の業務システムの全体構成を示す図である。この業務システムは、運用管理サーバ１００、Ｗｅｂサーバ２００、Ａｐｐサーバ３００およびＤＢサーバ４００を有する。運用管理サーバ１００、Ｗｅｂサーバ２００、Ａｐｐサーバ３００およびＤＢサーバ４００は、スイッチ装置１０を介して相互に接続されている。また、スイッチ装置１０は、ネットワーク２０を介して端末装置２１，２２，２３に接続されている。
【００３３】
端末装置２１，２２，２３は、スイッチ装置１０およびネットワーク２０を介してＷｅｂサーバ２００にアクセス可能である。端末装置２１，２２，２３のユーザは、Ｗｅｂサーバ２００が提供するＧＵＩ（Graphical User Interface）を端末装置２１，２２，２３から操作して業務システムを利用できる。ネットワーク２０は、例えばイントラネットである。
【００３４】
なお、ネットワーク２０がインターネットである場合も考えられる。その場合、スイッチ装置１０はファイアウォールとして機能させることもできる。また、Ｗｅｂサーバ２００の属するネットワークセグメントは、例えばＤＭＺ（Demilitarized Zone）として扱われる。
【００３５】
運用管理サーバ１００は、Ｗｅｂサーバ２００、Ａｐｐサーバ３００およびＤＢサーバ４００の稼働状況を管理する。運用管理サーバ１００は、そのための情報をスイッチ装置１０から取得することができる。すなわち、スイッチ装置１０は、ポートミラーリング機能を有しており、Ｗｅｂサーバ２００、Ａｐｐサーバ３００およびＤＢサーバ４００の間で送受信される通信パケットを運用管理サーバ１００にも送信する。ポートミラーリング機能とは、スイッチ装置１０上の設定したポートを流れるＩＰパケットをコピーして、指定した別のポートへ転送する機能である。この転送先として指定されたポートの先に、ＩＰパケット記録や解析を行う運用管理サーバ１００が配置される。
【００３６】
運用管理サーバ１００は、スイッチ装置１０から送信される通信パケットを受信して、記憶する（パケットキャプチャ）。なお、運用管理サーバ１００で単にパケットキャプチャを行う用途であれば、スイッチ装置１０をリピータハブで代用することもできる。運用管理サーバ１００は、この転送されてくるＩＰパケットを受信可能なネットワークインタフェースを有している。そして運用管理サーバ１００は、転送されてきたＩＰパケット格納用の十分に大きなハードディスクを有している。さらに、運用管理サーバ１００は、ＩＰパケットをキャプチャするのに十分なＣＰＵ（Central Processing Unit）性能を保有していることが望ましい。転送されてきたＩＰパケットは、運用管理サーバ１００上でキャプチャされ、その後にメッセージフローを抽出する為の処理が実施される。
【００３７】
Ｗｅｂサーバ２００は、端末装置２１，２２，２３で実行されるＷｅｂブラウザから業務システムに対する処理要求（メッセージ）を受け付ける。ここで、Ｗｅｂサーバ２００と端末装置２１，２２，２３とのメッセージ交換は、ＨＴＴＰによって行われるものとする。ただし、他のプロトコルが用いられてもよい。
【００３８】
以下では、端末装置２１，２２，２３からＷｅｂサーバ２００へ送信する処理要求をＨＴＴＰリクエストと呼ぶこととする。また、それに対する応答をＨＴＴＰレスポンスと呼ぶこととする。なお、リクエスト／レスポンスともに処理要求の一例である。
【００３９】
Ｗｅｂサーバ２００は、端末装置２１，２２，２３から受信したＨＴＴＰリクエストに基づいて、静的コンテンツに関しては自装置でＨＴＴＰレスポンスを生成し、端末装置２１，２２，２３に送信する。なお、動的コンテンツに関しては、Ａｐｐサーバ３００に依頼すべき処理の処理要求（メッセージ）を生成して、Ａｐｐサーバ３００に送信する。
【００４０】
ここで、Ｗｅｂサーバ２００とＡｐｐサーバ３００とのメッセージ交換は、ＩＩＯＰ（Internet Inter-ORB（Object Request Broker） Protocol）によって行われるものとする。ただし、他のプロトコルが用いられてもよい。
【００４１】
以下では、Ｗｅｂサーバ２００からＡｐｐサーバ３００へ送信する処理要求をＩＩＯＰリクエストと呼ぶこととする。また、それに対する応答をＩＩＯＰレスポンスと呼ぶこととする。
【００４２】
Ｗｅｂサーバ２００は、ＩＩＯＰリクエストに対するＩＩＯＰレスポンスを受信すると、その内容に基づいてＨＴＴＰレスポンスを生成して、端末装置２１，２２，２３に送信する。
【００４３】
Ａｐｐサーバ３００は、Ｗｅｂサーバ２００から受信したＩＩＯＰリクエストに基づいてＤＢサーバ４００に依頼すべき処理のクエリを生成し、ＤＢサーバ４００に送信する。
ここで、Ａｐｐサーバ３００が生成するクエリは、例えばＳＱＬ文によって表記される。以下では、Ａｐｐサーバ３００がＤＢサーバ４００に送信するクエリをＤＢリクエストと呼ぶこととする。また、それに対する応答をＤＢレスポンスと呼ぶこととする。
【００４４】
Ａｐｐサーバ３００は、ＤＢリクエストに対するＤＢレスポンスを受信すると、その内容に基づいてＩＩＯＰレスポンスを生成してＷｅｂサーバ２００に送信する。
ＤＢサーバ４００は、Ａｐｐサーバ３００から受信したＤＢリクエストに含まれるＳＱＬ文を実行してＤＢの参照や更新等の処理を実行する。ＤＢサーバ４００は、その処理結果に基づいてＤＢレスポンスを生成し、Ａｐｐサーバ３００に送信する。
【００４５】
なお、業務システムにおいてＷｅｂサーバ２００、Ａｐｐサーバ３００およびＤＢサーバ４００と各層（Ｗｅｂ層、Ａｐｐ層およびＤＢ層）一台ずつの構成を例示したが、各層にそれぞれ複数台のサーバを設けてもよい。各層に複数のサーバがある場合、各層において負荷分散処理が行われる。
【００４６】
階層間を跨って送受信されるメッセージを取得する手法には何通りか考えられるが、第２の実施の形態では、ネットワーク上を流れるＩＰパケットから情報を取得するものとする。この場合、ポートミラーリング機能を有するスイッチ装置１０が用いられる。
【００４７】
また、以下では各サーバという場合、Ｗｅｂサーバ２００、Ａｐｐサーバ３００およびＤＢサーバ４００を示すものとする。更に、Ｗｅｂサーバ２００は、Ａｐｐサーバ３００およびＤＢサーバ４００よりも上位層のサーバであるとする。また、Ａｐｐサーバ３００は、ＤＢサーバ４００よりも上位層のサーバであるとする。このような階層関係を定義する情報は、運用管理サーバ１００に予め格納される。
【００４８】
図３は、第２の実施の形態の運用管理サーバのハードウェア構成を示す図である。運用管理サーバ１００は、ＣＰＵ１０１、ＲＯＭ（Read Only Memory）１０２、ＲＡＭ（Random Access Memory）１０３、ＨＤＤ（Hard Disk Drive）１０４、グラフィック処理装置１０５、入力インタフェース１０６、記録媒体読取装置１０７および通信インタフェース１０８を有する。
【００４９】
ＣＰＵ１０１は、運用管理サーバ１００全体を制御する。
ＲＯＭ１０２は、運用管理サーバ１００上のＢＩＯＳ（Basic Input / Output System）のプログラムなどを記憶する。
【００５０】
ＲＡＭ１０３は、ＣＰＵ１０１に実行させるＯＳ（Operating System）のプログラムやアプリケーションのプログラムの少なくとも一部を一時的に記憶する。また、ＲＡＭ１０３は、ＣＰＵ１０１による処理に必要な各種データを記憶する。
【００５１】
ＨＤＤ１０４は、ＯＳのプログラム、アプリケーションのプログラムを記憶する。また、ＨＤＤ１０４はＣＰＵ１０１による処理に必要な各種データを記憶する。なお、ＨＤＤ１０４に代えて（または、ＨＤＤ１０４と併せて）、ＳＳＤ（Solid State Drive）など他の種類の記憶装置を用いてもよい。
【００５２】
グラフィック処理装置１０５は、モニタ１１と接続される。グラフィック処理装置１０５は、ＣＰＵ１０１からの命令に従って画像をモニタ１１の画面に表示させる。
入力インタフェース１０６は、キーボード１２とマウス１３と接続される。入力インタフェース１０６は、キーボード１２やマウス１３から送られてくる信号をＣＰＵ１０１に送信する。
【００５３】
記録媒体読取装置１０７は、記録媒体１４に記憶されたデータを読み取る読取装置である。例えば、運用管理サーバ１００が有すべき機能は、その機能の処理内容を記述したプログラムをコンピュータに実行させることで実現できる。そのようなプログラムは、コンピュータ読み取り可能な記録媒体１４に記録して配布することができる。また、スイッチ装置１０あるいはネットワーク２０に接続されたプログラム配信サーバ（図示せず）にそのプログラムを格納してもよい。この場合、運用管理サーバ１００は、スイッチ装置１０あるいはネットワーク２０を介してプログラム配信サーバからプログラムをダウンロードすることができる。
【００５４】
記録媒体１４としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリを使用できる。磁気記録装置には、ＨＤＤ、フレキシブルディスク（ＦＤ：Flexible Disk）、磁気テープなどがある。光ディスクには、ＣＤ（Compact Disc）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−Ｒ／ＲＷ／ＲＡＭなどがある。光磁気記録媒体には、ＭＯ（Magneto-Optical disk）などがある。半導体メモリには、ＵＳＢ（Universal Serial Bus）メモリなどのフラッシュメモリがある。
【００５５】
通信インタフェース１０８は、ＴＰ（Twisted Pair）ケーブルや光ケーブル等によってスイッチ装置１０と接続される。通信インタフェース１０８は、スイッチ装置１０を介して他の情報処理装置とデータ通信する。また、通信インタフェース１０８は、各サーバの間で送受信される通信パケットをスイッチ装置１０から受信する。
【００５６】
なお、Ｗｅｂサーバ２００、Ａｐｐサーバ３００、ＤＢサーバ４００および端末装置２１，２２，２３も運用管理サーバ１００と同様のハードウェア構成により実現できる。
図４は、第２の実施の形態の運用管理サーバの機能構成を示すブロック図である。運用管理サーバ１００は、メッセージ解析部１１０、メッセージ記憶部１２０、メッセージフロー検出部１３０、メッセージフロー情報記憶部１４０、および影響伝搬分析部１５０を有する。
【００５７】
メッセージ解析部１１０は、スイッチ装置１０を介して送受信される通信パケットをスイッチ装置１０から受信する。さらにメッセージ解析部１１０は、受信したパケットを解析し、Ｗｅｂサーバ２００、Ａｐｐサーバ３００、ＤＢサーバ４００および端末装置２１，２２，２３において通信されたメッセージを再構成する。そしてメッセージ解析部１１０は、再構成したメッセージをメッセージ記憶部１２０に格納する。
【００５８】
メッセージ記憶部１２０は、再構成されたメッセージを記憶する。例えばＲＡＭ１０３またはＨＤＤ１０４の記憶領域の一部がメッセージ記憶部１２０として使用される。
メッセージフロー検出部１３０は、メッセージ記憶部１２０に格納されたメッセージから、Ｗｅｂサーバ２００、Ａｐｐサーバ３００、およびＤＢサーバ４００で実行されたトランザクション（一連の処理）のメッセージフローを検出する。例えば、メッセージフロー検出部１３０は、予めメッセージフローモデルを有しており、メッセージフローモデルに合致するメッセージの組み合わせを、メッセージ記憶部１２０から抽出する。そしてメッセージフロー検出部１３０は、メッセージフローモデルに合致するメッセージの組み合わせを、メッセージフロー情報としてメッセージフロー情報記憶部１４０に格納する。
【００５９】
メッセージフロー情報記憶部１４０は、メッセージフロー情報を記憶する。例えばＲＡＭ１０３またはＨＤＤ１０４の記憶領域の一部が、メッセージフロー情報記憶部１４０として使用される。
【００６０】
影響伝搬分析部１５０は、メッセージフロー情報記憶部１４０に格納されたメッセージフロー情報に基づいて、異なる階層のサーバ間での影響の伝搬の有無を分析する。そのために、影響伝搬分析部１５０は、異常有無判定部１５１、正常時処理時間解析部１５２、異常時処理時間解析部１５３、および相関判定部１５４を有する。
【００６１】
異常有無判定部１５１は、メッセージフロー情報記憶部１４０に格納されたメッセージフロー情報に基づいて、異常の有無を判定する。例えば異常有無判定部１５１は、メッセージフロー情報に示される最上位層のサーバ（Ｗｅｂサーバ２００）へのリクエストメッセージの入力から、そのサーバからレスポンスメッセージの出力までの時間（処理時間）を計算する。異常有無判定部１５１は、メッセージフローの処理時間の平均が、所定時間以上の場合、異常ありと判定する。なお、本実施の形態において特に断りのない限り、「平均」とは相加平均（すべて標本の値の和を標本数で除算した値）を意味する。異常有無判定部１５１は、異常ありと判定した場合、例えば異常があった期間と、異常を検出した旨の情報とを正常時処理時間解析部１５２と異常時処理時間解析部１５３とに通知する。
【００６２】
正常時処理時間解析部１５２は、正常に処理されている期間のトランザクションに関するメッセージフロー情報に基づいて、該当するトランザクションを実行する各階層のサーバ間の処理時間の相関関係の有無を解析する。以後、正常に処理されている期間のトランザクションに関するメッセージフロー情報を、正常時メッセージフロー情報と呼ぶこととする。例えば正常時処理時間解析部１５２は、異常有無判定部１５１において異常と判定された時からの所定期間を除外した期間内のメッセージフロー情報を、正常時メッセージフロー情報と判断する。
【００６３】
なお正常時処理時間解析部１５２は、正常時処理時間記憶部１５２ａと正常時相関係数記憶部１５２ｂとを有している。正常時処理時間記憶部１５２ａは、各階層の区間種別ごとの正常時の処理に関する平均処理時間を記憶する。例えばＲＡＭ１０３またはＨＤＤ１０４の記憶領域の一部が、正常時処理時間記憶部１５２ａとして使用される。正常時相関係数記憶部１５２ｂは、各階層の区間種別ごとの正常時の処理に関する相関係数を記憶する。例えばＲＡＭ１０３またはＨＤＤ１０４の記憶領域の一部が、正常時相関係数記憶部１５２ｂとして使用される。
【００６４】
異常時処理時間解析部１５３は、異常が発生している期間のトランザクションに関するトランザクション情報に基づいて、該当するトランザクションに関する処理を実行する各階層のサーバ間の処理時間の相関関係の有無を解析する。以後、異常が発生している期間のトランザクションに関するメッセージフロー情報を、異常時メッセージフロー情報と呼ぶこととする。例えば異常時処理時間解析部１５３は、異常有無判定部１５１において異常と判定された時から所定期間内のメッセージフロー情報を、異常時メッセージフロー情報と判断する。
【００６５】
なお異常時処理時間解析部１５３は、異常時処理時間記憶部１５３ａと異常時相関係数記憶部１５３ｂとを有している。異常時処理時間記憶部１５３ａは、各階層の区間種別ごとの異常時の処理に関する平均処理時間を記憶する。例えばＲＡＭ１０３またはＨＤＤ１０４の記憶領域の一部が、異常時処理時間記憶部１５３ａとして使用される。異常時相関係数記憶部１５３ｂは、各階層の区間種別ごとの異常時の処理に関する相関係数を記憶する。例えばＲＡＭ１０３またはＨＤＤ１０４の記憶領域の一部が、異常時相関係数記憶部１５３ｂとして使用される。
【００６６】
相関判定部１５４は、正常時メッセージフロー情報に基づいて算出された相関係数により、有意な相関があるか否かを判断する。また相関判定部１５４は、異常時メッセージフロー情報に基づいて算出された相関係数により、有意な相関があるか否かを判断する。そして相関判定部１５４は、正常時と異常時との有意な相関の有無に基づいて、異常の影響のサーバ間での伝搬の有無を判定する。例えば、相関判定部１５４は、２つの階層のサーバの１処理当たりの処理時間に関し、正常時には有意な相関がないと判定され、異常時には有意な相関があると判定された場合、下位層のサーバの異常が上位層のサーバに伝搬しているものと判定する。相関判定部１５４は、影響伝搬の判定結果を、例えばモニタ１１に表示する。
【００６７】
図５は、影響伝搬解析処理の手順を示すフローチャートの一例である。以下、図５に示す処理をステップ番号に沿って説明する。
［ステップＳ１］メッセージ解析部１１０は、所定期間（例えば３０分）、キャプチャしたパケットを取得し、取得したパケットに基づいてメッセージを再構成し、メッセージの通信時刻を測定する。メッセージ解析部１１０は、例えばメッセージの通信に使用された最初のパケットの取得時刻を、そのメッセージの通信時刻とする。そして、メッセージ解析部１１０は、通信時刻を付与したメッセージをメッセージ記憶部１２０に格納する。
【００６８】
［ステップＳ２］メッセージフロー検出部１３０は、所定期間のメッセージ取得が完了すると、メッセージ記憶部１２０に格納されたメッセージから、個々のトランザクションを構成するメッセージの組（メッセージフロー）を確定する。そしてメッセージフロー検出部１３０は、トランザクションに対応するメッセージフローを示すメッセージフロー情報を、メッセージフロー情報記憶部１４０に格納する。
【００６９】
［ステップＳ３］影響伝搬分析部１５０の異常有無判定部１５１が、正常時か異常時かを判定する。
正常時と異常時（処理時間増大時）は、末端装置での応答時間で区別される。この応答時間が、正常時の平均値を大きく超えて長くなった状態が異常時となる。現実のシステム上では全末端ユーザでの正確な応答時間を測定するのは困難な場合が多い。この場合、システムの最上位層のサーバでの応答時間を、端末装置での応答時間とすることができる。
【００７０】
第２の実施の形態では、異常有無判定部１５１は、メッセージフロー情報記憶部１４０に記憶されている最上位層のサーバでの応答時間が、所定時間を超えていた場合に、異常有りと判定する。例えば異常有無判定部１５１は、最上位層のサーバでの応答時間が０．１秒を越えた場合に、異常時と判定する。なお異常有無判定部１５１は、リクエストメッセージを受信してからレスポンスメッセージを送信するまでの時間を、最上位層のサーバでの応答時間とする。
【００７１】
正常時であれば、処理がステップＳ４に進められる。異常時であれば、処理がステップＳ５に進められる。
［ステップＳ４］正常時処理時間解析部１５２は、正常時のサーバ間の相関解析処理を行う。この処理の詳細は、後述する（図１０参照）。その後、処理がステップＳ６に進められる。
【００７２】
［ステップＳ５］異常時処理時間解析部１５３と相関判定部１５４とは、異常時のサーバ間の相関解析および因果関係判定処理を行う。この処理の詳細は、後述する（図１２、図１３参照）。その後、処理がステップＳ６に進められる。
【００７３】
［ステップＳ６］メッセージ解析部１１０は、解析を終了するべきか否かを判断する。例えばメッセージ解析部１１０は、ユーザから解析終了の操作入力が行われた場合、解析を終了するべきと判断する。また、例えばメッセージ解析部１１０は、予め解析対象期間が指定されていた場合、解析対象期間が終了したときに、解析を終了するべきと判断する。解析を終了するべきと判断された場合、図５に示す処理が終了する。解析を継続するべきと判断された場合、処理がステップＳ１に進められる。
【００７４】
次に、各データ構造例を説明する。まず、業務システムで送受信されるメッセージの流れの具体例を説明する。その後、そのようなメッセージについて管理されるデータ構造例を説明する。
【００７５】
図６は、業務システムにおける通信の流れの具体例を示すシーケンス図である。以下、図６に示す処理をステップ番号に沿って説明する。なお、図６では各ステップにつき、そのメッセージに対応する通信パケットをキャプチャしたタイムスタンプ（時：分：秒．マイクロ秒）が表記されている。
【００７６】
［ステップＳ１１］Ｗｅｂサーバ２００は、端末装置２１からＨＴＴＰリクエストを受信する（時刻“０１：５８：１９．９８７３６０”）。
［ステップＳ１２］Ａｐｐサーバ３００は、Ｗｅｂサーバ２００からＩＩＯＰリクエストを受信する（時刻“０１：５８：２０．０５７２７５”）。
【００７７】
［ステップＳ１３］ＤＢサーバ４００は、Ａｐｐサーバ３００からＤＢリクエストを受信する（時刻“０１：５８：２０．１２０１００”）。
［ステップＳ１４］Ａｐｐサーバ３００は、ＤＢサーバ４００からＤＢレスポンスを受信する（時刻“０１：５８：２０．２２５２２１”）。
【００７８】
［ステップＳ１５〜Ｓ２０］ＤＢサーバ４００は、Ａｐｐサーバ３００からＤＢリクエストを受信する。そして、Ａｐｐサーバ３００は、それに応じてＤＢサーバ４００からＤＢレスポンスを受信する。
【００７９】
［ステップＳ２１］Ｗｅｂサーバ２００は、Ａｐｐサーバ３００からＩＩＯＰレスポンスを受信する（時刻“０１：５８：２１．２２９２５８”）。
［ステップＳ２２］Ｗｅｂサーバ２００は、端末装置２１にＨＴＴＰレスポンスを送信する（時刻“０１：５８：２１．３３０４３１”）。
【００８０】
このようにして、各サーバの間で、メッセージが交換される。
なお、端末装置２２，２３から受け付けるＨＴＴＰリクエストに対しても同様の流れでメッセージが交換される。
【００８１】
図６に示したメッセージは、各サーバ間では、通信パケットによって通信される。運用管理サーバ１００のメッセージ解析部１１０は、各装置間で送受信される通信パケットをキャプチャして、対応するメッセージを復元する。メッセージを復元する方法として、例えば特開２００６−０１１６８３号公報に記載の方法を利用することができる。復元されたメッセージは、メッセージ記憶部１２０に、例えば時系列で記憶される。
【００８２】
図７は、メッセージ記憶部に記憶されたメッセージの一例を示す第１の図である。図８は、メッセージ記憶部に記憶されたメッセージの一例を示す第２の図である。メッセージ記憶部１２０には、復元された複数のメッセージが格納されている。図７、図８では、各メッセージの左に、メッセージ記憶部１２０内での行番号を示している。メッセージ記憶部１２０に記憶された各メッセージは、図６に示した各ステップにおけるメッセージの内容を含む。なお、メッセージ記憶部１２０には、各階層間の処理要求および応答に関連するメッセージ以外のメッセージに関しては図示を省略している。
【００８３】
各行に示されるメッセージには、日付フィールド１２０ａ、時刻フィールド１２０ｂ、セッション番号フィールド１２０ｃ、送信元アドレスフィールド１２０ｄ、送信先アドレスフィールド１２０ｅ、コマンド種別フィールド１２０ｆおよびメッセージフィールド１２０ｇが含まれる。
【００８４】
日付フィールド１２０ａは、メッセージをキャプチャした日付を示すフィールドである。
時刻フィールド１２０ｂは、メッセージをキャプチャした時刻を示すフィールドである。
【００８５】
セッション番号フィールド１２０ｃは、業務システムにおけるメッセージの送受信に用いるリソースを管理するためのセッション番号を示すフィールドである。
送信元アドレスフィールド１２０ｄは、メッセージの送信元のコンピュータのＩＰ（Internet Protocol）アドレスおよびポート番号を示すフィールドである。
【００８６】
送信先アドレスフィールド１２０ｅは、メッセージの送信先のコンピュータのＩＰアドレスおよびポート番号を示すフィールドである。
コマンド種別フィールド１２０ｆは、コマンドのリクエスト／レスポンス属性やプロトコル（ＨＴＴＰ、ＩＩＯＰおよびＤＢクエリ用等）の種別を示すフィールドである。
【００８７】
メッセージフィールド１２０ｇは、コマンド種別フィールド１２０ｆに示されたリクエスト等のメッセージ内容を示すフィールドである。
以下、メッセージ記憶部１２０内での行番号を示して説明する。
【００８８】
例えば、図６に示すステップＳ１１のＨＴＴＰリクエストは１行目に対応する。
日付フィールド１２０ａには、その行に対応する通信パケットをキャプチャした日付として、例えば“２００９／０９／０７”が設定される。
【００８９】
また、時刻フィールド１２０ｂには、パケットキャプチャした時刻として、例えば“０１：５８：１９．９８７３６０”が設定される。
また、セッション番号フィールド１２０ｃには、セッション番号として、例えば“１３２２９０−１”が表示される。セッション番号フィールド１２０ｃには、リクエスト／レスポンスの組で一意の情報が取得されている。これは、同一のセッションを用いてリクエストと、そのリクエストに対応するレスポンスが交換されるためである。例えば、１行目のＨＴＴＰリクエストに対応するＨＴＴＰレスポンスとして１８行目のメッセージを特定できる。
【００９０】
１行目のメッセージの送信元アドレスフィールド１２０ｄには、ＨＴＴＰリクエストを送信した端末装置２１のＩＰアドレスとポート番号として、例えば“１９４．１８５．３９．２４：５１２７２”が設定される。
【００９１】
１行目のメッセージの送信先アドレスフィールド１２０ｅには、ＨＴＴＰリクエストの送信先であるＷｅｂサーバ２００のＩＰアドレスとポート番号として、例えば、“１９４．２３．６．２２６：１０４４３”が設定される。
【００９２】
１行目のメッセージのコマンド種別フィールド１２０ｆには、ＨＴＴＰリクエストに関するメッセージであることを示す情報として、例えば“Ｒｅｑｕｅｓｔ  ＨＴＴＰ”という情報が設定される。また、１行目のメッセージのメッセージフィールド１２０ｇには、ＨＴＴＰリクエストの内容として、例えば“ＰＯＳＴ  ／ｃｇｉ−ｂｉｎ／・・・”という情報が設定される。
【００９３】
このように、メッセージ記憶部１２０内のメッセージを参照することで、何れのサーバに対して、どのようなメッセージが送信されたかを検出することができる。
ここで、メッセージ記憶部１２０内のメッセージ中のその他のＩＰアドレスと各装置との対応関係は次の通りである。
【００９４】
“１９４．２３．７．１６８”は、Ａｐｐサーバ３００のＩＰアドレスを示す。“１９４．２３．８．１９８”は、ＤＢサーバのＩＰアドレスを示す。“１９４．１８５．３９．２５”は、端末装置２２のＩＰアドレスを示す。例えば、Ｗｅｂサーバ２００と端末装置２２との間でのＨＴＴＰリクエスト／ＨＴＴＰレスポンスの送受信は、メッセージ記憶部１２０内の６，２０行目のメッセージが対応する。また、Ｗｅｂサーバ２００とＡｐｐサーバ３００との間でのＩＩＯＰリクエスト／ＩＩＯＰレスポンスの送受信は、メッセージ記憶部１２０内の２，７，１７，１９行目のメッセージに対応する。また、Ａｐｐサーバ３００とＤＢサーバ４００との間でのＤＢリクエスト／ＤＢレスポンスの送受信は、メッセージ記憶部１２０内の３〜５、８〜１６行目のメッセージに対応する。
【００９５】
なお、日付フィールド１２０ａおよび時刻フィールド１２０ｂの情報として、メッセージ解析部１１０が通信パケットをキャプチャしたタイミングにおけるタイムスタンプを設定するものとしたが、設定方法はこれに限らない。例えば、通信パケット中に各サーバにおけるパケットの生成時刻や送信時刻の情報が含まれている場合には、その日時を日付フィールド１２０ａおよび時刻フィールド１２０ｂの情報としてもよい。その場合、各サーバで精度良く時刻同期が行われていることが望ましい。
【００９６】
図７，図８に示した時系列のメッセージに基づいて、メッセージフロー検出部１３０により、一連の処理を示すメッセージフローが検出される。例えば、予め定義されたトランザクションモデルに適合するメッセージの組が、メッセージフローとして検出される。このようなメッセージフローの検出方法として、例えば特開２００６−０１１６８３号公報に記載の方法を利用することができる。検出されたメッセージフローは、例えば適合するトランザクションモデルに応じて種別が識別される。そして、メッセージフロー検出部１３０により、種別ごとに分類されたメッセージフローを示すメッセージフロー情報が、メッセージフロー情報記憶部１４０に格納される。
【００９７】
図９は、メッセージフロー情報記憶部のデータ構造例を示す図である。メッセージフロー情報記憶部１４０には、トランザクションごとのメッセージフロー情報１４１，１４２，１４３・・・が格納されている。なお、図９に示すメッセージフロー情報１４１，１４２，１４３・・・は、第１の実施の形態におけるトランザクション情報２ａ，２ｂ，２ｃ，・・・の一例である。
【００９８】
メッセージフロー情報１４１には、項番を示す項目、時刻を示す項目、セッション番号を示す項目、プロトコルを示す項目およびＲｅｑｕｅｓｔ／Ｒｅｓｐｏｎｓｅを示す項目が設けられている。各項目の横方向に並べられた情報同士が互いに関連付けられて、１つのメッセージに関する情報を示す。
【００９９】
項番を示す項目には、レコードを識別する番号が設定される。時刻を示す項目には、メッセージに対応する通信パケットをキャプチャした時刻が設定される。セッション番号を示す項目には、メッセージを送信するために用いられたセッションを識別するセッション番号が設定される。プロトコルを示す項目には、メッセージが何れのプロトコルによるものかを示す情報が設定される。Ｒｅｑｕｅｓｔ／Ｒｅｓｐｏｎｓｅを示す項目には、そのメッセージがリクエスト／レスポンスの何れのものであるかを示す情報が設定される。
【０１００】
メッセージフロー情報１４１には、例えば、項番が“１”、時刻が“０１：５８：１９．９８７”、セッション番号が“１３２２９０”、プロトコルが“ＨＴＴＰ”、Ｒｅｑｕｅｓｔ／Ｒｅｓｐｏｎｓｅが“Ｒｅｑｕｅｓｔ”という情報が設定される。
【０１０１】
このレコードは、メッセージ記憶部１２０内の１行目のメッセージに対応する。ただし、時刻にはミリ秒までを設定している。この点、更に短い時間単位（例えば、マイクロ秒単位）で時刻を取得してもよい。また、セッション番号には図８に示したセッション番号フィールド１２０ｃに含まれる情報のうち、リクエスト／レスポンスの組を特定するために必要な最低限の情報を設定している。以下、セッション番号という場合、メッセージフロー情報１４１のセッション番号を示す項目に設定された情報を示すものとする。
【０１０２】
メッセージフロー情報には、各メッセージの通信時刻が設定されている。すなわち、キャプチャしたパケットに基づいて、メッセージフローを構成する各メッセージの通信時刻が測定されている。また、ある階層へ処理要求のメッセージが到着して、その処理に関連して下位層へ処理を要求するメッセージが送信された場合に、それらの間の関連付けは、メッセージフロー内の連続するメッセージに基づいて判断できる。すなわち、プロトコル「ＩＩＯＰ」のリクエストメッセージの後に、プロトコル「ＤＢ」のリクエストメッセージがあれば、「ＩＩＯＰ」のリクエストメッセージに関連して「ＤＢ」のリクエストメッセージが出力されたことが分かる。また、上位層のリクエストメッセージからレスポンスメッセージまでの時間帯内の下位層の各リクエストメッセージは、その上位層のリクエストメッセージに応じて実行された処理に関連して実行されていることが分かる。
【０１０３】
このように第２の実施の形態では、ネットワーク上を流れるＩＰパケットをキャプチャして、そこからメッセージ送受の情報を取得することで、一連の処理を示すメッセージフロー情報を生成している。この方法の利点としては、観測対象のシステムに余計な負荷を与えないので正確な挙動を観測できるということがある。また、１か所のサーバでキャプチャしてその際にタイムスタンプを付与できるのでサーバ間の時計誤差を気にしなくてよいという利点もある。
【０１０４】
なお第２の実施の形態では、各メッセージ上にそれらを関連付ける情報が付加されてない場合を想定している。そのため、メッセージフロー検出部１３０によるトランザクションモデルとの適合の有無の判定などが行われている。他方、各メッセージ上にそれらを関連付ける情報が付加されている場合もあり得る。例えば、最上位のサーバ（Ｗｅｂサーバ２００）に入力されたリクエストメッセージに応じて実行されるトランザクションの識別情報が、そのトランザクションで通信される各メッセージに付与しているような場合である。このような場合、メッセージフロー検出部１３０は、同一の識別情報が付与されたメッセージを抽出して、メッセージフローを生成することができる。
【０１０５】
なお、本実施の形態では、特開２００６−０１１６８３号公報に記載の方法を利用してメッセージフロー情報を作成しているが、メッセージフロー情報の作成手法は特開２００６−０１１６８３号公報に記載の方法に限定されるものではない。すなわち、個々の業務処理に関する複数階層間を跨った一連のメッセージフローを測定し、その中での各メッセージの正確な送受時刻を取得する手法は何通りか考えられる。
【０１０６】
他の方法としては、例えば、Ｗｅｂ３階層システムを構成する各Ｗｅｂサーバ２００、Ａｐｐサーバ３００、およびＤＢサーバ４００でファイルなどに記録したメッセージ送信／受信ログを利用する方法がある。この方法を適用する場合、Ｗｅｂサーバ２００、Ａｐｐサーバ３００、およびＤＢサーバ４００が、受信メッセージとその処理に関連した送信メッセージの関連付けを行い、ログ情報としてＨＤＤなどの記録装置に記録する。運用管理サーバ１００は、Ｗｅｂサーバ２００、Ａｐｐサーバ３００、およびＤＢサーバ４００から、記録した情報を取得する。この手法では、Ｗｅｂサーバ２００、Ａｐｐサーバ３００、およびＤＢサーバ４００が、受信したリクエストメッセージと、そのリクエストメッセージに応じた処理により下位の層のサーバへ出力したリクエストメッセージとを関連付けている。そのため、運用管理サーバ１００では、１つのトランザクションを構成する上位層のメッセージと下位層のメッセージとを容易に関連付けることができ、メッセージフローの作成が容易となる。ただし、この方法を適用する場合、Ｗｅｂサーバ２００、Ａｐｐサーバ３００、およびＤＢサーバ４００各サーバの内部時計を、同期させておくことが好ましい。
【０１０７】
図９に示すようなメッセージフロー情報に基づいて、影響伝搬分析部１５０によって階層の異なるサーバ間の影響伝搬の有無が分析される。
影響伝搬分析部１５０の異常有無判定部１５１は、処理の異常の有無を判定する。例えば、異常有無判定部１５１には、端末装置２１〜２３に対する最上位層のサーバの平均応答時間の閾値が設定されている。異常有無判定部１５１は、メッセージフロー情報記憶部１４０内の各メッセージフロー情報における最上位の層のサーバが端末装置からリクエストを受け付けてから、応答を返すまでの応答時間を計算する。図９のメッセージフロー情報１４１の例であれば、項番１２の時刻から項番１の時刻を減算することで、メッセージフロー情報１４１で示されるトランザクションの応答時間が計算される。異常有無判定部１５１は、所定期間内に実行されたトランザクションの平均応答時間が、応答時間の閾値を超えていた場合、異常があると判定する。
【０１０８】
なお、トランザクションの応答時間以外の情報に基づいて異常の判定を行ってもよい。例えば、各階層のサーバでの平均処理時間の閾値を設定しておいてもよい。その場合、異常有無判定部１５１は、何れかの層のサーバにおいて、処理時間が閾値を超えた場合、異常有りと判定する。
【０１０９】
異常有無判定部１５１は、異常の有無を、影響伝搬分析部１５０内の他の要素に通知する。例えば、異常有無判定部１５１は、異常を検出した期間と異常を検出していない期間とを正常時処理時間解析部１５２と異常時処理時間解析部１５３とに通知する。
【０１１０】
本実施の形態では、処理時間が短い正常時のメッセージフロー情報から計算した相関係数と、異常時（処理時間増大時）のメッセージフロー情報から計算した相関係数とに基づいて影響伝搬の有無が判定される。正常時の相関係数は、正常時処理時間解析部１５２によって計算される。異常時の相関係数は、異常時処理時間解析部１５３によって計算される。
【０１１１】
まず、正常時の相関関係を示す値の計算手順について説明する。
図１０は、正常時の処理時間解析処理手順を示すフローチャートの一例である。以下、図１０に示す処理をステップ番号に沿って説明する。
【０１１２】
［ステップＳ３１］正常時処理時間解析部１５２は、階層ごとに、ステップＳ３２〜Ｓ３９の処理を実行する。第２の実施の形態では、階層は、ＨＴＴＰ層、ＩＩＯＰ層、ＤＢ層の３階層である。そこで、正常時処理時間解析部１５２は、未処理の階層を１つ選択する。
【０１１３】
［ステップＳ３２］正常時処理時間解析部１５２は、トランザクションごとにステップＳ３３の処理を実行する。すなわち正常時処理時間解析部１５２は、メッセージフロー情報記憶部１４０に格納されているメッセージフローで示される未処理のトランザクションを１つ選択する。
【０１１４】
［ステップＳ３３］正常時処理時間解析部１５２は、選択したトランザクションに関して、時間軸上の区間別の処理時間を算出する。第２の実施の形態では、正常時処理時間解析部１５２は、各階層において、メッセージの通信時刻に基づき、処理時間を４つの区間種別に分けて算出する。
【０１１５】
図１１は、１トランザクションにおけるサーバの処理区間の分類例を示す図である。図１１には、１つのトランザクションにおける下位２層の各サーバの処理を示している。上位層のサーバは、例えばＡｐｐサーバ３００である。下位層のサーバは、例えばＤＢサーバ４００である。
【０１１６】
上位層のサーバでは、受信したリクエストメッセージに応じて処理が実行され、その処理中に下位層のサーバに対して３回の問い合わせが行われている。上位層のサーバは、下位層のサーバに問い合わせを行い、その応答を待っている間は待ち時間であり、処理は実行されていない。そのため、上位層のサーバでは、４回に分けて処理３１〜３４が実行されている。
【０１１７】
一方、下位層のサーバでは、上位層のサーバから問い合わせ（リクエストメッセージ）を受け取るごとに、処理４１〜４３が実行されている。
第２の実施の形態では、上位層のサーバの処理時間を、以下の４つ区間種別に分類する。
【０１１８】
・第１種区間
第１種区間は、「問い合わせ開始前」の区間である。すなわち、上位層のサーバにおける処理開始時点から、下位層へ最初の問い合わせのリクエストメッセージを送信するまでの時間が、第１種区間である。図１１の例では、処理３１の実行されている時間が、第１種区間に該当する。
【０１１９】
・第２種区間
第２種区間は、「複数問い合わせ間」の区間である。すなわち、下位層のサーバへの問い合わせのリクエストメッセージに対応するレスポンスメッセージを受け取ってから、下位層のサーバへ次の問い合わせを発行するまでの時間が、第２種区間である。図１１の例では、処理３２，３３が実行されている時間が、第２種区間に該当する。なお、１つのトランザクション内に第２種区間が複数存在する場合は、例えば１回あたりの処理時間の平均を取ることで、第２種区間の処理の処理時間とすることができる。
【０１２０】
・第３種区間
第３種区間は、「問い合わせ完了後」の区間である。すなわち、下位層のサーバへの最後の問い合わせのリクエストメッセージに対応するレスポンスメッセージを受け取ってから、上位層における処理を終了するまでの時間が、第３種区間である。図１１の例では、処理３４が実行されている時間が、第３種区間に該当する。
【０１２１】
なお、下位層へ対する問い合わせが１回しかないときには、「複数問い合わせ間」の区間（第２種区間）は存在しない。また、最下位層のサーバ（図１１の下位層のサーバ）においては、そこより下位への問い合わせは存在しないので、このような３つの区間が存在しない。その場合は、代わりに最下位層のサーバにおける各処理４１〜４３の処理時間を計算する。最下位層のサーバにおける処理の処理時間は、上位階層からの処理要求が複数回実施される場合は複数存在することになる。この場合は、処理１回あたりの平均値を、最下位層における処理時間とする。
【０１２２】
また、最下位層のサーバの処理時間は、上位層のサーバの区間種別とは別の区間種別に分類される。
・第４種区間
第４種区間は、「処理時間全体」の区間である。最下位層のサーバでは、上位層のサーバからのリクエストメッセージを受信してから、上位層のサーバにレスポンスメッセージを応答するまで、他のサーバの処理待ちの時間が挟まらないため、第１〜第３種区間は存在しない。そこで、リクエストメッセージを受信してからレスポンスメッセージを応答するまでの処理時間を、第４種区間とする。例えば、図１１であれば、処理４１〜４３が実行されている時間が、第４種区間に相当する。
【０１２３】
図１０に戻り、ステップＳ３４以降の処理を説明する。
［ステップＳ３４］正常時処理時間解析部１５２は、すべてのトランザクションについてステップＳ３３の処理が完了したか否かを判断する。正常時処理時間解析部１５２は、未処理のトランザクションがある場合、処理をステップＳ３２に進める。正常時処理時間解析部１５２は、すべてのトランザクションについてステップＳ３３の処理が完了した場合、処理をステップＳ３５に進める。
【０１２４】
［ステップＳ３５］正常時処理時間解析部１５２は、区間種別（第１〜第４種区間）ごとに、ステップＳ３６，Ｓ３７の処理を実行する。すなわち正常時処理時間解析部１５２は、未処理の区間種別から、区間種別を１つ選択する。
【０１２５】
［ステップＳ３６］正常時処理時間解析部１５２は、ステップＳ３５で選択した区間種別の平均処理時間を求める。すなわち正常時処理時間解析部１５２は、所定の時間帯ごとに、選択した階層の選択した区間種別の処理に関する処理時間の平均値（平均処理時間）を計算する。
【０１２６】
この際、正常時処理時間解析部１５２は、例えば時系列推移を判定するための１分ごとの平均処理時間と、正常時と異常時との処理時間の増加率を計算するための解析期間全体（例えば１４分）における平均処理時間とを算出する。
【０１２７】
［ステップＳ３７］正常時処理時間解析部１５２は、正常時の平均処理時間を、正常時処理時間記憶部１５２ａに格納する。
［ステップＳ３８］正常時処理時間解析部１５２は、すべての区間種別についてステップＳ３６，Ｓ３７の処理が完了したか否かを判断する。正常時処理時間解析部１５２は、未処理の区間種別がある場合、処理をステップＳ３５に進める。正常時処理時間解析部１５２は、すべての区間種別に対する処理が完了した場合、処理をステップＳ３９に進める。
【０１２８】
［ステップＳ３９］正常時処理時間解析部１５２は、代表区間の処理時間の時系列推移を求める。ここで正常時処理時間解析部１５２は、第２の実施の形態では以下のようにして代表区間を決定する。
【０１２９】
正常時処理時間解析部１５２は、「複数問い合わせ間」の区間（第２種区間）がある場合、「複数問い合わせ間」を最優先に選択し、代表区間に決定する。また正常時処理時間解析部１５２は、「複数問い合わせ間」区間が存在しない場合は「問い合わせ完了後」区間の処理時間を代表区間とする。さらに正常時処理時間解析部１５２は、「複数問い合わせ間」区間と「問い合わせ完了後」区間とのいずれも存在しない場合（例えば、最下位層の場合）は、個別に実行されたすべて処理時間全体の区間（第４種区間）を代表区間とする。
【０１３０】
時系列推移の計算に関し、例えば正常時処理時間解析部１５２は、１分間隔で解析対象時間を分割し、１分間内で実行された処理に関する処理時間の平均値を求める。そして正常時処理時間解析部１５２は、１分間ごとの処理時間の平均値が、所定期間（例えば３０分間）にどのように変化したか求める。
【０１３１】
ここで、処理時間の時系列推移の粒度と長さについて考察する。
・時系列推移の粒度
第２の実施の形態では、平均値を１分ごとに集計して、１分ごとの平均処理時間の時系列推移を利用している。メッセージ送受の時刻は１ミリ秒以下の精度で測定できているので、精度としてはそのレベルで集計しているが、集計する単位時間はそんなに細かくする必要はなく、１分単位程度で十分である。集計の単位時間を細かくしすぎると、相関を求める際の計算量が大きくなったり、処理時間の一時的な増減に相関係数が影響を受けたりといった悪影響が考えられる。逆に単位時間を大きくし過ぎると、短時間しか持続しなかったボトルネックの場合に正しく判定できなくなってしまう。
・時系列推移の長さ
解析対象とする時系列の長さはあまり短いと、例え相関係数が高くてもそれが統計的に有意であると言えなくなる。そこで、最低限、統計的に有意な解析結果が得られる程度の長さの時系列推移を求める。他方、時系列の長さが長すぎると、異常時（処理時間増大期間）の時系列推移内に、正常時の情報を含み、正しく判定できなくなってしまう可能性が大きくなる。これらのことを考慮すると、１０〜３０程度の標本数となるように時系列推移の長さ（解析対象期間）を決定するのが適当である。後述する図１６に示す例では１分ごとの集計で、１４分間の時系列推移を利用している。この場合の標本数は１４である。
【０１３２】
［ステップＳ４０］正常時処理時間解析部１５２は、すべての階層についてステップＳ３２〜Ｓ３９の処理が完了したか否かを判断する。正常時処理時間解析部１５２は、未処理の階層がある場合、処理をステップＳ３１に進める。また正常時処理時間解析部１５２は、全ての階層について処理が完了している場合、処理をステップＳ４１に進める。
【０１３３】
［ステップＳ４１］正常時処理時間解析部１５２は、階層の組み合わせごとに、階層間の時系列推移の相関係数を算出する。
ここで相関係数とは、２つの変数の間の相関（類似性の度合い）を示す数値である。一つの階層の処理時刻の時系列推移が（ｘ1，ｘ2，ｘ3，...，ｘn）、一つの階層の処理時刻の時系列推移が（ｙ1，ｙ2，ｙ3，...,ｙn）のとき、それらの間の相関係数ｒxyは以下のように計算される。
【０１３４】
【数１】
0005471859.tif 000002
【０１３５】
［ステップＳ４２］正常時処理時間解析部１５２は、階層間の相関係数を正常時相関係数記憶部１５２ｂに格納する。その後、正常時の処理が終了する。
以上のようにして、正常時の階層間の相関係数が算出される。
【０１３６】
次に、異常時（処理時間増大時）の相関係数解析処理について説明する。
図１２は、異常時の処理時間解析処理の手順の一例を示すフローチャートの前半である。以下、図１２に示す処理をステップ番号に沿って説明する。
【０１３７】
［ステップＳ５１］異常時処理時間解析部１５３は、処理時間が増大した階層ごとに、ステップＳ５２〜Ｓ６３（図１３参照）の処理を実行する。すなわち異常時処理時間解析部１５３は、処理時間が増大した階層のうち、未処理の階層を１つ選択する。なお異常時処理時間解析部１５３は、処理時間が増大した階層に限らず、すべての階層に関して、ステップＳ５２〜Ｓ６２の処理を実行することもできる。
【０１３８】
［ステップＳ５２］異常時処理時間解析部１５３は、ステップＳ５１で選択された階層に関し、トランザクションごとに、ステップＳ５３の処理を実行する。すなわち異常時処理時間解析部１５３は、メッセージフロー情報記憶部１４０に格納されているメッセージフローで示される未処理のメッセージフローを１つ選択する。
【０１３９】
［ステップＳ５３］異常時処理時間解析部１５３は、ステップＳ５２で選択したトランザクションに関して、区間別の処理時間を算出する。この処理の詳細は、正常時の処理時間解析処理におけるステップＳ３３（図１０参照）と同様である。
【０１４０】
［ステップＳ５４］異常時処理時間解析部１５３は、すべてのトランザクションについてステップＳ５３の処理が完了したか否かを判断する。異常時処理時間解析部１５３は、未処理のトランザクションがある場合、処理をステップＳ５２に進める。異常時処理時間解析部１５３は、すべてのトランザクションについて処理が完了した場合、処理をステップＳ５５に進める。
【０１４１】
［ステップＳ５５］異常時処理時間解析部１５３は、区間種別（第１〜第４種区間）ごとに、ステップＳ５６，Ｓ５７の処理を実行する。すなわち異常時処理時間解析部１５３は、未処理の区間種別を１つ選択する。
【０１４２】
［ステップＳ５６］異常時処理時間解析部１５３は、ステップＳ５５で選択した区間種別の平均処理時間を求める。すなわち異常時処理時間解析部１５３は、所定の時間帯ごとに、選択した階層の選択した区間種別の処理に関する処理時間の平均値（平均処理時間）を計算する。平均処理時間を計算する所定の時間帯は、例えば、解析対象期間全体の時間帯と、解析対象期間を１分間隔で分割して得られる時間帯である。計算結果は、異常時相関係数記憶部１５３ｂに格納される。
【０１４３】
［ステップＳ５７］異常時処理時間解析部１５３は、平均処理時間の正常時からの増加率を計算する。具体的には、異常時処理時間解析部１５３は、正常時処理時間解析部１５２からステップＳ３６で求め正常時の平均処理時間を取得する。そして異常時処理時間解析部１５３は、取得した正常時の平均処理時間に対するステップＳ５６で求めた異常時の平均処理時間の増加率を求める。
【０１４４】
平均処理時間の増加率の計算は、４つの区間について計算される。すなわち、異常時処理時間解析部１５３は、第１〜第４種区間について、正常時と異常時の区間ごとの平均処理時間を比較する。具体的には、４つの区間それぞれの平均処理時間の増加率は、次の式で計算される。
平均処理時間の増加率＝異常時の平均処理時間／正常時の平均処理時間
異常時処理時間解析部１５３は、ステップＳ５６で算出した平均処理時間とステップＳ５７で算出した増加率とを、異常時処理時間記憶部１５３ａに格納する。
【０１４５】
［ステップＳ５８］異常時処理時間解析部１５３は、すべての区間種別についてステップＳ５６，Ｓ５７の処理が完了したか否かを判断する。異常時処理時間解析部１５３は、未処理の区間種別があれば、処理をステップＳ５５に進める。異常時処理時間解析部１５３は、すべての区間種別について処理が完了していれば、処理をステップＳ６１（図１３参照）に進める。
【０１４６】
図１３は、異常時の処理時間解析処理の手順の一例を示すフローチャートの後半である。以下、図１３に示す処理をステップ番号に沿って説明する。
［ステップＳ６１］相関判定部１５４は、第１〜３種区間に分類される処理を有する階層において、「問い合わせ開始前」の区間（第１種区間）だけが処理時間が増加していて、他の区間（第２，第３種区間）の処理時間が増加していないという条件が満たされるか否かを判定する。すなわち、相関判定部１５４は、ステップＳ５７（図１２参照）による各区間の増加率の計算の結果、増加率が一定の閾値（例えば２．０）より大きい値であれば、その区間の処理時間が増加していると判断する。そこで相関判定部１５４は、「問い合わせ開始前」の区間（第１種区間）の増加率が一定の閾値より大きく、かつ「複数問い合わせ間」の区間（第２種区間）と「問い合わせ完了後」の区間（第３種区間）の増加率が共に一定の閾値以下であるという条件を判断する。この条件が満たされた場合、相関判定部１５４は、「問い合わせ開始前」の区間のみ処理時間が増加していると判断する。
【０１４７】
「問い合わせ開始前」の区間のみ処理時間が増加している場合、処理がステップＳ６２に進められる。そうでない場合、処理がステップＳ６３に進められる。
なお、ステップＳ６１の判定は「問い合わせ開始前」区間が存在しない階層（最下層）においては実施されず、処理がステップＳ６３に進められる。
【０１４８】
［ステップＳ６２］相関判定部１５４は、現在処理している階層の１つ下位層のサーバにボトルネック原因となる異常が生じていると判定する。判定結果は、例えばモニタ１１に表示される。その後、処理が終了する。
【０１４９】
図１４は、「問い合わせ開始前」区間のみ処理時間が増加した状況を示す図である。図１４の例は、図１１に示したトランザクションにおける処理３１の処理時間のみが増加している。図１４に示すように、処理時間が増加しているのが「問い合わせ開始前」区間だけで、他の２つの区間の処理時間が増加していないならば、その階層の処理時間の増加はサーバの負荷増大によるものではないと推定できる。これは、「問い合わせ開始前」区間だけの処理時間の増加であれば、上位層のサーバにおいて、下位層のサーバへの問い合わせを開始するためにコネクション待ちが発生しているだけと考えられるためである。
【０１５０】
例えば、サーバ間に予め複数のコネクションを接続しておき、リクエストメッセージを送信する際には、サーバは、その時点で使用していないコネクションを用いて送信するという通信形態がある。この場合、送信側のサーバは、用意された複数のコネクションがすべて使用中であれば、いずれかのコネクションが空くまで待つ。このようなコネクションの空き待ちの時間は、送信側（上位層）のサーバが原因で発生している場合より、受信側（下位層）のサーバにおけるリクエストメッセージに応じた処理の遅延により生じる場合が多い。そこで異常時処理時間解析部１５３は、第１〜３種区間の３つの区間それぞれの増加率のうち、「問い合わせ開始前」の区間の増加率しか一定の閾値（例えば２．０）を超えなかった場合は、１つ下位層のサーバにボトルネックなどの問題があると判定する。
【０１５１】
図１３に戻り、ステップＳ６３以降の処理について説明する。
［ステップＳ６３］異常時処理時間解析部１５３は、「複数問い合わせ間」の区間（第２種区間）の処理時間の時系列推移を求める。この処理の詳細は、正常時の相関解析処理におけるステップＳ３９（図１０参照）と同様である。
【０１５２】
［ステップＳ６４］異常時処理時間解析部１５３は、処理時間が増大したすべての階層についてステップＳ５２〜Ｓ６２の処理が完了しかた否かを判断する。異常時処理時間解析部１５３は、処理時間が増大した階層のうち未処理の階層がある場合、処理をステップＳ５１（図１２参照）に進める。異常時処理時間解析部１５３は、処理時間が増大したすべての階層について処理が完了した場合、処理をステップＳ６５に進める。
【０１５３】
［ステップＳ６５］異常時処理時間解析部１５３は、処理時間が増大している２つの階層の代表区間の処理時間の時系列推移について、それらの時系列推移の相関係数を求める。例えば、異常時処理時間解析部１５３は、各階層の代表区間における処理時間の増加率が一定の閾値（例えば２．０）より大きい場合、その階層のサーバの処理時間が増大していると判断する。次に異常時処理時間解析部１５３は、処理時間が増大している２つの階層の組を作成し、作成した組に属する階層のサーバの代表区間の処理時間に関する時系列推移の相関係数を算出する。
【０１５４】
異常時処理時間解析部１５３は、算出した相関係数を異常時相関係数記憶部１５３ｂに格納する。
［ステップＳ６６］相関判定部１５４は、ステップＳ６５で算出した異常時の相関係数が所定の閾値（例えば０．６６）より大きいか否かを判断する。異常時の相関係数が閾値より大きければ，処理がステップＳ６８に進められる。異常時の相関係数が閾値以下であれば、処理がステップＳ６７に進められる。
【０１５５】
［ステップＳ６７］相関判定部１５４は、２つの階層の処理時間が増大したことに関し、因果関係はないと判断する。判断結果は、例えばモニタ１１に表示される。その後、処理が終了する。
【０１５６】
［ステップＳ６８］相関判定部１５４は、ステップＳ６５で異常時の相関係数を算出した２つの階層の組に関し、ステップＳ４１（図１０参照）で算出した正常時の相関係数が所定の閾値（例えば０．６６）より大きいか否かを判断する。正常時の相関係数が閾値より大きければ，処理がステップＳ６９に進められる。正常時の相関係数が閾値以下であれば、処理がステップＳ７０に進められる。
【０１５７】
［ステップＳ６９］相関判定部１５４は、２つの階層の処理時間が増大したことに関し、因果関係は不明であると判定する。すなわち、正常時と異常時との相関係数が共に閾値より大きい場合、サーバの問題ではなく、端末装置からＷｅｂ３階層システムに要求された処理数が過大である場合があり得る。このような場合、例えば、処理時間が増大した各階層におけるサーバの機能増強などの対策が有効となる。他方、下位層のサーバの異常が、上位層のサーバの処理時間の増大を引き起こしており、障害対策としては下位層のサーバに関してのみ行えばよい場合もありうる。そこで第２の実施の形態では、正常時と異常時との相関係数が共に閾値より大きい場合、相関判定部１５４は、２つの階層の処理時間が増大したことに関し、因果関係が不明と判断する。判断結果は、例えばモニタ１１に表示される。その後、処理が終了する。
【０１５８】
［ステップＳ７０］相関判定部１５４は、２つの階層のサーバの処理時間が増大したことに関し、因果関係があると判定する。判断結果は、例えばモニタ１１に表示される。その後、処理が終了する。
【０１５９】
以上のようにして、階層間のサーバの処理時間の増大に関する因果関係の有無が判定される。因果関係ありと判定された場合、システムの管理者は、所持時間が増大した階層の各サーバのうち、下位層のサーバの処理時間の増大原因を優先的に調査する。そして管理者は、下位層のサーバの処理時間の増大原因を除去する。すると、下位層のサーバの処理時間が正常状態に戻ると共に、因果関係を有している上位層のサーバの処理時間も正常状態に戻るものと考えられる。
【０１６０】
次に、第２の実施の形態に示した処理による解析例を具体的に説明する。
正常時の処理としては、まずトランザクションごとの、区間種別ごとの処理時間が計算される（図１０のステップＳ３３）。例えば、区間ごとの処理時間の計算を、図６に示したトランザクションの階層ごとの処理時間の計算に適用すると、図９に示したメッセージフロー情報に基づいて、正常時処理時間解析部１５２において以下のような計算が行われる。
【０１６１】
まず、図６、図９に示したＷｅｂサーバ２００の処理時間は、問い合わせ開始前（第１種区間）と問い合わせ完了後（第３種区間）とで構成される。第２種の区間がないため、第３種区間の処理時間が、Ｗｅｂサーバ２００の平均処理時間として採用され、以下のような式で計算される。
【０１６２】
・第１種区間（問い合わせ開始前）の処理時間の計算
(01:58:20.057 - 01:58:19.987) / 1 = 0.070(s)
・第３種区間（問い合わせ完了後）の処理時間の計算
(01:58:21.330 - 01:58:21.299) / 1 = 0.031(s)
Ａｐｐサーバ３００の処理時間は、以下のような式で計算される。
【０１６３】
・第１種区間（問い合わせ開始前）の処理時間の計算
01:58:20.120 - 01:58:20.057 = 0.063(s)
・第２種区間（複数問い合わせ間）の処理時間の計算
図６の例では、第２種区間に該当する処理が３回実行されており、３回の処理時間の平均が計算される。
((01:58:20.321 - 01:58:20.225) + (01:58:20.793 - 01:58:20.560) + (01:58:21.121 - 01:58:20.991)) / 3 = 0.153(s)
・第３種区間（問い合わせ完了後）の処理時間の計算
01:58:21.299 - 01:58:21.220 = 0.079(s)
ＤＢサーバ４００は、最下位層に属し、他のサーバへの問い合わせを行っていない。そのため処理時間全体（第４種区間）のみが存在する。図６の例では、第４種区間に相当する処理が４回実行されており、４回の処理時間の平均が計算される。
【０１６４】
・第４種区間（処理時間全体）の処理時間の計算
((01:58:20.225 - 01:58:20.120) + (01:58:20.560 - 01:58:20.321) + (01:58:20.991 - 01:58:20.793) + (01:58:21.220 - 01:58:21.121)) / 4 = 0.160(s)
これらは、端末装置からの１つの処理要求に応じて実行された１つのトランザクションに関してのみ計算した値である。実際のシステムでは多数の処理要求に応じたトランザクションが同じ同時間帯に重複して処理されている。そこで正常時処理時間解析部１５２は、各トランザクションによって求めた各階層の区間ごとの処理時間の平均値を算出する（図１０のステップＳ３６）。算出された平均処理時間は、正常時処理時間解析部１５２が有する正常時処理時間記憶部１５２ａに格納される。
【０１６５】
図１５は、正常時平均処理時間記憶部のデータ構造の一例を示す図である。正常時処理時間記憶部１５２ａには、例えば処理時間管理テーブル１５２ｃが格納されている。処理時間管理テーブル１５２ｃには、階層、区間、および平均処理時間の欄が設けられている。
【０１６６】
階層の欄には、階層の識別子が設定される。図１５の例では、上位の層から順に、昇順の番号が振られている。最上位のＷｅｂサーバ２００が属する階層は「階層１」である。Ａｐｐサーバ３００が属する階層は「階層２」である。ＤＢサーバ４００が属する階層は「階層３」である。
【０１６７】
区間の欄には、各階層内での区間種別が設定される。図６に示すようなトランザクションの場合、最上位の「階層１」の階層には、「問い合わせ開始前」の区間（第１種区間）と「問い合わせ完了後」の区間（第３種区間）とが存在する。「階層２」の階層には、「問い合わせ開始前」の区間（第１種区間）、「複数問い合わせ間」の区間（第２種区間）、および「問い合わせ完了後」の区間（第３種区間）が存在する。最下位の「階層３」の階層には、「処理時間全体」の区間（第４種区間）が存在する。
【０１６８】
平均処理時間の欄には、対応する階層における対応する区間の処理時間の平均値が秒単位で設定される。
図１５に示す処理時間管理テーブル１５２ｃのようなデータが、例えば１分間隔で１４回取得され、その都度、正常時処理時間記憶部１５２ａに、新たな処理時間管理テーブルが追加格納される。
【０１６９】
正常時処理時間解析部１５２は、正常時処理時間記憶部１５２ａに格納された平均処理時間に基づいて、正常時の処理時間の時系列推移を、各階層の区間種別ごとに求める（図１０のステップＳ３９）。
【０１７０】
図１６は、正常時の処理時間の時系列推移を示す図である。図１６では、横軸に時刻、縦軸に平均処理時間を取ったグラフによって、正常時の処理時間の時系列推移を示している。
【０１７１】
図１６には、Ａｐｐサーバ３００とＤＢサーバ４００との時系列推移が示されている。なお、図１６の例では、「複数問い合わせ間」の区間（第２種区間）が存在する。そのためステップＳ３９の処理では、「複数問い合わせ間」の区間に関してのみ、時系列推移が解析される。ただし、図１６では、「問い合わせ開始前」の区間（第１種区間）や「問い合わせ完了後」の区間（第３種区間）の時系列推移についても参考のために示している。
【０１７２】
時系列推移が算出されると、上位層と下位層との間の相関係数が算出される（図１０のステップＳ４１）。そして、算出された相関係数が、正常時相関係数記憶部１５２ｂに格納される。
【０１７３】
図１７は、正常時相関係数記憶部のデータ構造の一例を示す図である。正常時相関係数記憶部１５２ｂには、例えば相関係数管理テーブル１５２ｄが格納されている。相関係数管理テーブル１５２ｄには、上位層、下位層、および相関係数の欄が設けられている。
【０１７４】
上位層の欄には、相関関係の比較対象とされる２つの階層のうちの、上位層の識別子と代表区間の区間種別とが設定される。図１７の例では、「：（コロン）」で区切った左側に階層の識別子が設定され、右側に代表区間の区間種別が設定されている。
【０１７５】
下位層の欄には、相関関係の比較対象とされる２つの階層のうちの、下位層の識別子と代表区間の区間種別とが設定される。図１７の例では、「：（コロン）」で区切った左側に階層の識別子が設定され、右側に代表区間の区間種別が設定されている。
【０１７６】
相関係数の欄には、上位層と下位層との代表区間同士の相関関係を示す相関係数が設定される。
このようにして正常時の階層間の相関係数が計算され、保存される。その後、処理時間の所定値以上の増加が発生すると、異常時の相関解析処理が実行される。
【０１７７】
異常時相関解析処理では、正常時と同様に、個々のトランザクションに関して、区間種別ごとの処理時間が算出される（図１２のステップＳ５３）。その後、区間種別ごとの平均処理時間が計算され、さらに平常からの平均処理時間の増加率が計算される（図１２のステップＳ５６，Ｓ５７）。平均処理時間と増加率との計算結果は、異常時処理時間記憶部１５３ａに格納される。
【０１７８】
図１８は、異常時処理時間記憶部のデータ構造の一例を示す図である。異常時処理時間記憶部１５３ａには、例えば処理時間管理テーブル１５３ｃが格納されている。処理時間管理テーブル１５３ｃには、階層、区間、平均処理時間、および増加率の欄が設けられている。
【０１７９】
階層の欄には、階層の識別子が設定される。区間の欄には、各階層内での区間種別が設定される。平均処理時間の欄には、対応する階層における対応する区間の処理時間の平均値が秒単位で設定される。
【０１８０】
増加率の欄には、正常時の平均処理時間に対する異常時の平均処理時間の増加率が設定される。
図１８に示す処理時間管理テーブル１５３ｃのようなデータが、例えば１分間隔で１４回取得され、その都度、異常時処理時間記憶部１５３ａに、新たな処理時間管理テーブルが追加格納される。
【０１８１】
ここで、図１８に示した増加率を参照すると、「階層１」に関しては、処理時間の増加率は所定の閾値（この例では２．０）を超えていない。一方、「階層２」、「階層３」に関しては、処理時間の増加率が閾値を超えている。
【０１８２】
このとき、「階層２」に関し、「問い合わせ開始前」の区間（第１種区間）のみが処理時間が増加しているのかどうかが判断される（図１３のステップＳ６１）。図１８の例では、すべての区間において処理時間が増加しているものと判断され、処理がステップＳ６３に進められる。なお、「階層３」に関しては、「問い合わせ開始前」の区間（第１種区間）が存在しないため、図１３のステップＳ６１における判断処理は行われない。
【０１８３】
図１９は、異常時の処理時間の時系列推移を示す図である。図１９では、横軸に時刻、縦軸に平均処理時間を取ったグラフによって、異常時の処理時間の時系列推移を示している。
【０１８４】
図１９には、Ａｐｐサーバ３００とＤＢサーバ４００と時系列推移を示している。なお、図１９の例では、「複数問い合わせ間」の区間（第２種区間）が代表区間として時系列推移が解析されるが、「問い合わせ開始前」の区間（第１種区間）や「問い合わせ完了後」の区間（第３種区間）の時系列推移についても参考のために示している。
【０１８５】
このような時系列推移に基づいて、異常時処理時間解析部１５３により、処理時間が増大した複数の階層間で、代表区間の処理時間の時系列推移同士の相関係数が算出される（図１３のステップＳ６５）。そして、算出された相関係数が、異常時相関係数記憶部１５３ｂに格納される。
【０１８６】
図２０は、異常時相関係数記憶部のデータ構造の一例を示す図である。異常時相関係数記憶部１５３ｂには、例えば相関係数管理テーブル１５３ｄが格納されている。相関係数管理テーブル１５３ｄには、上位層、下位層、および相関係数の欄が設けられている。各欄には、図１７に示した正常時相関係数記憶部１５２ｂ内の相関係数管理テーブル１５２ｄ内の同名の欄と同種の情報が設定される。
【０１８７】
なお、異常時においては、処理時間の増加率が所定値より大きい階層間での相関係数が算出される。そのため、図２０の例では、「階層２」と「階層３」との間の相関係数のみが算出されている。
【０１８８】
そして、相関判定部１５４によって、正常時の相関係数と異常時の相関係数とに基づいて、影響伝搬の有無が判定される。異常時において相関係数が閾値より大きく（図１３のステップＳ６６でＹＥＳ判定）、かつ正常時において相関係数が閾値以下（図１３のステップＳ６８でＮＯ判定）の場合に、影響伝搬があると判定する。
【０１８９】
ここで、複数の階層間の相関係数が一定の閾値を超えている場合は、その両階層の処理時間の増減には有意な相関があると判定している。有意な相関の有無を判定するための閾値は、比較する時系列の長さ（標本数）から統計学的に決定することができる。
【０１９０】
得られた相関係数が統計学的に有意であると証明する為にはｔ検定を行えばよい。母集団の相関係数＝０と仮定（帰無仮説）すると、標本の相関係数ｒは、式（２）に示すｔについて、自由度ｎ−２のｔ分布に従う（ｎは標本数）。
【０１９１】
【数２】
0005471859.tif 000003
【０１９２】
ｔ分布によれば、標本数１４の場合の１％有意水準の限界値は０．６６１である。すなわち図１６、図１９に示すように標本数が１４の場合は、相関係数が０．６６１以上ならば、１％の有意水準で母相関係数が０でない（帰無仮説が棄却される）ことが分かる。これは、相関係数が０．６６１以上であれば、相関は有意であることを意味する。よって、第２の実施の形態のように１分毎の平均値の１４分間分を比較する場合は、０．６６１という閾値が、複数階層間の処理時間増大の相関の有無を決定するのに適当であることが分かる。なお、閾値として小数点第２位までの数値を利用し、閾値を０．６６としてもよい。
【０１９３】
図１７の例では、正常時の上位層「階層２：複数問い合わせ間」と下位層「階層３：処理時間全体」の時系列推移の相関係数は０．４４８である。すると、相関係数は０．６６１以下であり、正常時には階層２と階層３との間に有意な相関は認められない。
【０１９４】
他方、図２０の例では、異常時（処理時間増大時）の上位層「階層２：複数問い合わせ間」と下位層「階層３：処理時間全体」の時系列推移の相関係数は０．９８６となる。すると、相関係数は０．６６より大きく、異常時には階層２と階層３との間に有意な相関が認められる。
【０１９５】
このように、正常時に有意な相関が認められず、異常時にのみ有意な相関が認められた階層間では、下位層における異常による処理時間の増加が、上位層に伝搬しているという因果関係が存在すると判定される。判定結果が、例えばモニタ１１に表示される。
【０１９６】
図２１は、異常警報画面の一例を示す図である。異常警報画面５０には、例えば、処理時間の増加率が２．０異常となった階層がリストアップされる。そして、下位層のサーバの処理時間増加の影響が伝搬しただけの可能性がある階層に関しては、その旨のメッセージが表示される。
【０１９７】
このような異常警報画面５０を見た管理者は、Ａｐｐサーバ３００とＤＢサーバ４００との処理時間が正常時よりも過剰に増加していること、およびその処理時間の増加の原因がＤＢサーバ４００にのみ存在している可能性があることを認識できる。すなわち、Ａｐｐサーバ３００については、処理時間が増加しているものの、ＤＢサーバ４００について対処し、処理時間の増加状態を解消すれば、Ａｐｐサーバ３００については対処をせずにすむ可能性があることを、管理者が認識できる。
【０１９８】
以上説明したように、第２の実施の形態では、平均処理時間の時系列推移の相関係数から因果関係が判定されている。すなわち第２の実施の形態では、２つの階層の「複数問い合わせ間」区間が優先的に代表区間として選択される。そして代表区間の処理時間の時系列推移について、それらの時系列推移の相関係数が求められる。異常時の相関係数だけが閾値（例えば０．８）以上に高ければ、その２つの階層の処理時間増大には因果関係があると判定される。異常時において相関係数が高くても、正常時においても同様に高い場合は、それらは処理時間増大とは無関係に相関する（例えば入力負荷の変動に相関する）ということなので、それらの処理時間増大に因果関係があるとは判定されない。
【０１９９】
このようにして複数階層間の処理時間増加の因果関係を判定する理由は次の通りである。処理時間増加が他の階層に伝搬する理由としては、ある階層の処理時間が増加することによって、その上位層で処理の多重度が上昇し、それが負荷増大や待ち時間増大に繋がっている場合が考えられる。この場合、下位層における処理時間の推移は上位層の多重度の推移と相関があり、それがさらにその階層の処理時間の推移と相関し、それら２つの階層の処理時間の推移が相関を持つことになる。ただし、このときに「問い合わせ開始前」区間（第１種区間）の増加に注意する必要がある。この区間は、様々な理由で突出して増加することがある。例えば、下位層へのコネクション確保待ちの時間などである。このように本来の処理以外に費やされる時間は、多重度の増減による微妙な処理時間の増減を大きく上回って増減する。よって、このような区間を加えた処理時間で階層間の相関を測っても、全く見当違いな結果が出てしまう。そのような処理の内容に一番影響を受けないのが「複数問い合わせ間」の区間で、その区間だけを用いて相関を取ることによって、階層間の処理負荷増減の相関を測ることが可能となる。
【０２００】
また、１つのトランザクションにおいて「複数問い合わせ間」区間（第２種区間）が複数存在する場合がある。これは、メッセージフロー内での上位層からのリクエストメッセージが３回以上送信される場合である。このような場合において、複数存在する「複数問い合わせ間」区間の１つ当たりの平均値を用いる理由は、それらの合計値はメッセージ回数にほぼ比例するためである。時系列で平均メッセージ回数が変化した場合に、それだけで複数階層間の「複数問い合わせ間」の合計値の推移が相関してしまう。第２の実施の形態では、そこで複数存在する「複数問い合わせ間」区間の１つ当たりの平均値を、そのトランザクションの「複数問い合わせ間」区間の処理時間としている。
【０２０１】
以上説明したように、第２の実施の形態では、複数の階層の処理時間が同時に増大した場合に、それらの両方共が本当に問題を抱えているのか、それとも一方だけが問題を抱えていてそれが他方に影響を与えているのか判定できるようになる。因果関係があることが分かれば、因果関係の方向（どちらが原因でどちらが結果か）は簡単に分かる。複数階層システムの場合は通常は下位が上位に影響を与える。そこで、下位層だけを調べれば良いことになる。このような場合に、両方の階層に原因があると誤解して調査を進めると、両方の階層を調査する為に余計な時間がかかったり、無駄に両方の階層のハードウェアを買い替えたり、原因分析が混乱して問題原因が発見できなかったりする。本実施の形態の技術を用いれば、そのような失敗を防ぐことが可能となる。
【０２０２】
〔第３の実施の形態〕
第３の実施の形態は、高負荷で安定している場合でも、階層間の因果関係を適切に判定できるようにしたものである。
【０２０３】
第２の実施の形態に示した手法は、以下のような現象を想定して、処理時間増加の因果関係の有無の判定を行っている。
まず、ボトルネックとなる階層のサーバの負荷が増大していく場合、その階層のサーバの処理時間が上下しながら増加していく。このとき、上位層のサーバにおける処理の多重度が、下位層のサーバの処理時間の増減に応じて上下する。このような多重度の上下が、多重度に起因する負荷の上下を引き起こす。第２の実施の形態では、このような現象を利用して、階層間の処理時間増加の因果関係の有無を判定している。
【０２０４】
ところが、負荷が過剰に増加すると、ボトルネック層とその上位層の間の接続（コネクション）の多重度が際限なく上昇していく。多重度が増加し続けると、どこかの時点で多重度の制限に引っ掛かる。すなわち、接続の多重度の上限が予め設定されており、その多重度を超えた接続は行われない。
【０２０５】
多重度の制限に達すると多重度はそれ以上上昇しなくなり、ボトルネック層の負荷が安定するようになる。すなわち、ボトルネック層の処理時間は高い値ではあるが安定するようになる。そして、処理時間の分散が小さくなる。式（１）に示した相関係数の算出式から明らかなように、分散が小さくなれば相関係数は低くなる。
【０２０６】
また、接続の多重度の制限に達した場合は、多重度の制限のために、下位層の処理時間の増減という挙動は上位層に多重度の増減として伝わらなくなる。そのため、例え下位層において処理時間の増減が発生しても、上位層にはその影響が及ばなくなる。よって、処理時間が安定していない場合でも、それぞれの階層の処理時間の増減は相関しなくなる。そうすると、第２の実施の形態に示す手法は、ボトルネックが起き始めて、処理時間が増加していく過程には有効であるものの、多重度の制限に達した以降は、有効に作用しない場合が想定される。
【０２０７】
ただし、実際のシステムにおいては、入力負荷は安定せずに増減するので、常にそこまでの高負荷が連続することは稀である。多くの場合、部分的には負荷が下がって処理時間の増減が生じて処理時間の相関が生まれることになる。
【０２０８】
そこで、第３の実施では、利用する時系列を部分時系列に限定することによって、負荷が非常に大きくなる区間が存在したとしても、適切な因果関係の判定を可能とする。
図２２は、第３の実施の形態の運用管理サーバの機能構成を示すブロック図である。なお、図２２に示す運用管理サーバ１００ａにおいて、図４に示した第２の実施の形態の運用管理サーバ１００と同様の機能を有する要素には、図４と同じ符号を付し説明を省略する。
【０２０９】
第３の実施の形態に係る運用管理サーバ１００ａの影響伝搬分析部１５０ａには、部分時系列選択部１５５が設けられている。部分時系列選択部１５５は、システムへの入力負荷と所定時間ごとの平均処理時間の標準偏差との関係を求める。そして部分時系列選択部１５５は、標準偏差の最大値を記憶した入力負荷よりも入力負荷が高い時間帯を、除外時間帯とする。そして部分時系列選択部１５５は、除外時間帯を、処理時間推移の解析対象から除外する。例えば部分時系列選択部１５５は、メッセージフロー情報記憶部１４０から、除外時間帯内のトランザクションに関するメッセージフロー情報を除外したメッセージフロー情報を、正常時処理時間解析部１５２と異常時処理時間解析部１５３とに引き渡す。正常時処理時間解析部１５２と異常時処理時間解析部１５３とは、部分時系列選択部１５５から受け取ったメッセージフロー情報に基づいて得られた部分時系列を用いて、相関関係の解析を行う。
【０２１０】
部分時系列選択部１５５は、システムの負荷が過大になって処理時間が増減しなくなっている（高い値で安定している）状況を、システムへの入力負荷と平均処理時間の標準偏差とに基づいて検出する。
【０２１１】
図２３は、システムへの入力負荷と平均処理時間の標準偏差との関係を示す図である。図２３では、横軸にシステムへの入力負荷を示し、縦軸に標準偏差を示している。
図２３には、システムの入力負荷として、端末装置から最上位層のサーバに到着した処理要求の数を用いている。すなわち、Ｗｅｂサーバ２００に単位時間内に入力されたリクエストメッセージの数を、システムの入力負荷とする。
【０２１２】
標準偏差は、処理時間増大が問題となっている複数階層の内の下位層における代表区間の平均処理時間の標準偏差である。部分時系列選択部１５５は、例えば５秒ごとに平均処理時間を計算する。さらに部分時系列選択部１５５は、１分間内の５秒間隔の時間帯ごとの１２区間の平均処理時間に基づいて、標準偏差を計算する。すると、１分ごとの標準偏差が得られる。
【０２１３】
また部分時系列選択部１５５は、標準偏差を計算した時間帯（１分間）内に最上位層のＷｅｂサーバ２００に入力されたリクエストメッセージ数を計数する。そして、リクエストメッセージ数ごとに、標準偏差の値をプロットしたのが、図２３の図である。
【０２１４】
図２３を参照すると、一定の入力負荷までは、入力負荷が増加するにつれて標準偏差が大きくなることが分かる。これは平均処理時間の増加に伴う自然な変化である。しかし、入力負荷がある一定値を超えると、一転、標準偏差が減少に転じる。これは、入力負荷が過大になって、処理時間の増減幅が減少したことを意味する。
【０２１５】
実際のシステムでは、入力負荷は刻一刻と変化する。そこで、部分時系列選択部１５５は、例えば１分間程度の短い時間単位で分割して、その間のシステムに対する平均入力負荷と、その間の階層毎の区間別平均処理時間の標準偏差を求める。
【０２１６】
図２４は、入力負荷と標準偏差との関係の解析例を示す図である。まず部分時系列選択部１５５は、時間軸を５秒間隔で区切り、１分当たり１２個の単位期間を生成する。次に部分時系列選択部１５５は、メッセージフロー情報記憶部１４０に格納されているメッセージフロー情報に基づいて、単位期間ごとに各階層の代表区間に関する処理の平均処理時間を算出する。
【０２１７】
さらに部分時系列選択部１５５は、１分毎の時間帯を選択対象期間として、選択対象期間ごとに、その選択対象期間内の１２個の単位期間の平均処理時間の標準偏差を求める。このような標準偏差が、１分ごとに算出される。図２４の例では、「０．０００４５」、「０．００１３２」、「０．０００１２」、「０．０００４８」といった標準偏差が得られる。
【０２１８】
標準偏差が得られると部分時系列選択部１５５は、メッセージフロー情報記憶部１４０に格納されているメッセージフロー情報に基づいて、選択対象期間ごとの入力負荷（１秒当たりのリクエストメッセージ数）を求める。そして部分時系列選択部１５５は、選択対象期間ごとに、入力負荷と標準偏差とを対応付ける。なお、図２４には、４つの解析区間しか示していないが、この解析をある程度長い区間（例えば１４分）実行する。そして、入力負荷と標準偏差との関係を、図２３に示す表にプロットする。
【０２１９】
図２５は、入力負荷と標準偏差との関係をプロットした例を示す図である。このようにして得られたグラフにおいて、標準偏差の最大値を記録した入力負荷量より多い負荷量の範囲は、システムの負荷が過大になって処理時間が増減しなくなっている範囲である。
【０２２０】
図２４、図２５に示した例では、入力負荷が１３０の時に、標準偏差が最大値となる。そのため、入力負荷が１３０より大きな時間帯は、処理時間推移の解析対象から除外される。図２４の例では、標準偏差「０．０００４８」と計算された時間帯について、処理時間推移の解析対象から除外される。
【０２２１】
正常時処理時間解析部１５２と異常時処理時間解析部１５３とは、部分時系列選択部１５５によって除外されていない時間帯だけで処理時間推移の部分時系列を求める。これにより、システムの負荷が過大な時間帯の影響を取り除いた解析が可能となる。
【０２２２】
複数の階層で処理時間が増大した場合において、そのどちらの階層でこの部分時系列の選択作業を行うかは、特に厳密なルールはない。両者の処理時間が相関している場合は、両方で共通した処理時間増減の傾向を示すはずなので、上記の手順をどちらの階層で行っても同様の結果となる。第３の実施の形態では部分時系列選択部１５５は、先に下位層で部分時系列の選択作業を実施し、次に、先に選択された時間帯における上位層の平均処理時間の部分時系列を抽出する。このようにして得られた両階層の平均処理時間の部分時系列を利用することによって、後は、第２の実施の形態と同じ手法で相関関係を判定できる。
【０２２３】
図２６は、部分時系列選択処理の手順の一例を示すフローチャートである。以下、図２６に示す処理をステップ番号に沿って説明する。
［ステップＳ８１］部分時系列選択部１５５は、下位層での部分時系列選択処理を行う。
【０２２４】
［ステップＳ８２］部分時系列選択部１５５は、上位層での部分時系列選択処理を行う。
このような部分時系列選択処理が、上位層と下位層との組み合わせごとに実行される。例えば、ＤＢサーバ４００とＡｐｐサーバ３００との影響伝搬を解析する場合、ＤＢサーバ４００の処理を下位層、Ａｐｐサーバ３００の処理を上位層として、図２６の処理が実行される。また、Ａｐｐサーバ３００とＷｅｂサーバ２００との影響伝搬を解析する場合、Ａｐｐサーバ３００の処理を下位層、Ｗｅｂサーバ２００の処理を上位層として、図２６の処理が実行される。
【０２２５】
図２７は、下位層での部分時系列選択処理の手順の一例を示すフローチャートである。以下、図２７に示す処理をステップ番号に沿って説明する。
［ステップＳ１０１］部分時系列選択部１５５は、解析対象期間（例えば１４分）を１分ごとに分割した選択対象期間ごとに、ステップＳ１０２〜Ｓ１０７の処理を実行する。すなわち、部分時系列選択部１５５は、複数の選択対象期間から、未処理の選択対象期間を１つ選択する。
【０２２６】
［ステップＳ１０２］部分時系列選択部１５５は、１分間の選択対象期間を、５秒ごとの１２個の単位期間に分割する。
［ステップＳ１０３］部分時系列選択部１５５は、５秒間の単位期間ごとに、ステップＳ１０４の処理を実行する。すなわち、部分時系列選択部１５５は、選択されている選択対象期間を分割して得られる複数の単位期間から、未処理の単位期間を１つ選択する。
【０２２７】
［ステップＳ１０４］部分時系列選択部１５５は、選択した単位期間における下位層における代表区間平均処理時間を算出する。
［ステップＳ１０５］部分時系列選択部１５５は、選択した選択対象期間内のすべての単位期間に対してステップＳ１０４の処理が完了したか否かを判断する。部分時系列選択部１５５は、未処理の単位期間があれば、処理をステップＳ１０３に進める。部分時系列選択部１５５は、すべての単位期間について処理が完了していれば、処理をステップＳ１０６に進める。
【０２２８】
［ステップＳ１０６］部分時系列選択部１５５は、選択対象期間内の単位期間ごとの平均処理時間の標準偏差を計算する。
［ステップＳ１０７］部分時系列選択部１５５は、１分間の選択対象期間におけるシステム全体に対する入力負荷を取得する。入力負荷は、１秒当たりのリクエストメッセージ数で表される。
【０２２９】
［ステップＳ１０８］部分時系列選択部１５５は、１分間ごとの選択対象期間すべてについてステップＳ１０２〜Ｓ１０７の処理が完了したか否かを判断する。部分時系列選択部１５５は、未処理の選択対象期間があれば、処理をステップＳ１０１に進める。部分時系列選択部１５５は、すべての選択対象期間について処理が完了していれば、処理をステップＳ１０９に進める。
【０２３０】
［ステップＳ１０９］部分時系列選択部１５５は、選択対象期間の標準偏差の最大値と、標準偏差が最大値となった選択対象期間のシステム入力負荷を求める。
［ステップＳ１１０］部分時系列選択部１５５は、１分間の選択対象期間ごとに、ステップＳ１１１〜Ｓ１１２の処理を実行する。すなわち、部分時系列選択部１５５は、複数の選択対象期間から、未処理の選択対象期間を１つ選択する。
【０２３１】
［ステップＳ１１１］部分時系列選択部１５５は、処理対象の選択対象期間の入力負荷が、標準偏差が最大値を記録した選択対象期間の入力負荷よりも大きいか否かを判断する。処理対象の選択対象期間の入力負荷の方が、標準偏差が最大値を記録した選択対象期間の入力負荷より大きい場合、処理がステップＳ１１２に進められる。処理対象の選択対象期間の入力負荷が、標準偏差が最大値を記録した選択対象期間の入力負荷以下の場合、処理がステップＳ１１３に進められる。
【０２３２】
［ステップＳ１１２］部分時系列選択部１５５は、現在処理対象となっている選択対象期間の１分間を、処理時間推移の解析対象から除外する。
［ステップＳ１１３］部分時系列選択部１５５は、１分間ごとの選択対象期間すべてについてステップＳ１１１〜Ｓ１１２の処理が完了したか否かを判断する。部分時系列選択部１５５は、未処理の選択対象期間があれば、処理をステップＳ１１０に進める。部分時系列選択部１５５は、すべての選択対象期間について処理が完了していれば、下位層での部分時系列選択処理を終了する。
【０２３３】
図２８は、上位層での部分時系列選択処理手順の一例を示す図である。以下、図２８に示す処理をステップ番号に沿って説明する。
［ステップＳ１２１］部分時系列選択部１５５は、解析対象期間（例えば１４分）を１分ごとに分割した選択対象期間ごとに、ステップＳ１２２〜Ｓ１２３の処理を実行する。すなわち、部分時系列選択部１５５は、複数の選択対象期間から、未処理の選択対象期間を１つ選択する。
【０２３４】
［ステップＳ１２２］部分時系列選択部１５５は、現在処理対象となっている選択対象期間が、下位層において処理時間推移の解析対象から除外されているか否かを判断する。除外されていれば、処理がステップＳ１２３に進められる。除外されていなければ、処理がステップＳ１２４に進められる。
【０２３５】
［ステップＳ１２３］部分時系列選択部１５５は、現在処理対象となっている選択対象期間を、処理時間推移の解析対象から除外する。
［ステップＳ１２４］部分時系列選択部１５５は、解析対象期間内のすべての選択対象期間についてステップＳ１２２，Ｓ１２３の処理が完了したか否かを判断する。部分時系列選択部１５５は、未処理の選択対象期間があれば、処理をステップＳ１２１に進める。部分時系列選択部１５５は、すべての選択対象期間について処理が完了していれば、すると、上位層での部分時系列選択処理を終了する。
【０２３６】
以上のような処理で除外されていない時系列を構成するメッセージフロー情報のみが、部分時系列選択部１５５から正常時処理時間解析部１５２や異常時処理時間解析部１５３に渡され、時系列推移が解析される。その結果、正常時処理時間解析部１５２と異常時処理時間解析部１５３とでは、一部の期間の情報が取り除かれた時系列推移が生成されることとなる。
【０２３７】
このように、第３の実施の形態では、入力負荷が過大となり、接続の多重度制限により処理時間が安定した時間帯を解析対象から除外することで、入力負荷が大きな状態が継続しても、影響伝搬の有無を適格に判断することが可能となる。
【０２３８】
〔その他の応用例〕
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、運用管理サーバが有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープなどがある。光ディスクには、ＤＶＤ、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ／ＲＷなどがある。光磁気記録媒体には、ＭＯ（Magneto-Optical disc）などがある。
【０２３９】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【０２４０】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
【０２４１】
また、上記の処理機能の少なくとも一部を、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、ＰＬＤ（Programmable Logic Device）などの電子回路で実現することもできる。
【０２４２】
以上、実施の形態を例示したが、実施の形態で示した各部の構成は同様の機能を有する他のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。さらに、前述した実施の形態のうちの任意の２以上の構成（特徴）を組み合わせたものであってもよい。
【０２４３】
以上の実施の形態に開示された技術には、以下の付記に示す技術が含まれる。
（付記１）  コンピュータに、
複数のサーバが連携してトランザクションを実行する複数階層システムにおいて実行された各トランザクションに関し、各階層のサーバが各トランザクションに関する処理を実行した期間を示す情報を記憶する記憶手段を参照し、第１の階層に属するサーバの１処理当たりの平均処理時間の時系列推移と、第２の階層に属するサーバの１処理当たりの平均処理時間の時系列推移とを計算し、
前記第１の階層に属するサーバの平均処理時間の時系列推移と、前記第２の階層に属するサーバの平均処理時間の時系列推移との間の相関の有無を判定する、
処理を実行させることを特徴とする解析プログラム。
【０２４４】
（付記２）  前記コンピュータに、
前記記憶手段を参照し、最上位のサーバにおける処理要求の受信から応答の送信までの時間に基づいて、前記複数階層システムの異常の有無を判定し、
前記記憶手段を参照し、異常が検出された期間における各階層に属するサーバの１処理当たりの平均処理時間が、異常が検出されていない期間における１処理当たりの平均処理時間より所定値以上増大したか否かを判断し、処理時間が所定値以上増大した２つの階層を、それぞれ前記第１の階層および前記第２の階層として、異常が検出された期間と異常が検出されていない期間とのそれぞれにおける１処理当たりの平均処理時間の時系列推移を計算し、
異常が検出された期間における前記第１の階層に属するサーバの処理時間の時系列推移と前記第２の階層に属するサーバの処理時間の時系列推移との相関と、異常が検出されていない期間における前記第１の階層に属するサーバの処理時間の時系列推移と前記第２の階層に属するサーバの処理時間の時系列推移との相関とに基づいて、前記第１の階層に属するサーバにおける１処理当たりの処理時間の増大と、前記第２の階層に属するサーバにおける１処理当たりの処理時間の増大との因果関係の有無を判定する、
処理を実行させることを特徴とする付記１記載の解析プログラム。
【０２４５】
（付記３）  前記コンピュータに、因果関係の有無を判定させる際には、
異常が検出された期間において相関ありと判定され、異常が検出されていない期間において相関なしと判定された場合に、処理時間の増大の因果関係ありと判定する、
処理を実行させることを特徴とする付記２記載の解析プログラム。
【０２４６】
（付記４）  前記コンピュータに、平均処理時間の時系列推移を計算させる際には、
前記第１の階層に属するサーバまたは前記第２の階層に属するサーバが、上位層のサーバからの処理要求に応じた処理中に下位層のサーバへの処理要求を出力している場合、処理の開始の契機となる通信および処理の終了時に行われる通信に応じて各処理を複数の種別に分類し、前記複数の種別から選択した少なくとも１つの種別に属する処理の実行期間の処理時間の平均を、前記第１の階層に属するサーバまたは前記第２の階層に属するサーバの１処理当たりの平均処理時間とする、
処理を実行させることを特徴とする付記１乃至３のいずれかに記載の解析プログラム。
【０２４７】
（付記５）  前記コンピュータに、各処理を前記複数の種別に分類させる際には、
上位層のサーバから入力された処理要求を契機として開始され、下位層のサーバへ処理要求を出力して終了する処理が属する第１種、下位層のサーバに対して出力した処理要求に対する該サーバからの応答を契機として開始され、下位層のサーバへ処理要求を出力して終了する処理が属する第２種、および下位層のサーバに対して出力した処理要求に対する該サーバからの応答を契機として開始され、上位層のサーバに対して応答を出力して終了する処理が属する第３種に分類する、
処理を実行させることを特徴とする付記４記載の解析プログラム。
【０２４８】
（付記６）  前記コンピュータに、１処理当たりの平均処理時間を計算させる際には、
前記第２種に属する実行期間が存在する場合、前記第２種に属する実行期間の処理時間の平均を、前記第１の階層に属するサーバまたは前記第２の階層に属するサーバの１処理当たりの平均処理時間とする、
処理を実行させることを特徴とする付記５記載の解析プログラム。
【０２４９】
（付記７）  前記コンピュータに、さらに、
各階層に属するサーバの処理時間が所定以上増大したか否かを判断する際には、異常が検出されていない期間の１処理当たりの平均処理時間に対する異常検出時の１処理当たりの平均処理時間の増加率を計算し、該増加率が所定値異常の場合、処理時間が所定値以上増大したと判断する、
処理を実行させることを特徴とする付記２記載の解析プログラム。
【０２５０】
（付記８）  前記コンピュータに、時系列推移間の相関の有無を判断させる際には、
前記第１の階層に属するサーバの１処理当たりの平均処理時間の時系列推移と、前記第２の階層に属するサーバの１処理当たりの平均処理時間の時系列推移との相関係数を算出し、該相関係数が所定の有意水準以上の場合に、時系列推移間に相関があると判断する処理を実行させることを特徴とする付記１乃至７の何れかに記載の解析プログラム。
【０２５１】
（付記９）  前記コンピュータに、さらに、
前記第１の階層と前記第２の階層とのうちの上位層において、前記第１種に属する処理の１処理当たりの平均処理時間が所定値以上増大し、前記第２種および前記第３種に属する処理の１処理当たりの平均処理時間に所定値以上の増大が認められない場合、上位層の処理時間の増大は、下位層の処理時間増大の影響が伝搬したものであると判定する、
処理を実行させることを特徴とする付記５記載の解析プログラム。
【０２５２】
（付記１０）  前記コンピュータに、１処理当たりの平均処理時間の時系列推移を計算させる際には、前記記憶手段に記憶されたトランザクション情報のうち、前記複数階層システムにおける処理負荷が所定値以上の期間に行われたトランザクションに関するトランザクション情報を除外して、１処理当たりの平均処理時間の時系列推移を計算する、
処理を実行させることを特徴とする付記１乃至９のいずれかに記載の解析プログラム。
【０２５３】
（付記１１）  前記コンピュータに、１処理当たりの平均処理時間の時系列推移を計算させる際には、前記記憶手段に記憶されたトランザクション情報のうち、平均処理時間の標準偏差が最大となった期間よりも大きな処理負荷がかけられた期間に行われたトランザクションに関するトランザクション情報を除外して、１処理当たりの平均処理時間の時系列推移を計算する、
処理を実行させることを特徴とする付記１０記載の解析プログラム。
【０２５４】
（付記１２）  コンピュータが、
複数のサーバが連携してトランザクションを実行する複数階層システムにおいて実行された各トランザクションに関し、各階層のサーバが各トランザクションに関する処理を実行した期間を示す情報を記憶する記憶手段を参照し、第１の階層に属するサーバの１処理当たりの平均処理時間の時系列推移と、第２の階層に属するサーバの１処理当たりの平均処理時間の時系列推移とを計算し、
前記第１の階層に属するサーバの平均処理時間の時系列推移と、前記第２の階層に属するサーバの平均処理時間の時系列推移との間の相関の有無を判定する、
ことを特徴とする解析方法。
【０２５５】
（付記１３）  複数のサーバが連携してトランザクションを実行する複数階層システムにおいて実行された各トランザクションに関し、各階層のサーバが各トランザクションに関する処理を実行した期間を示す情報を記憶する記憶手段を参照し、第１の階層に属するサーバの１処理当たりの平均処理時間の時系列推移と、第２の階層に属するサーバの１処理当たりの平均処理時間の時系列推移とを計算する処理時間解析手段と、
前記第１の階層に属するサーバの平均処理時間の時系列推移と、前記第２の階層に属するサーバの平均処理時間の時系列推移との間の相関の有無を判定する相関判定手段と、
を有することを特徴とする解析装置。
【符号の説明】
【０２５６】
１  解析装置
１ａ  異常判定手段
１ｂ  処理時間解析手段
１ｃ  相関判定手段
２  記憶手段
２ａ，２ｂ，２ｃ  トランザクション情報
【図１】
0005471859.tif 000004
【図２】
0005471859.tif 000005
【図３】
0005471859.tif 000006
【図４】
0005471859.tif 000007
【図５】
0005471859.tif 000008
【図６】
0005471859.tif 000009
【図７】
0005471859.tif 000010
【図８】
0005471859.tif 000011
【図９】
0005471859.tif 000012
【図１０】
0005471859.tif 000013
【図１１】
0005471859.tif 000014
【図１２】
0005471859.tif 000015
【図１３】
0005471859.tif 000016
【図１４】
0005471859.tif 000017
【図１５】
0005471859.tif 000018
【図１６】
0005471859.tif 000019
【図１７】
0005471859.tif 000020
【図１８】
0005471859.tif 000021
【図１９】
0005471859.tif 000022
【図２０】
0005471859.tif 000023
【図２１】
0005471859.tif 000024
【図２２】
0005471859.tif 000025
【図２３】
0005471859.tif 000026
【図２４】
0005471859.tif 000027
【図２５】
0005471859.tif 000028
【図２６】
0005471859.tif 000029
【図２７】
0005471859.tif 000030
【図２８】
0005471859.tif 000031