(57)【要約】【課題】  ネットワーク上の各サービスが相互に依存する関係を検出・解析することができる。【解決手段】  コンピュータシステムのサーバプログラム間の依存関係を解析する解析システムであって、複数のサーバプログラムの各々が他の何れかのサーバプログラムから呼び出されて行ったサービスの処理であるトランザクションを検出するトランザクション検出部と、検出された各トランザクションについて、当該トランザクションにおいて呼び出される子トランザクションの候補を検出する子トランザクション候補検出部と、各トランザクションに対応付けて検出したサービスと、当該トランザクションの子トランザクションの候補に対応付けて検出したサービスとに基づいて、各サーバプログラムが他のサーバプログラムの各々を呼び出してサービスを行わせる頻度を推定したサービス呼出頻度を出力する呼出頻度算出部とを備える解析システムを提供する。【選択図】図２
2005190277.tif 000002
【特許請求の範囲】
【請求項１】
各々が互いにサービスを提供する複数のサーバプログラムが動作しているコンピュータシステムにおいて、サーバプログラム間の依存関係を解析する解析システムであって、
前記複数のサーバプログラムの各々が他の何れかのサーバプログラムから呼び出されて行ったサービスの処理であるトランザクションを、当該サービスに対応付けて検出するトランザクション検出部と、
前記トランザクション検出部により検出された各トランザクションについて、当該トランザクションにおいて呼び出される他のトランザクションである子トランザクションの候補を検出する子トランザクション候補検出部と、
各トランザクションに対応付けて検出したサービスと、当該トランザクションの子トランザクションの候補に対応付けて検出したサービスとに基づいて、各サーバプログラムが他のサーバプログラムの各々を呼び出してサービスを行わせる頻度を推定したサービス呼出頻度を算出して出力する呼出頻度算出部と
を備える解析システム。
【請求項２】
前記複数のサーバプログラムの各々は、前記コンピュータシステムが有する複数のサーバ装置の何れかで動作し、
前記トランザクション検出部は、前記トランザクションの各々に対応付けて、当該トランザクションの呼出元及び呼出先のサーバ装置の識別情報を更に検出し、
前記子トランザクション候補検出部は、前記トランザクション検出部により検出された各トランザクションについて、当該トランザクションの呼出先のサーバ装置を呼出元とする他の各々のトランザクションを、前記子トランザクションの候補として検出する
請求項１記載の解析システム。
【請求項３】
前記トランザクション検出部は、各サーバプログラムが前記コンピュータシステムの外部の何れかのサーバプログラムから呼び出されてトランザクションを行った場合に、当該トランザクションの呼出元の識別情報として同一の識別情報を検出する
請求項２記載の解析システム。
【請求項４】
前記複数のサーバ装置はネットワークにより接続されており、
前記トランザクション検出部は、前記コンピュータシステム内で前記トランザクションの呼び出しに用いられる通信用パケットを前記ネットワークから検出し、検出した当該通信用パケットの発信元ＩＰアドレス及び宛先ＩＰアドレスを、当該トランザクションの呼出元及び呼出先のサーバ装置の識別情報として検出し、当該通信用パケットの宛先ポート番号により識別されるサービスを、当該トランザクションにより行われるサービスとして検出する
請求項２記載の解析システム。
【請求項５】
前記トランザクション検出部は、前記トランザクションの各々に対応付けて、更に、当該トランザクションの開始時刻及び終了時刻を検出し、
前記子トランザクション候補検出部は、前記トランザクション検出部により検出された各トランザクションについて、当該トランザクションの開始時刻より後に開始しかつ終了時刻に先立って終了した他のトランザクションを、前記子トランザクションの候補として検出する
請求項１記載の解析システム。
【請求項６】
前記トランザクション検出部により、第１のトランザクションと、当該第１のトランザクションより後に開始しかつ先に終了する第２のトランザクションと、当該第１のトランザクション及び第２のトランザクションの何れよりも後に開始しかつ何れよりも先に終了する第３のトランザクションとが検出された場合に、前記子トランザクション候補検出部は、前記第３のトランザクションを、前記第２のトランザクションの子トランザクションの候補として検出し、前記第１のトランザクションの子トランザクションの候補から除外する
請求項５記載の解析システム。
【請求項７】
サービスプログラム毎に、当該サービスプログラムが他のサービスプログラムの各々から呼び出される確率の候補値であるサービス呼出確率値が予め定められており、
前記サービス呼出確率値に基づいて、各トランザクションが複数のサーバプログラムの各々から呼び出された確率であるトランザクション呼出確率値を算出するトランザクション呼出確率値算出部と、
同一のサービスを行う各トランザクションについての前記トランザクション呼出確率値に基づいて、他のサービス呼出確率値を算出するサービス呼出確率値算出部と
を更に備え、
前記呼出頻度算出部は、前記サービス呼出確率値算出部により算出された前記サービス呼出確率値に基づいて更に前記トランザクション呼出確率値算出部により前記トランザクション呼出確率値を算出させる処理を繰り返し、繰り返しの前で算出されたサービス呼出確率値及び繰り返しの後で算出されたサービス呼出確率値の差が予め定められた範囲内に収束した場合に、収束した当該サービス呼出確率値に基づいて、前記サービス呼出頻度を算出して出力する
請求項１記載の解析システム。
【請求項８】
前記呼出頻度算出部は、更に、各トランザクションについてのトランザクション呼出確率値に基づいて、所定のトランザクションが呼び出された結果他のトランザクションが連鎖的に順次呼び出された場合における、各トランザクションの呼出頻度を算出し、算出したトランザクションの呼出頻度に基づいて、予め定めた起点サービスが呼び出された結果他のサービスが連鎖的に順次呼び出された場合におけるサービス呼出頻度を算出して出力する
請求項７記載の解析システム。
【請求項９】
前記呼出頻度算出部は、更に、算出した前記サービス呼出頻度に基づいて、予め定められた起点サービスが呼び出された結果他のサービスが連鎖的に順次呼び出された場合におけるサービス呼出頻度を算出して出力する
請求項７記載の解析システム。
【請求項１０】
前記呼出頻度算出部は、前記サービス呼出頻度を定期的に算出し、算出したサービス呼出頻度が、予め定められた基準値と比較して予め定められた差分値以上相違している場合に、当該サービス呼出頻度が基準値と相違している旨を更に出力する
請求項１記載の解析システム。
【請求項１１】
各々が互いにサービスを提供する複数のサーバプログラムが動作しているコンピュータシステムにおいて、サーバプログラム間の依存関係を解析する解析方法であって、
前記複数のサーバプログラムの各々が他の何れかのサーバプログラムから呼び出されて行ったサービスの処理であるトランザクションを、当該サービスに対応付けて検出するトランザクション検出段階と、
前記トランザクション検出段階において検出された各トランザクションについて、当該トランザクションにおいて呼び出される他のトランザクションである子トランザクションの候補を検出する子トランザクション候補検出段階と、
各トランザクションに対応付けて検出したサービスと、当該トランザクションの子トランザクションの候補に対応付けて検出したサービスとに基づいて、各サーバプログラムが他のサーバプログラムの各々を呼び出してサービスを行わせる頻度を推定したサービス呼出頻度を算出して出力する呼出頻度算出段階と
を備える解析方法。
【請求項１２】
各々が互いにサービスを提供する複数のサーバプログラムが動作しているコンピュータシステムにおいて、サーバプログラム間の依存関係をコンピュータにより解析する解析プログラムであって、
前記コンピュータを、
前記複数のサーバプログラムの各々が他の何れかのサーバプログラムから呼び出されて行ったサービスの処理であるトランザクションを、当該サービスに対応付けて検出するトランザクション検出部と、
前記トランザクション検出部により検出された各トランザクションについて、当該トランザクションにおいて呼び出される他のトランザクションである子トランザクションの候補を検出する子トランザクション候補検出部と、
各トランザクションに対応付けて検出したサービスと、当該トランザクションの子トランザクションの候補に対応付けて検出したサービスとに基づいて、各サーバプログラムが他のサーバプログラムの各々を呼び出してサービスを行わせる頻度を推定したサービス呼出頻度を算出して出力する呼出頻度算出部と
して機能させる解析プログラム。
【請求項１３】
請求項１２記載の解析プログラムを記録した記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、解析システム、解析方法、解析プログラム、及び記録媒体に関する。特に、本発明は、コンピュータシステムの動作を解析する解析システム、解析方法、解析プログラム、及び記録媒体に関する。
【背景技術】
【０００２】
近年、インターネット等のネットワークの普及に伴い、ワールド・ワイド・ウェブ（ＷＷＷ）システムが広く用いられるようになってきている。かつて、ＷＷＷシステムにおけるウェブサイトは、ウェブページの表示又は閲覧者との簡単なコミュニケーションのみを行っていたので、ウェブサーバのみによって構成されていることが多かった。しかしながら、近年、ウェブサイトが企業等の基幹業務に用いられる機会が増えており、ウェブサーバ、データベースサーバ、又はアプリケーションサーバ等の様々なサーバがネットワークに接続されて協調してウェブサイトとして機能するようになってきている。
【０００３】
このように、ウェブサイトの構成が複雑になると、ウェブサイトの運営に何らかの不具合が発生した場合に、障害の発生したサーバを特定するのが困難になる。また、障害が発生した場合であってもウェブサイトの運営を継続する目的で、サーバを冗長に設けておく場合もあり、この場合には障害の解析が一層困難になる。一例として、ネットワーク内には、複数のDNS(Domain Name System)サーバが設けられている場合がある。例えば、サーバは、プライマリDNSサーバに問い合わせることができない場合に、セカンダリDNSサーバに問い合わせることにより、所望のIPアドレスを取得することができる。このような場合には、プライマリDNSサーバに発生した障害が見過ごされてしまう場合がある。
【０００４】
従来、ネットワーク内の障害の検出・解析の手法として、ネットワークを流れるパケットを監視し、又は、ルータ等のネットワーク機器から通信に関する情報を取得することにより、ネットワーク機器間の通信を解析する技術が用いられている（非特許文献１、非特許文献２参照。）。この技術によると、OSI階層モデルにおける物理層、データリンク層、又はネットワーク層における通信の状態を解析できる。しかしながら、これらの技術によると、アプリケーション層における処理の状況を検出できないので、各サーバプログラムが提供するサービスが相互に依存する関係を解析することは困難である。
【０００５】
例えば、一般的に、障害が発生していない場合であっても、ネットワークを流れるパケットの量は、例えば周期的に増減する。サーバプログラム等に障害が発生した場合には、ネットワークを流れるパケットの量は変化するが、この周期的な増減と区別するのは困難である。また、ネットワークには様々な目的で多量のパケットが流れており、障害により変化したパケットの量が僅かな場合には、障害の発生を検出できない場合もある。例えば、上記のDNSサーバが、多数のサーバプログラムから問い合わせを受けている場合には、特定のサーバプログラムからの問い合わせのみに発生した障害を検出するのは困難である。
【０００６】
これに対して、従来、アプリケーション層における処理の状況を検出・解析する技術が提案されている。例えば、ネットワークで各サーバが互いに接続される接続トポロジーと、各サーバで動作するサーバプログラムの設定ファイルとに基づいて、各サーバプログラムの障害が影響を与え得る他のサーバプログラムを検出する技術が用いられる（特許文献１参照。）。また、J2EE（Java 2 Enterprise Edition）（Javaは登録商標）により構築されたシステムにおいて、各サーバプログラムが他のサーバプログラムに与える影響を解析する技術が用いられている（非特許文献３参照。）。また、複数のサーバプログラムが互いにサービスを呼び出したログを蓄積して、サービスの呼び出し同士が相互に依存する関係を解析する技術が用いられている（非特許文献４参照。）。
【０００７】
【特許文献１】特開平１１−２５９３３１号公報
【非特許文献１】Network Node Manager.[online]、[平成１５年１２月２２日検索]インターネット＜ＵＲＬ：http://www.jpn.hp.com/openview/lineup/network/nnm/＞
【非特許文献２】Systemwalker Network Topology Manager [online]、[平成１５年１２月２２日検索]インターネット＜ＵＲＬ：http://systemwalker.fujitsu.com/jp/net topology/function/＞
【非特許文献３】J2EE パフォーマンス診断ツール。[online]、[平成１５年１２月２２日検索]インターネット＜ＵＲＬ：http://www.grapecity.com/japan/support/database/P2_203.htm＞
【非特許文献４】"Discovering Dynamic Dependencies in Enterprise Environments for Problem Determination,"Manish Gupta et al, 14th IFIP/IEEE Workshop on Distributed Systems: Operations and Management
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、特許文献１の技術は、複数のサーバプログラムが互いに与え得る影響を静的に解析するのみであり、ネットワークで実際に行われる通信に関する情報を動的に解析することは困難である。更に、この技術は、サーバプログラムの詳細な実装方法が非公開な場合には、サーバプログラムの設定ファイルの内容が不明なので、依存関係を適切に解析できない。また、非特許文献３の技術は、J2EEにより構築されたシステムに対してのみ適用可能であり、一般のネットワークに適用するのは困難である。また、非特許文献４の技術は、サービスを呼び出す処理であるトランザクション同士が依存する関係を解析できるが、各サービスが他の各サービスから呼び出される頻度を求めることができない。
【０００９】
そこで本発明は、上記の課題を解決することのできる解析システム、解析方法、解析プログラム、及び記録媒体を提供することを目的とする。この目的は特許請求の範囲における独立項に記載の特徴の組み合わせにより達成される。また従属項は本発明の更なる有利な具体例を規定する。
【課題を解決するための手段】
【００１０】
上記課題を解決するために、本発明の第１の形態においては、各々が互いにサービスを提供する複数のサーバプログラムが動作しているコンピュータシステムにおいて、サーバプログラム間の依存関係を解析する解析システムであって、複数のサーバプログラムの各々が他の何れかのサーバプログラムから呼び出されて行ったサービスの処理であるトランザクションを、当該サービスに対応付けて検出するトランザクション検出部と、トランザクション検出部により検出された各トランザクションについて、当該トランザクションにおいて呼び出される他のトランザクションである子トランザクションの候補を検出する子トランザクション候補検出部と、各トランザクションに対応付けて検出したサービスと、当該トランザクションの子トランザクションの候補に対応付けて検出したサービスとに基づいて、各サーバプログラムが他のサーバプログラムの各々を呼び出してサービスを行わせる頻度を推定したサービス呼出頻度を算出して出力する呼出頻度算出部とを備える解析システム、解析方法、解析プログラム、及び解析プログラムを記録した記録媒体を提供する。
なお、上記の発明の概要は、本発明の必要な特徴の全てを列挙したものではなく、これらの特徴群のサブコンビネーションもまた、発明となりうる。
【発明の効果】
【００１１】
本発明によれば、ネットワーク上の各サービスが相互に依存する関係を検出・解析することができる。
【発明を実施するための最良の形態】
【００１２】
以下、発明の実施の形態を通じて本発明を説明するが、以下の実施形態は特許請求の範囲にかかる発明を限定するものではなく、また実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
【００１３】
図１は、コンピュータシステム１０のブロック図を示す。コンピュータシステム１０は、ルータ４５と、ネットワーク２０により互いに接続され各々がサーバ装置の一例である、解析システム３０と、ディスパッチャ５０と、ウェブサーバ６０と、ウェブサーバ７０と、データベースサーバ８０とを備える。ディスパッチャ５０は、ウェブページの表示等の要求をクライアント装置４０から受けて、ウェブサーバ６０及びウェブサーバ７０の何れかに送る。ウェブサーバ６０は、ディスパッチャ５０から受けた要求に応じてウェブページの表示等の処理を行うＨＴＴＰサーバプログラム６２と、表示するべき情報を生成するアプリケーションサーバプログラム６４とを有する。同様に、ウェブサーバ７０は、ＨＴＴＰサーバプログラム７２と、アプリケーションサーバプログラム７４とを有する。例えば、ウェブサーバ６０又はウェブサーバ７０は、クライアント装置４０から入力を受けたデータをデータベースサーバ８０に格納してもよいし、データベースサーバ８０から取得したデータをクライアント装置４０に返信して表示してもよい。
解析システム３０は、コンピュータシステム１０における各サーバ上で動作する各サーバプログラムが互いに他のサーバプログラムを呼び出す頻度を解析すると共に、サーバプログラムの障害を検出することを目的とする。
【００１４】
図２は、サーバプログラムが他のサーバプログラムを呼び出す処理の概念図を示す。本図において、丸印はトランザクションを示す。各トランザクションを、丸印内の数を用いて、第１トランザクションから第１０トランザクションと呼ぶ。また、丸印に付された符号は、サービスの種類を示す。例えば、符号Ａ、符号Ｂ、及び符号Ｃの各々は、それぞれ、ＨＴＴＰサービス、アプリケーションサービス、及びデータベースサービスの何れかに該当する。
【００１５】
ここで、サービスとは、サーバプログラムが他のサーバプログラムのために必要なデータ等を生成する処理をいう。そこで、以降の説明において、サービスを、サービスの呼出元のサーバのＩＰアドレス、サービスの呼出先のサーバのＩＰアドレス、及びサービスの種類の組として取り扱う。また、トランザクションとは、サーバプログラムが他のサーバプログラムから実際に呼び出されて行ったサービスの処理をいい、一例としては、所定のサービスを要求するＴＣＰのトランザクションである。以降の説明において、トランザクションを、そのトランザクションの開始時刻、そのトランザクションの終了時刻、及びそのトランザクションにより処理されるサービスの組として取り扱う。
【００１６】
また、トランザクションを相互に結ぶ矢印は、矢印の先に位置するトランザクションが、矢印の元に位置するトランザクションにおいて呼び出された子トランザクションである旨を示している。例えば、第２トランザクションは、サービスＡを処理し、サービスＡの処理中にサービスＣを第５トランザクションとして呼び出し、サービスＡの処理中にサービスＢを第６トランザクションとして呼び出す。また、呼び出しとは、例えば、サービスを処理させて処理結果を返送させる指示をいい、具体的には、HTTP(Hyper Text Transfer Protocol)のリクエスト、DNSにおけるIPアドレス等の問い合わせ、又はデータベースサービスへのクエリ等である。
【００１７】
更に、本図は、矢印の元に位置するトランザクションの処理が、矢印の先に位置するトランザクションの処理結果に依存することを示していると見ることもできる。即ち、あるトランザクションが他のトランザクションを呼び出すとは、あるトランザクションが他のトランザクションの処理結果を取得しなければそのトランザクションを完了できないことであってもよい。
【００１８】
また、あるトランザクションを呼び出す他のトランザクションを、そのトランザクションの親トランザクションと呼ぶ。例えば、第２トランザクションは、第５及び第６トランザクションの親トランザクションである。同様にあるサービスを処理するトランザクションを呼び出した他のサービスを、そのサービスの親サービスと呼ぶ。また、第２から第４トランザクションは、コンピュータシステム１０内の何れのサービスからも呼び出しを受けずに開始されるが、解析を容易にするために、第１トランザクションを、第２から第４トランザクションを呼び出す仮想的な親トランザクションとする。即ち、第１トランザクションは、何らサービスを処理しない仮想的なトランザクションである。
【００１９】
本図においては、各トランザクションの処理において呼び出される他のトランザクションと、これらのトランザクションにより処理されるサービスとが正確に解析されている。しかしながら、全てのトランザクションの処理内容を具体的に解析することなく、各トランザクションの処理において他の何れのトランザクションが呼び出されたかを検出するのは困難である。以降の実施例において、解析システム３０が、各サーバプログラムが他のサーバプログラムの各々を呼び出してサービスを行わせる頻度を推定したサービス呼出頻度を算出する処理を説明する。
【００２０】
図３は、解析システム３０のブロック図を示す。解析システム３０は、トランザクション検出部３００と、子トランザクション候補検出部３１０と、トランザクション呼出確率算出部３２０と、サービス呼出確率値算出部３３０と、呼出頻度算出部３４０とを有する。トランザクション検出部３００は、コンピュータシステム１０内でトランザクションの呼び出しに用いられる通信用パケットをネットワーク２０から検出することにより、各トランザクションをそのトランザクションにより処理されるサービスに対応付けて検出する。例えば、トランザクション検出部３００は、検出した当該通信用パケットの宛先ポート番号により識別されるサービスを、当該トランザクションに対応付けられたサービスとして検出する。
【００２１】
また、通信用パケット検出の具体的処理としては、トランザクション検出部３００は、ネットワーク２０を流れる通信用パケットを直接検出してもよいし、各サーバが受信した通信用パケットの内容をそのサーバにおいてログとして記録させておき、そのログを収集してもよい。この際、トランザクション検出部３００は、予め定められた期間内に受信した通信用パケットを定期的に検出してもよいし、コンピュータシステム１０の全体でなく予め定められた範囲内のみから通信用パケットを受信してもよい。
【００２２】
子トランザクション候補検出部３１０は、トランザクション検出部３００により検出された各トランザクションについて、そのトランザクションの子トランザクションの候補を検出する。具体的には、子トランザクション候補検出部３１０は、各トランザクションについて、そのトランザクションの呼出先のサーバ装置を呼出元とし、かつそのトランザクションの開始時刻より後に開始しかつ終了時刻に先立って終了した他のトランザクションを、そのトランザクションの子トランザクションの候補として検出する。そして、子トランザクション候補検出部３１０は、各トランザクションについての子トランザクションの候補の検出結果を呼出頻度算出部３４０に送る。
【００２３】
また、トランザクション検出部３００が、第１のトランザクションと、当該第１のトランザクションより後に開始しかつ先に終了する第２のトランザクションと、第１のトランザクション及び第２のトランザクションの何れよりも後に開始しかつ何れよりも先に終了する第３のトランザクションとを検出した場合には、子トランザクション候補検出部３１０は、第３のトランザクションを、第２のトランザクションの子トランザクションの候補として検出し、第１のトランザクションの子トランザクションの候補から除外する。そして、子トランザクション候補検出部３１０は、この除外の処理を行った場合における、各トランザクションについての子トランザクションの候補の検出結果を、トランザクション呼出確率算出部３２０に送る。
【００２４】
図４は、各トランザクションについて子トランザクション候補検出部３１０が検出した子トランザクションの候補をDAG(Directed Acyclic Graph)として示す。図２と異なり、実際の子トランザクションを正確に検出することはできないが、子トランザクション候補検出部３１０が検出した子トランザクションの候補は、図２に示す子トランザクションを含んでいる。
【００２５】
続いて、トランザクション呼出確率算出部３２０は、各サーバプログラムが他のサーバプログラムの各々から呼び出される確率の候補値であるサービス呼出確率値と、子トランザクション候補検出部３１０により検出された子トランザクションとに基づいて、各トランザクションが複数のサーバプログラムの各々から呼び出された確率であるトランザクション呼出確率値を算出する。このサービス呼出確率値は、トランザクション呼出確率値を初めて算出する場合には予め定められおり、トランザクション呼出確率値を２回目以降に算出する場合には後述のサービス呼出確率値算出部３３０により算出される。
【００２６】
そして、サービス呼出確率値算出部３３０は、同一のサービスを処理する各トランザクションについてのトランザクション呼出確率値に基づいて、他のサービス呼出確率値を算出する。続いて、呼出頻度算出部３４０は、サービス呼出確率値算出部３３０により算出されたサービス呼出確率値を取得し、取得したサービス呼出確率値に基づいて更にトランザクション呼出確率算出部３２０により他のトランザクション呼出確率値を算出させる処理を繰り返す。
【００２７】
そして、呼出頻度算出部３４０は、繰り返しの前で算出されたサービス呼出確率値及び繰り返しの後で算出されたサービス呼出確率値の差が予め定められた範囲内に収束した場合に、収束した当該サービス呼出確率値に基づいて、サービス呼出頻度を算出して出力する。更に、呼出頻度算出部３４０は、算出したサービス呼出頻度と、子トランザクション候補検出部３１０から受け取った子トランザクションの候補の検出結果とに基づいて、予め定められた起点サービスが呼び出された結果他のサービスが連鎖的に順次呼び出された場合におけるサービス呼出頻度を算出して出力する。
【００２８】
図５は、解析システム３０がサーバプログラム間の依存関係を解析する処理の動作フローを示す。トランザクション検出部３００は、トランザクション検出部３００は、コンピュータシステム１０内でトランザクションの呼び出しに用いられる通信用パケットをネットワーク２０から検出することにより、トランザクションを検出する（Ｓ５００）。この際、トランザクション検出部３００は、検出した当該通信用パケットの宛先ポート番号により識別されるサービスを、当該トランザクションに対応付けられたサービスとして検出する。また、トランザクション検出部３００は、当該トランザクションの呼出元及び呼出先のサーバ装置の識別情報として、検出した当該通信用パケットの発信元ＩＰアドレス及び宛先ＩＰアドレスを検出する。更に、トランザクション検出部３００は、トランザクションの各々に対応付けて、そのトランザクションの開始時刻及び終了時刻を検出する。
【００２９】
子トランザクション候補検出部３１０は、トランザクション検出部３００により検出された各トランザクションについて、そのトランザクションの子トランザクションの候補を検出する（Ｓ５１０）。具体的には、子トランザクション候補検出部３１０は、各トランザクションについて、そのトランザクションの呼出先のサーバ装置を呼出元とし、かつそのトランザクションの開始時刻より後に開始しかつ終了時刻に先立って終了した他のトランザクションを、そのトランザクションの子トランザクションの候補として検出する。
【００３０】
この処理において、トランザクション検出部３００が、第１のトランザクションと、当該第１のトランザクションより後に開始しかつ先に終了する第２のトランザクションと、第１のトランザクション及び第２のトランザクションの何れよりも後に開始しかつ何れよりも先に終了する第３のトランザクションとを検出した場合には、子トランザクション候補検出部３１０は、第３のトランザクションを、第２のトランザクションの子トランザクションの候補として検出する。そして、子トランザクション候補検出部３１０は、第３のトランザクションを、第１のトランザクションの子トランザクションの候補から除外する。これにより、処理時間が他より長いトランザクションが他の全てのトランザクションの親トランザクションと推定され推定結果が現実的でなくなることを防止することができる。
【００３１】
続いて、トランザクション呼出確率算出部３２０、サービス呼出確率値算出部３３０、及び呼出頻度算出部３４０により、図４に示す子トランザクションの候補に基づいて、サービス呼出頻度を最尤推定する。具体的には、サービス呼出頻度ρ(sp|sc)が以下の式（１）に示す確率モデルに従うと仮定し、この確率モデルを推定する。この式において、Pr(A|B)は、条件Ｂが成立する場合における条件Ａが成立する条件付確率を示し、Ｓは、コンピュータシステム１０において呼び出されたサービスの集合を示す。
【００３２】
【数１】
2005190277.tif 000003
【００３３】
以降、処理の詳細を説明する。まず、トランザクション呼出確率算出部３２０は、サービス呼出確率値と、子トランザクション候補検出部３１０により検出された各トランザクションについての子トランザクションとに基づいて、各トランザクションが複数のサーバプログラムの各々から呼び出された確率であるトランザクション呼出確率値を算出する（Ｓ５２０）。ここで、サービス呼出確率値は、予め定められた初期値に設定されている。例えば、ρ(・|・)＝１／｜Ｓ｜に設定されている。トランザクション呼出確率算出部３２０がトランザクション呼出確率を算出する処理は、サービス呼出候補値を用いて、以下の式（２）で表される。
【００３４】
但し、トランザクション呼出確率の一例として、トランザクションtの親トランザクションのサービスがspである確率を、η(sp|t)と表す。また、p(t)は、トランザクションtの親トランザクションの候補を示し、P(t)は、トランザクションtの親トランザクションの候補の集合を示す。また、serv(t)は、トランザクションtにより処理されるサービスを示す。そして、Serv(P(t))は、P(t)のサービスを重複無く列挙した集合を示す。
【数２】
2005190277.tif 000004
【００３５】
そして、サービス呼出確率値算出部３３０は、同一のサービスを処理する各トランザクションについてのトランザクション呼出確率値に基づいて、初期値とは異なる他のサービス呼出確率値を算出する（Ｓ５３０）。この処理は、以下の式（３）で表される。ここで、トランザクション検出部３００により検出されたトランザクションのうち、あるサービスsを処理するトランザクションの数を、#(s)と表す。
【数３】
2005190277.tif 000005
【００３６】
そして、呼出頻度算出部３４０は、繰り返しの前で算出されたサービス呼出確率値及び繰り返しの後で算出されたサービス呼出確率値を比較する（Ｓ５４０）。即ち、呼出頻度算出部３４０は、Ｓ５２０の処理に先立って予め定まっていたサービス呼出確率値と、Ｓ５３０の処理により算出されたサービス呼出確率値とを比較する。これらのサービス呼出確率値の差が予め定められた範囲内に収束していない場合に（Ｓ５４０：ＮＯ）、呼出頻度算出部３４０は、Ｓ５２０に処理を戻して、サービス呼出確率値に基づいて更にトランザクション呼出確率算出部３２０により他のトランザクション呼出確率値を算出させる処理を繰り返す。
【００３７】
一方、これらのサービス呼出確率値の差が予め定められた範囲内に収束した場合に（Ｓ５４０：ＹＥＳ）、呼出頻度算出部３４０は、収束したサービス呼出確率値に基づいて、サービス呼出頻度を算出して出力する（Ｓ５５０）。更に、呼出頻度算出部３４０は、サービス呼出頻度に基づく情報を視覚化して出力する（Ｓ５６０）。
【００３８】
図６は、解析システム３０がサービス呼出頻度に基づいて出力する情報の一例を示す。図６（ａ）は、図１に対応しており、各サーバプログラムが他のサーバプログラムを呼び出して行わせるサービスを示している。例えば、ディスパッチャ５０上で動作するサーバプログラムがウェブサーバ６０上で動作するＨＴＴＰサーバプログラム６２を呼び出して行わせるサービスを、サービス３と呼ぶ。
【００３９】
図６（ｂ）は、呼出頻度算出部３４０が出力するサービス呼出頻度を示す。例えば、呼出頻度算出部３４０は、サービス７が、サービス１、サービス３、及びサービス４の各々から呼び出されるサービス呼出頻度として、１４．３６、７８．７３、及び１１４．８９を出力する。例えば、データベースサーバ８０で動作するサーバプログラムは、ＨＴＴＰサーバプログラム７２から呼び出されたアプリケーションサーバプログラム６４から頻繁に呼び出されると推定される。また、データベースサーバ８０で動作するサーバプログラムは、ディスパッチャ５０から呼び出されたＨＴＴＰサーバプログラム６２から頻繁に呼び出されると推定される。即ちこの場合、データベースサーバ８０は、ウェブサーバ７０よりもウェブサーバ６０から頻繁に呼び出されていることが分かる。
【００４０】
また、呼出頻度算出部３４０は、サービス４がサービス２から呼び出されるサービス呼出頻度として７．８２を算出し、サービス５がサービス３から呼び出されるサービス呼出頻度として５．６５を算出する。これにより、アプリケーションサーバプログラム６４及びアプリケーションサーバプログラム７４は、それぞれＨＴＴＰサーバプログラム７２及びアプリケーションサーバプログラム６４から頻繁に呼び出されることが分かる。
【００４１】
呼出頻度算出部３４０は、本図に示すサービス呼出頻度を、例えば定期的に算出して記録する。そして、呼出頻度算出部３４０は、算出したサービス呼出頻度の何れかが、予め定められた基準値と比較して予め定められた差分値以上相違している場合に、当該サービス呼出頻度が基準値と相違している旨を更に出力する。この基準値は、過去の正常動作していた場合におけるサービス呼出頻度であってもよい。また、これに代えて、呼出頻度算出部３４０は、あるサーバプログラムが他のサーバプログラムの何れかから呼び出される頻度が、所定の基準頻度と相違した場合に、その旨を出力してもよい。更に、呼出頻度算出部３４０は、あるサーバプログラムが１回呼び出される毎に他のサーバプログラムの各々を呼び出す頻度が、所定の基準頻度と相違した場合に、その旨を出力してもよい。
【００４２】
また、出力例としては、呼出頻度算出部３４０は、図６（ａ）に示すように、各サーバプログラムが他のサーバプログラムを呼び出して行わせるサービスを矢印として利用者に表示し、サービス呼出頻度が基準値と相違したサービスを示す矢印のみを点滅して表示してもよい。また、呼出頻度算出部３４０は、サービス呼出頻度が基準値と相違した旨の警報を表示してもよいし、その旨の音声を出力してもよい。
【００４３】
図７は、解析システム３０がサービス呼出頻度に基づいて出力する情報の他の例を示す。図７（ａ）は、コンピュータシステム１０における全てのサービスについてのサービス呼出頻度を示す。本図の矩形領域は、サーバプログラムを示す。そして、矩形領域内の数値は、サーバプログラムが、他の各々のサーバプログラムから１回呼び出される毎に、更に他のサーバプログラムを呼び出す回数の推定値を示す。この推定値は、以下の式（４）により求められる。ここで、式（４）における#(sp, sc)は、サービス呼出頻度の一例であり、あるサービスspの処理においてサービスscが呼び出された回数である（式（５））。
【数４】
2005190277.tif 000006
【００４４】
【数５】
2005190277.tif 000007
【００４５】
一例として、呼出頻度算出部３４０は、サーバプログラム７００がコンピュータシステム１０外のクライアントプログラム７１０から１回呼び出される毎に、サーバプログラム７３０を呼び出す回数として、０．５回を算出して出力する。一方、呼出頻度算出部３４０は、サーバプログラム７００がクライアントプログラム７２０から１回呼び出される毎に、アプリケーションサーバプログラム７４０を呼び出す回数として、０．６回を算出して出力する。
【００４６】
また、本図の矢印は、各サーバプログラムが他のサーバプログラムを呼び出す呼出関係を示す。また、矢印に付した数値は、サービス呼出頻度を示す。例えば、呼出頻度算出部３４０は、サーバプログラム７００がクライアントプログラム７１０から呼び出されるサービス呼出頻度が２０回である旨を出力する。一方、呼出頻度算出部３４０は、サーバプログラム７００がクライアントプログラム７２０から呼び出されるサービス呼出頻度が１０回である旨を出力する。
このように、呼出頻度算出部３４０は、サービス呼出頻度又はこれに基づく情報を、各サービスの呼出関係に対応付けて視覚化することができる。
【００４７】
なお、本図において、呼出頻度算出部３４０は、コンピュータシステム１０の外部における複数のサーバプログラムを代表して、２つのサーバプログラム（ＣｌｉｅｎｔＡ及びＣｌｉｅｎｔＢ）として表示している。これに代えて、呼出頻度算出部３４０は、コンピュータシステム１０の外部における全てのサーバプログラムを代表して１つのサーバプログラムとして表示してもよい。この場合、トランザクション検出部３００は、コンピュータシステム１０内の各サーバプログラムが外部の何れのサーバプログラムから呼び出されてトランザクションを行った場合であっても、当該トランザクションの呼出元の識別情報として同一の識別情報を検出しておけばよい。
【００４８】
図７（ｂ）は、コンピュータシステム１０において起点サービスが呼び出された場合におけるサービス呼出頻度を示す。具体的には、呼出頻度算出部３４０は、クライアントプログラム７１０のサーバプログラム７００に対する呼出を示す矢印（点線で示す）を、利用者から選択された場合に、その呼出により他のサーバプログラムが連鎖的に順次呼び出された場合におけるサービス呼出頻度を算出して表示する。サービス呼出頻度を算出するこの処理の詳細を説明する。
【００４９】
まず、説明の前提として、以下のパラメータを定義する。起点サービスs0が呼び出された場合においてサービスsが呼び出された回数を、以下の式（６）で表す。また、起点サービスs0が呼び出された場合における、サービスspの処理においてサービスscが呼び出された回数を、式（７）で表す。更に、起点サービスs0が呼び出された場合において、サービスspが呼び出される毎にサービスscが呼び出される回数を、式（８）で表す。
【数６】
2005190277.tif 000008
【数７】
2005190277.tif 000009
【数８】
2005190277.tif 000010
【００５０】
呼出頻度算出部３４０は、これらのパラメータを算出するべく以下の処理を行う。まず、呼出頻度算出部３４０は、起点サービスs0が１回呼び出された場合において、その呼出の結果他のトランザクションが連鎖的に順次呼び出された場合における、各トランザクションtの呼出頻度を、式（９）により算出する。但し、トランザクションt自体のサービスが起点サービスs0である場合の式（９）の値を１とする。ここで、呼出頻度算出部３４０は、まず、親トランザクションについての当該呼出頻度を算出し、続いて子トランザクションについての当該呼出頻度を順次算出する。具体的には、呼出頻度算出部３４０は、各トランザクションのついての子トランザクションの候補を示すDAG構造のデータを予めトポロジカルソート（位相配列）しておき、その配列順序に従って当該呼出頻度を順次算出してもよい。
【数９】
2005190277.tif 000011
【００５１】
この処理において、各トランザクションのついての子トランザクションの候補とは、当該トランザクションの呼出先のサーバ装置を呼出元とし、かつ当該トランザクションの開始時刻より後に開始しかつ終了時刻に先立って終了した他のトランザクションである。従って、第１のトランザクションと、当該第１のトランザクションより後に開始しかつ先に終了する第２のトランザクションと、第１のトランザクション及び第２のトランザクションの何れよりも後に開始しかつ何れよりも先に終了する第３のトランザクションとが検出された場合は、第２のトランザクション及び第３のトランザクションの双方が、第１のトランザクションの子トランザクションである。
これに代えて、呼出頻度算出部３４０は、当該第３のトランザクションを、当該第２のトランザクションの子トランザクションの候補として扱い、当該第３のトランザクションを、当該第１のトランザクションの子トランザクションの候補から除外して扱ってもよい。
【００５２】
そして、呼出頻度算出部３４０は、起点サービスs0が１回呼び出された場合において、その呼出から派生した呼出により親サービスspからトランザクションｔが呼び出される呼出頻度を、以下の式（１０）により算出する。ここで、η（sp|t）は、サービス呼出確率値と共に収束したトランザクション呼出確率値を示す。
【数１０】
2005190277.tif 000012
【００５３】
以上で算出したパラメータに基づいて、呼出頻度算出部３４０は、起点サービスs0が呼び出された場合におけるサービスsが呼び出される頻度を、式（１１）により算出する。また、呼出頻度算出部３４０は、起点サービスs0が呼び出された場合における、サービスspの処理においてサービスscが呼び出される呼出頻度を、式（１２）により算出する。
【数１１】
2005190277.tif 000013
【数１２】
2005190277.tif 000014
【００５４】
このように、呼出頻度算出部３４０は、トランザクション呼出確率値及び子トランザクションの候補に基づいて、あるサービスが呼び出された結果他のサービスが連鎖的に順次呼び出された場合におけるサービス呼出頻度を算出することができる。この際、式（９）及び式（１０）に示すように、呼出頻度算出部３４０は、各トランザクションについてのトランザクション呼出確率値を必要とする。従って、呼出頻度算出部３４０は、サーバプログラムの各々において当該サーバプログラムについてのトランザクション呼出確率値を算出させた場合であっても、算出させた当該トランザクション呼出確率値を収集する必要がある。このため、ネットワークトラフィックの増大を招くおそれがある。
【００５５】
一方、以下の方法によれば、呼出頻度算出部３４０は、ネットワークトラフィックを増大させることなく、あるサービスが呼び出された結果他のサービスが連鎖的に順次呼び出された場合におけるサービス呼出頻度を算出することができる。この方法について説明する。まず、説明の便宜上、式（４）により算出された回数の推定値を行列として式（１３）に表す。
【数１３】
2005190277.tif 000015
【００５６】
また、各サービスが呼び出される回数を示す大きさ|S|のベクトルをvとする。そして、あるサービスが１回呼び出された状態が初期状態であるので、起点サービスをsiとすれば、初期状態におけるvは、i番目の要素のみが1で他の要素が０であることを示す式（１４）により表される。
【数１４】
2005190277.tif 000016
【００５７】
以上の前提の下、この起点サービスsiが１回呼び出された場合に順次各々のサービスが呼び出される回数の極限値は、以下の式（１５）で表される。そして、式（１５）は、式（１６）のように変形できる。
【数１５】
2005190277.tif 000017
【数１６】
2005190277.tif 000018
【００５８】
呼出頻度算出部３４０は、式（１６）を計算することにより、起点サービスsiが１回呼び出された場合に順次各々のサービスが呼び出される回数の推定値を算出することができる。続いて、呼出頻度算出部３４０は、算出したこの推定値と、siが実際に呼び出された回数とに基づいて、式（１７）により、起点サービスsi のみが呼び出される場合においてsjが実際に呼び出されるサービス呼出頻度を算出できる。但し、式（１８）は、v*のi成分を示す。
【数１７】
2005190277.tif 000019
【数１８】
2005190277.tif 000020
【００５９】
同様に、起点サービスsiが１回呼び出された場合においてsjからskが呼び出されるサービス呼出頻度は、式（１９）と表せる。従って、呼出頻度算出部３４０は、起点サービスsi のみが呼び出される場合においてsjからskが実際に呼び出されるサービス呼出頻度を、式（２０）により算出できる。
【数１９】
2005190277.tif 000021
【数２０】
2005190277.tif 000022
【００６０】
図８は、解析システム３０として機能するコンピュータのハードウェア構成の一例を示す。解析システム３０は、ホストコントローラ８８２により相互に接続されるＣＰＵ８００、ＲＡＭ８２０、グラフィックコントローラ８７５、及び表示装置８８０を有するＣＰＵ周辺部と、入出力コントローラ８８４によりホストコントローラ８８２に接続される通信インターフェイス８３０、ハードディスクドライブ８４０、及びＣＤ−ＲＯＭドライブ８６０を有する入出力部と、入出力コントローラ８８４に接続されるＢＩＯＳ８１０、フレキシブルディスクドライブ８５０、及び入出力チップ８７０を有するレガシー入出力部とを備える。
【００６１】
ホストコントローラ８８２は、ＲＡＭ８２０と、高い転送レートでＲＡＭ８２０をアクセスするＣＰＵ８００及びグラフィックコントローラ８７５とを接続する。ＣＰＵ８００は、ＢＩＯＳ８１０及びＲＡＭ８２０に格納されたプログラムに基づいて動作し、各部の制御を行う。グラフィックコントローラ８７５は、ＣＰＵ８００等がＲＡＭ８２０内に設けたフレームバッファ上に生成する画像データを取得し、表示装置８８０上に表示させる。これに代えて、グラフィックコントローラ８７５は、ＣＰＵ８００等が生成する画像データを格納するフレームバッファを、内部に含んでもよい。
【００６２】
入出力コントローラ８８４は、ホストコントローラ８８２と、比較的高速な入出力装置である通信インターフェイス８３０、ハードディスクドライブ８４０、及びＣＤ−ＲＯＭドライブ８６０を接続する。通信インターフェイス８３０は、ネットワークを介して外部の装置と通信する。ハードディスクドライブ８４０は、解析システム３０が使用するプログラム及びデータを格納する。ＣＤ−ＲＯＭドライブ８６０は、ＣＤ−ＲＯＭ８９５からプログラム又はデータを読み取り、ＲＡＭ８２０を介して入出力チップ８７０に提供する。
【００６３】
また、入出力コントローラ８８４には、ＢＩＯＳ８１０と、フレキシブルディスクドライブ８５０や入出力チップ８７０等の比較的低速な入出力装置とが接続される。ＢＩＯＳ８１０は、解析システム３０の起動時にＣＰＵ８００が実行するブートプログラムや、解析システム３０のハードウェアに依存するプログラム等を格納する。フレキシブルディスクドライブ８５０は、フレキシブルディスク８９０からプログラム又はデータを読み取り、ＲＡＭ８２０を介して入出力チップ８７０に提供する。入出力チップ８７０は、フレキシブルディスク８９０や、例えばパラレルポート、シリアルポート、キーボードポート、マウスポート等を介して各種の入出力装置を接続する。
【００６４】
解析システム３０に提供されるプログラムは、フレキシブルディスク８９０、ＣＤ−ＲＯＭ８９５、又はＩＣカード等の記録媒体に格納されて利用者によって提供される。プログラムは、入出力チップ８７０及び／又は入出力コントローラ８８４を介して、記録媒体から読み出され解析システム３０にインストールされて実行される。
【００６５】
解析システム３０にインストールされて実行されるプログラムは、トランザクション検出モジュールと、子トランザクション候補検出モジュールと、トランザクション呼出確率算出モジュールと、サービス呼出頻度候補算出モジュールと、呼出頻度算出モジュールとを含む。各モジュールが解析システム３０又はアクセス認可装置１２０に働きかけて行わせる動作は、図１から図５において説明した解析システム３０における、対応する部材の動作と同一であるから、説明を省略する。
【００６６】
以上に示したプログラム又はモジュールは、外部の記憶媒体に格納されてもよい。記憶媒体としては、フレキシブルディスク８９０、ＣＤ−ＲＯＭ８９５の他に、ＤＶＤやＰＤ等の光学記録媒体、ＭＤ等の光磁気記録媒体、テープ媒体、ＩＣカード等の半導体メモリ等を用いることができる。また、専用通信ネットワークやインターネットに接続されたサーバシステムに設けたハードディスク又はＲＡＭ等の記憶装置を記録媒体として使用し、ネットワークを介してプログラムを解析システム３０に提供してもよい。
【００６７】
以上、本実施例に示すように、解析システム３０は、コンピュータシステム１０における各サーバ上で動作する各サーバプログラムが互いに他のサーバプログラムを呼び出す頻度を解析する。これにより、コンピュータシステム１０におけるネットワークの構成が変更されたこと、又は、コンピュータシステム１０内で動作するサーバプログラムの設定が変更されたこと等を適切に検出し、ネットワーク管理者の負担を軽減することができる。
【００６８】
また、解析システム３０は、コンピュータシステム１０内の通信におけるネットワーク層やデータリンク層の通信障害のみならず、アプリケーション層の通信障害を適切に検出することができる。これにより、解析システム３０は、例えば、コンピュータシステム１０内のサーバプログラムに障害が発生した場合には、その障害により減少する通信用パケットの流量が僅かな場合であっても、コンピュータシステム１０内のサーバプログラムに発生した障害を適切に検出することができる。
【００６９】
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態に記載の範囲には限定されない。上記実施の形態に、多様な変更または改良を加えることが可能であることが当業者に明らかである。その様な変更または改良を加えた形態も本発明の技術的範囲に含まれ得ることが、特許請求の範囲の記載から明らかである。
【００７０】
以上に示す実施例によると、以下の各項目に示す解析システム、解析方法、解析プログラム、及び記録媒体が実現される。
【００７１】
（項目１）  各々が互いにサービスを提供する複数のサーバプログラムが動作しているコンピュータシステムにおいて、サーバプログラム間の依存関係を解析する解析システムであって、前記複数のサーバプログラムの各々が他の何れかのサーバプログラムから呼び出されて行ったサービスの処理であるトランザクションを、当該サービスに対応付けて検出するトランザクション検出部と、前記トランザクション検出部により検出された各トランザクションについて、当該トランザクションにおいて呼び出される他のトランザクションである子トランザクションの候補を検出する子トランザクション候補検出部と、各トランザクションに対応付けて検出したサービスと、当該トランザクションの子トランザクションの候補に対応付けて検出したサービスとに基づいて、各サーバプログラムが他のサーバプログラムの各々を呼び出してサービスを行わせる頻度を推定したサービス呼出頻度を算出して出力する呼出頻度算出部とを備える解析システム。
（項目２）  前記複数のサーバプログラムの各々は、前記コンピュータシステムが有する複数のサーバ装置の何れかで動作し、前記トランザクション検出部は、前記トランザクションの各々に対応付けて、当該トランザクションの呼出元及び呼出先のサーバ装置の識別情報を更に検出し、前記子トランザクション候補検出部は、前記トランザクション検出部により検出された各トランザクションについて、当該トランザクションの呼出先のサーバ装置を呼出元とする他の各々のトランザクションを、前記子トランザクションの候補として検出する項目１記載の解析システム。
【００７２】
（項目３）  前記トランザクション検出部は、各サーバプログラムが前記コンピュータシステムの外部の何れかのサーバプログラムから呼び出されてトランザクションを行った場合に、当該トランザクションの呼出元の識別情報として同一の識別情報を検出する項目２記載の解析システム。
（項目４）  前記複数のサーバ装置はネットワークにより接続されており、前記トランザクション検出部は、前記コンピュータシステム内で前記トランザクションの呼び出しに用いられる通信用パケットを前記ネットワークから検出し、検出した当該通信用パケットの発信元ＩＰアドレス及び宛先ＩＰアドレスを、当該トランザクションの呼出元及び呼出先のサーバ装置の識別情報として検出し、当該通信用パケットの宛先ポート番号により識別されるサービスを、当該トランザクションにより行われるサービスとして検出する項目２記載の解析システム。
（項目５）  前記トランザクション検出部は、前記トランザクションの各々に対応付けて、更に、当該トランザクションの開始時刻及び終了時刻を検出し、前記子トランザクション候補検出部は、前記トランザクション検出部により検出された各トランザクションについて、当該トランザクションの開始時刻より後に開始しかつ終了時刻に先立って終了した他のトランザクションを、前記子トランザクションの候補として検出する項目１記載の解析システム。
【００７３】
（項目６）  前記トランザクション検出部により、第１のトランザクションと、当該第１のトランザクションより後に開始しかつ先に終了する第２のトランザクションと、当該第１のトランザクション及び第２のトランザクションの何れよりも後に開始しかつ何れよりも先に終了する第３のトランザクションとが検出された場合に、前記子トランザクション候補検出部は、前記第３のトランザクションを、前記第２のトランザクションの子トランザクションの候補として検出し、前記第１のトランザクションの子トランザクションの候補から除外する項目５記載の解析システム。
（項目７）  サービスプログラム毎に、当該サービスプログラムが他のサービスプログラムの各々から呼び出される確率の候補値であるサービス呼出確率値が予め定められており、前記サービス呼出確率値に基づいて、各トランザクションが複数のサーバプログラムの各々から呼び出された確率であるトランザクション呼出確率値を算出するトランザクション呼出確率値算出部と、同一のサービスを行う各トランザクションについての前記トランザクション呼出確率値に基づいて、他のサービス呼出確率値を算出するサービス呼出確率値算出部とを更に備え、前記呼出頻度算出部は、前記サービス呼出確率値算出部により算出された前記サービス呼出確率値に基づいて更に前記トランザクション呼出確率値算出部により前記トランザクション呼出確率値を算出させる処理を繰り返し、繰り返しの前で算出されたサービス呼出確率値及び繰り返しの後で算出されたサービス呼出確率値の差が予め定められた範囲内に収束した場合に、収束した当該サービス呼出確率値に基づいて、前記サービス呼出頻度を算出して出力する項目１記載の解析システム。
【００７４】
（項目８）  前記呼出頻度算出部は、更に、各トランザクションについてのトランザクション呼出確率値に基づいて、所定のトランザクションが呼び出された結果他のトランザクションが連鎖的に順次呼び出された場合における、各トランザクションの呼出頻度を算出し、算出したトランザクションの呼出頻度に基づいて、予め定めた起点サービスが呼び出された結果他のサービスが連鎖的に順次呼び出された場合におけるサービス呼出頻度を算出して出力する項目７記載の解析システム。
（項目９）  前記呼出頻度算出部は、更に、算出した前記サービス呼出頻度に基づいて、予め定められた起点サービスが呼び出された結果他のサービスが連鎖的に順次呼び出された場合におけるサービス呼出頻度を算出して出力する項目７記載の解析システム。
（項目１０）  前記呼出頻度算出部は、前記サービス呼出頻度を定期的に算出し、算出したサービス呼出頻度が、予め定められた基準値と比較して予め定められた差分値以上相違している場合に、当該サービス呼出頻度が基準値と相違している旨を更に出力する項目１記載の解析システム。
【００７５】
（項目１１）  各々が互いにサービスを提供する複数のサーバプログラムが動作しているコンピュータシステムにおいて、サーバプログラム間の依存関係を解析する解析方法であって、前記複数のサーバプログラムの各々が他の何れかのサーバプログラムから呼び出されて行ったサービスの処理であるトランザクションを、当該サービスに対応付けて検出するトランザクション検出段階と、前記トランザクション検出段階において検出された各トランザクションについて、当該トランザクションにおいて呼び出される他のトランザクションである子トランザクションの候補を検出する子トランザクション候補検出段階と、各トランザクションに対応付けて検出したサービスと、当該トランザクションの子トランザクションの候補に対応付けて検出したサービスとに基づいて、各サーバプログラムが他のサーバプログラムの各々を呼び出してサービスを行わせる頻度を推定したサービス呼出頻度を算出して出力する呼出頻度算出段階とを備える解析方法。
（項目１２）  各々が互いにサービスを提供する複数のサーバプログラムが動作しているコンピュータシステムにおいて、サーバプログラム間の依存関係をコンピュータにより解析する解析プログラムであって、前記コンピュータを、前記複数のサーバプログラムの各々が他の何れかのサーバプログラムから呼び出されて行ったサービスの処理であるトランザクションを、当該サービスに対応付けて検出するトランザクション検出部と、前記トランザクション検出部により検出された各トランザクションについて、当該トランザクションにおいて呼び出される他のトランザクションである子トランザクションの候補を検出する子トランザクション候補検出部と、各トランザクションに対応付けて検出したサービスと、当該トランザクションの子トランザクションの候補に対応付けて検出したサービスとに基づいて、各サーバプログラムが他のサーバプログラムの各々を呼び出してサービスを行わせる頻度を推定したサービス呼出頻度を算出して出力する呼出頻度算出部として機能させる解析プログラム。
（項目１３）  項目１２記載の解析プログラムを記録した記録媒体。
【図面の簡単な説明】
【００７６】
【図１】図１は、コンピュータシステム１０のブロック図を示す。
【図２】図２は、サーバプログラムが他のサーバプログラムを呼び出す処理の概念図を示す。
【図３】図３は、解析システム３０のブロック図を示す。
【図４】図４は、各トランザクションについて子トランザクション候補検出部３１０が検出した子トランザクションの候補をDAG(Directed Acyclic Graph)として示す。
【図５】図５は、解析システム３０がサーバプログラム間の依存関係を解析する処理の動作フローを示す。
【図６】図６は、解析システム３０が出力するサービス呼出頻度の一例を示す。
【図７】図７は、解析システム３０が出力するサービス呼出頻度の他の例を示す。
【図８】図８は、解析システム３０として機能するコンピュータのハードウェア構成の一例を示す。
【符号の説明】
【００７７】
１０  コンピュータシステム
２０  ネットワーク
３０  解析システム
４０  クライアント装置
４５  ルータ
５０  ディスパッチャ
６０  ウェブサーバ
６２  ＨＴＴＰサーバプログラム
６４  アプリケーションサーバプログラム
７０  ウェブサーバ
７２  ＨＴＴＰサーバプログラム
７４  アプリケーションサーバプログラム
８０  データベースサーバ
３００  トランザクション検出部
３１０  子トランザクション候補検出部
３２０  トランザクション呼出確率算出部
３３０  サービス呼出確率値算出部
３４０  呼出頻度算出部
７００  サーバプログラム
７１０  クライアントプログラム
７２０  クライアントプログラム
７３０  サーバプログラム
【図１】
2005190277.tif 000023
【図２】
2005190277.tif 000024
【図３】
2005190277.tif 000025
【図４】
2005190277.tif 000026
【図５】
2005190277.tif 000027
【図６】
2005190277.tif 000028
【図７】
2005190277.tif 000029
【図８】
2005190277.tif 000030