解析プログラム、解析方法、および解析装置
【課題】異なる階層に属する複数サーバ間での処理時間の影響伝搬の可能性の有無を解析できるようにする。
【解決手段】記憶手段2は、複数のサーバが連携してトランザクションを実行する複数階層システムにおいて実行された各トランザクションに関し、各階層のサーバが各トランザクションに関する処理を実行した期間を示す情報を記憶する。処理時間解析手段1bは、記憶手段2を参照し、第1の階層に属するサーバの1処理当たりの平均処理時間の時系列推移と、第2の階層に属するサーバの1処理当たりの平均処理時間の時系列推移とを計算する。相関判定手段1cは、第1の階層に属するサーバの平均処理時間の時系列推移と、第2の階層に属するサーバの平均処理時間の時系列推移との間の相関の有無を判定する。
【解決手段】記憶手段2は、複数のサーバが連携してトランザクションを実行する複数階層システムにおいて実行された各トランザクションに関し、各階層のサーバが各トランザクションに関する処理を実行した期間を示す情報を記憶する。処理時間解析手段1bは、記憶手段2を参照し、第1の階層に属するサーバの1処理当たりの平均処理時間の時系列推移と、第2の階層に属するサーバの1処理当たりの平均処理時間の時系列推移とを計算する。相関判定手段1cは、第1の階層に属するサーバの平均処理時間の時系列推移と、第2の階層に属するサーバの平均処理時間の時系列推移との間の相関の有無を判定する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は複数階層システムから得られた情報を解析する解析プログラム、解析方法、および解析装置に関する。
【背景技術】
【0002】
従来、複数のコンピュータが階層的に処理を分担する情報処理システム(複数階層システムという)が利用されている。以下、複数階層システムを構成するコンピュータを「サーバ」と呼ぶ。複数階層システムとして、例えばシステム利用のためのインタフェースを提供するWebサーバ、システム上の処理を実行するApp(Application)サーバおよびデータを管理するDB(Database)サーバを有する3階層システムが知られている。各サーバは、ユーザからの処理要求に対して連携して処理を実行し、その処理要求に応答する。このように、各サーバに処理を分担させることで、システムの信頼性や応答性を向上できる。
【0003】
このようなWeb複数階層システムに代表される複数階層システムにおいて、エンドユーザにおける応答時間の増大が発生した際には、問題が発生しているサーバが属する階層を特定することが、障害対応の第一歩として非常に重要である。そのために、各階層のサーバにおいて処理時間を測定し、その推移を監視することによって問題の有無を判定する手法が広く一般に採用されている。
【0004】
例えば、トランザクションモデルを生成し、スイッチを介して送受信されたメッセージからトランザクションモデルに沿って進行するメッセージの受け渡しを検出する技術が考えられている。この技術により、任意のトランザクションを構成するメッセージの集合を特定し、そのトランザクションの解析が可能となる。例えば、ユーザのリクエストからレスポンスまでの各アプリケーションの処理を追跡することができる。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2006−011683号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかし、従来の方法では、各階層のサーバにおける処理時間の解析により、個々のサーバでの処理時間の増加は検出できるものの、処理遅延などの問題の発生原因となる箇所を迅速に特定するには不十分な場合があった。
【0007】
例えば、複数の階層のサーバにおいて処理時間が同時に増加する場合がある。このような処理時間の増加原因として、例えば、以下の2つの発生パターンが想定される。
第1の発生パターンは、各階層のサーバそれぞれにおいて過負荷などの問題が独立して発生している場合である。第2の発生パターンは、下位層のサーバにのみ問題が発生しており、上位層のサーバは、下位層のサーバの処理時間の増加の影響を受けているだけの場合である。ところが従来の技術では、このような2つの発生パターンを区別することができなかった。その結果、処理時間の増加を複数の階層のサーバにおいて検出すると、各階層のサーバそれぞれを調査して原因究明を行うこととなり、原因究明とその対策に時間がかかっていた。
【0008】
1つの側面では、本発明は、異なる階層に属する複数サーバ間での処理時間の影響伝搬の可能性の有無の解析を行う解析プログラム、解析方法および解析装置を提供することを目的とする。
【課題を解決するための手段】
【0009】
1つの案では、コンピュータは、複数のサーバが連携してトランザクションを実行する複数階層システムにおいて実行された各トランザクションに関し、各階層のサーバが各トランザクションに関する処理を実行した期間を示す情報を記憶する記憶手段を参照する。そしてコンピュータは、第1の階層に属するサーバの1処理当たりの平均処理時間の時系列推移と、第2の階層に属するサーバの1処理当たりの平均処理時間の時系列推移とを計算する。さらにコンピュータは、第1の階層に属するサーバの平均処理時間の時系列推移と、第2の階層に属するサーバの平均処理時間の時系列推移との間の相関の有無を判定する。
【0010】
また、上記解析プログラムを実行するコンピュータと同様の処理をコンピュータに実行させる解析方法を用いる。
また、上記解析プログラムを実行するコンピュータと同様の処理を実行する機能を有する解析装置を用いる。
【発明の効果】
【0011】
異なる階層に属する複数サーバ間での処理時間の影響伝搬の可能性の有無が解析できる。
【図面の簡単な説明】
【0012】
【図1】第1の実施の形態に係る解析装置の機能を示すブロック図である。
【図2】第2の実施の形態の業務システムの全体構成を示す図である。
【図3】第2の実施の形態の運用管理サーバのハードウェア構成を示す図である。
【図4】第2の実施の形態の運用管理サーバの機能構成を示すブロック図である。
【図5】影響伝搬解析処理の手順を示すフローチャートの一例である。
【図6】業務システムにおける通信の流れの具体例を示すシーケンス図である。
【図7】メッセージ記憶部に記憶されたメッセージの一例を示す第1の図である。
【図8】メッセージ記憶部に記憶されたメッセージの一例を示す第2の図である。
【図9】メッセージフロー情報記憶部のデータ構造例を示す図である。
【図10】正常時の処理時間解析処理手順を示すフローチャートの一例である。
【図11】1トランザクションにおけるサーバの処理区間の分類例を示す図である。
【図12】異常時の処理時間解析処理の手順の一例を示すフローチャートの前半である。
【図13】異常時の処理時間解析処理の手順の一例を示すフローチャートの後半である。
【図14】「問い合わせ開始前」区間のみ処理時間が増加した状況を示す図である。
【図15】正常時平均処理時間記憶部のデータ構造の一例を示す図である。
【図16】正常時の処理時間の時系列推移を示す図である。
【図17】正常時相関係数記憶部のデータ構造の一例を示す図である。
【図18】異常時処理時間記憶部のデータ構造の一例を示す図である。
【図19】異常時の処理時間の時系列推移を示す図である。
【図20】異常時相関係数記憶部のデータ構造の一例を示す図である。
【図21】異常警報画面の一例を示す図である。
【図22】第3の実施の形態の運用管理サーバの機能構成を示すブロック図である。
【図23】システムへの入力負荷と平均処理時間の標準偏差との関係を示す図である。
【図24】入力負荷と標準偏差との関係の解析例を示す図である。
【図25】入力負荷と標準偏差との関係をプロットした例を示す図である。
【図26】部分時系列選択処理の手順の一例を示すフローチャートである。
【図27】下位層での部分時系列選択処理の手順の一例を示すフローチャートである。
【図28】上位層での部分時系列選択処理手順の一例を示す図である。
【発明を実施するための形態】
【0013】
以下、本実施の形態について図面を参照して説明する。
〔第1の実施の形態〕
図1は、第1の実施の形態に係る解析装置の機能を示すブロック図である。第1の実施の形態に係る解析装置1は、記憶手段2に記憶された情報を参照して解析処理を行う。
【0014】
記憶手段2は、2つ以上のサーバが連携してトランザクションを実行する複数階層システムにおいて実行されたトランザクションに関する複数のトランザクション情報2a,2b,2cを記憶する。トランザクション情報2a,2b,2cは、各階層のサーバが各トランザクションに関する処理を実行した期間を示す情報を含んでいる。例えば、トランザクションにおけるサーバ間で通信されたメッセージと、各メッセージの通信時刻とがトランザクション情報に含まれる。この場合、メッセージの通信時刻によって、各階層のサーバがトランザクションに関する処理を実行した期間が示されている。すなわち、サーバがトランザクション中のメッセージを受信し、その次のメッセージを送信するまでの期間が、そのサーバで処理を実行した期間となる。
【0015】
解析装置1は、トランザクション情報を用いた解析機能として、異常判定手段1a、処理時間解析手段1b、および相関判定手段1cを有する。
異常判定手段1aは、記憶手段2を参照し、複数階層システムでの異常の有無を判定する。例えば異常判定手段1aは、最上位のサーバにおける処理要求の受信から応答の送信までの時間に基づいて、複数階層システムの異常の有無を判定することができる。この場合、異常判定手段1aは、例えば、所定期間内に実行された複数のトランザクションそれぞれにおける最上位のサーバによる処理要求の受信から応答の送信までの経過時間の平均が、予め設定された閾値以上の場合、その所定期間を、異常が検出された期間と判定する。以下、異常が検出された期間を「異常時」、異常が検出されていない期間を「正常時」とする。
【0016】
処理時間解析手段1bは、トランザクション情報に基づいて、第1の階層に属するサーバの1処理当たりの平均処理時間の時系列推移と、第2の階層に属するサーバの1処理当たりの平均処理時間の時系列推移とを計算する。図1の例では、サーバ「A」とサーバ「B」とについて、1処理当たりの平均処理時間の時系列推移が計算されている。なお、処理時間解析手段1bは、正常時と異常時との時系列推移を個別に計算することができる。例えば処理時間解析手段1bは、正常時におけるトランザクション情報に基づいて、第1の階層に属するサーバの1処理当たりの平均処理時間の時系列推移と、第2の階層に属するサーバの1処理当たりの平均処理時間の時系列推移とを計算する。また処理時間解析手段1bは、異常時におけるトランザクション情報に基づいて、第1の階層に属するサーバの1処理当たりの平均処理時間の時系列推移と、第2の階層に属するサーバの1処理当たりの平均処理時間の時系列推移とを計算する。
【0017】
なお処理時間解析手段1bは、次のようにして、第1の階層と第2の階層とを決定する。例えば、処理時間解析手段1bは、記憶手段2を参照する。そして処理時間解析手段1bは、異常時における各階層に属するサーバの1処理当たりの平均処理時間が、正常時における1処理当たりの平均処理時間より所定値以上増大したか否かを判断する。処理時間解析手段1bは、処理時間が所定値以上増大した2つの階層を、それぞれ第1の階層および第2の階層として決定する。
【0018】
相関判定手段1cは、第1の階層に属するサーバの平均処理時間の時系列推移と、第2の階層に属するサーバの平均処理時間の時系列推移との間の相関の有無を判定する。例えば相関判定手段1cは、第1の階層に属するサーバの1処理当たりの平均処理時間の時系列推移と、第2の階層に属するサーバの1処理当たりの平均処理時間の時系列推移との相関係数を算出する。そして相関判定手段1cは、相関係数が所定の有意水準の限界値以上の場合に、時系列推移間に相関があると判断する。
【0019】
なお相関判定手段1cは、正常時と異常時とにおいて、個別に相関の有無を判定することができる。すなわち、相関判定手段1cは、処理時間解析手段1bによって計算された正常時の時系列推移を取得する。そして相関判定手段1cは、正常時の第1の階層のサーバの平均処理時間の時系列推移と、正常時の第2の階層に属するサーバの平均処理時間の時系列推移との間の相関の有無を判定する。また相関判定手段1cは、処理時間解析手段1bから異常時の時系列推移を取得する。そして相関判定手段1cは、異常時の第1の階層のサーバの平均処理時間の時系列推移と、異常時の第2の階層に属するサーバの平均処理時間の時系列推移との間の相関の有無を判定する。
【0020】
正常時と異常時とにおいて個別に相関の有無を判定した場合、相関判定手段1cは、階層の異なるサーバ間での1処理当たりの処理時間の増大の因果関係の有無を判定することができる。例えば相関判定手段1cは、異常時において相関ありと判定され、正常時において相関なしと判定された場合に、処理時間の増大の因果関係ありと判定する。
【0021】
このような機能を有する解析装置1によれば、複数階層システムにおける異なる階層のサーバ間の処理時間の影響伝搬の有無を判断することができる。影響伝搬がある場合、処理時間増大などの異常発生時に、因果関係がある複数の階層のうち一方の階層に属するサーバにおける異常の原因を取り除くだけで、システム全体の異常が解消できる可能性がある。すると因果関係を有する他方の階層のサーバにおいて異常の原因の探索を行わずにすみ、異常解析の作業効率が向上する。
【0022】
なお図1の例では因果関係の有無まで判定しているが、正常時、異常時の区別をせずに、解析装置1が所定期間における相関の有無を判定するだけでも、管理者は、影響伝搬の可能性を容易に認識できる。例えば、管理者が複数階層システムに何らかの異常が検出した期間のトランザクション情報のみを記憶手段2に格納する。その後、管理者は、異常が検出された期間のトランザクション情報に基づいて、解析装置1でサーバ間の処理時間の相関を判定させる。管理者がこのような作業を行えば、解析装置1に異常判定手段1aを備えなくとも、異常時におけるサーバ間の処理時間の相関を判定できる。少なくとも異常時に有意な相関が認められれば、管理者は、サーバ間に影響伝搬の可能性があることが認識できる。
【0023】
また、図1に示す解析装置1は、有意な相関の有無にとどまらず、因果関係の有無までも判断している。因果関係の有無までも判定することで、障害解析の経験が不十分な管理者であっても、サーバ間の処理時間の増加の因果関係の有無を適格に判断でき、異常状態の解消にかかる作業効率が向上する。
【0024】
すなわち、図1に示す解析装置1を用いれば、複数の階層の処理時間が同時に増大した場合に、それらの両方共が本当に問題を抱えているのか、それとも一方だけが問題を抱えていてそれが他方に影響を与えているのか認識できる。異なる階層のサーバ間に処理時間の因果関係があることが分かれば、因果関係の方向(どちらが原因でどちらが結果か)は推定可能である。例えば、複数階層システムの場合は通常は下位層のサーバが上位層のサーバに影響を与える。そこで、複数階層システムに異常がある場合、管理者は、因果関係にある複数の階層のうち下位層のサーバだけを調べればよいことが理解でき、作業効率が向上する。逆に、因果関係の有無が判別できないと、両方の階層に原因があると誤解して調査を進めてしまう場合があり得る。その結果、両方の階層を調査する為に余計な時間がかかったり、無駄に両方の階層のハードウェアを買い替えたり、原因分析が混乱して問題原因が発見できなかったりといった作業が行われ、作業効率が低下する。
【0025】
なお、複数階層システムでは、第1の階層に属するサーバまたは第2の階層に属するサーバが、上位層のサーバからの処理要求に応じた処理中に下位層のサーバへの処理要求を出力している場合がある。このような場合、処理時間解析手段1bは、処理の開始の契機となる通信および処理の終了時に行われる通信に応じて各処理の実行期間を複数の種別に分類してもよい。複数の種別に分類した場合、処理時間解析手段1bは、複数の種別から少なくとも1つの種別を選択する。そして処理時間解析手段1bは、選択した少なくとも1つの種別に属する処理の実行期間の処理時間の平均を、第1の階層に属するサーバまたは第2の階層に属するサーバの1処理当たりの平均処理時間とする。
【0026】
処理を複数の種別に分類する場合、処理時間解析手段1bは、例えば以下のような3種に分類する。
第1種は、上位層のサーバから入力された処理要求を契機として開始され、下位層のサーバへ処理要求を出力して終了する処理の実行期間が属する。第2種は、下位層のサーバに対して出力した処理要求に対する該サーバからの応答を契機として開始され、下位層のサーバへ処理要求を出力して終了する処理の実行期間が属する。第3種は、下位層のサーバに対して出力した処理要求に対する該サーバからの応答を契機として開始され、上位層のサーバに対して応答を出力して終了する処理の実行期間が属する。
【0027】
処理の実行期間を第1種〜第3種に分類した場合、処理時間解析手段1bは、例えば第2種に属する実行期間が存在すれば、第2種を優先的に選択する。すなわち処理時間解析手段1bは、第2種に属する実行期間の処理時間の平均を、第1の階層に属するサーバまたは第2の階層に属するサーバの1処理当たりの平均処理時間とする。第2種は、他の階層のサーバとの接続待ち時間の影響を受けづらく、サーバの処理負荷の状況が、処理時間として正確に現れると考えられるためである。
【0028】
また、相関判定手段1cは、特定の条件が満たされた場合、処理時間の時系列推移を用いずに、因果関係の有無を判定することができる。例えば、第1の階層と第2の階層とのうちの上位層において、第1種に属する実行時間の平均処理時間が所定値以上増大し、第2種および第3種に属する実行時間の平均処理時間の所定値以上の増大が認められない場合がある。このような場合、相関判定手段1cは、上位層の処理時間の増大と、下位層の処理時間増大との間に因果関係があると判定する。この場合、因果関係の有無に加え、原因の発生箇所と、原因の影響を受けた箇所とについても特定できる。すなわち相関判定手段1cは、上位層の処理時間の増大は、下位層の処理時間増大の影響が伝搬したものであると判定できる。
【0029】
〔第2の実施の形態]
以下、第2の実施の形態について図面を参照して詳細に説明する。第2の実施の形態は、ネットワークを介して伝送されるパケットをキャプチャし、キャプチャしたパケットを用いて解析を行うものである。
【0030】
第2の実施の形態では、複数階層システムとしてWeb3階層システムを例として説明する。Web3階層システムとは、Webサーバ、アプリケーションサーバ(以降、Appサーバ)、データベースサーバ(以降、DBサーバ)からなる複数階層システムである。エンドユーザのコンピュータ上のブラウザが出力する処理要求は、WebサーバがHTTP(hyper text transfer protocol)に従ったパケットで受ける。処理要求が静的コンテンツの取得であれば、Webサーバが、保持しているコンテンツを直接エンドユーザのコンピュータへ返信する。他方、処理要求がプログラムによって生成される動的コンテンツの取得の場合、Webサーバは、処理をAppサーバへ依頼する。処理の依頼を受けたAppサーバは、Java(登録商標)などで記述されたプログラムによってその処理要求を実行する。Appサーバは、処理の過程において、使用されるデータは、それを保持するDBサーバに対して処理要求を発行して取得する。
【0031】
このようなWeb3階層システムにおいて、例えばAppサーバとDBサーバとにおいて同時に、1つのトランザクションに関する処理に要する時間が増大することがある。このとき、Appサーバの処理時間の増大はDBサーバの処理時間の増大の影響が伝搬したものであり、DBサーバにおいて発生した問題を解消することで、Appサーバの処理時間は減少する場合がある。このような影響の伝搬の関係が予め分かっていれば、処理時間の増大という異常が発生した場合、その対策を迅速に行うことができる。
【0032】
図2は、第2の実施の形態の業務システムの全体構成を示す図である。この業務システムは、運用管理サーバ100、Webサーバ200、Appサーバ300およびDBサーバ400を有する。運用管理サーバ100、Webサーバ200、Appサーバ300およびDBサーバ400は、スイッチ装置10を介して相互に接続されている。また、スイッチ装置10は、ネットワーク20を介して端末装置21,22,23に接続されている。
【0033】
端末装置21,22,23は、スイッチ装置10およびネットワーク20を介してWebサーバ200にアクセス可能である。端末装置21,22,23のユーザは、Webサーバ200が提供するGUI(Graphical User Interface)を端末装置21,22,23から操作して業務システムを利用できる。ネットワーク20は、例えばイントラネットである。
【0034】
なお、ネットワーク20がインターネットである場合も考えられる。その場合、スイッチ装置10はファイアウォールとして機能させることもできる。また、Webサーバ200の属するネットワークセグメントは、例えばDMZ(Demilitarized Zone)として扱われる。
【0035】
運用管理サーバ100は、Webサーバ200、Appサーバ300およびDBサーバ400の稼働状況を管理する。運用管理サーバ100は、そのための情報をスイッチ装置10から取得することができる。すなわち、スイッチ装置10は、ポートミラーリング機能を有しており、Webサーバ200、Appサーバ300およびDBサーバ400の間で送受信される通信パケットを運用管理サーバ100にも送信する。ポートミラーリング機能とは、スイッチ装置10上の設定したポートを流れるIPパケットをコピーして、指定した別のポートへ転送する機能である。この転送先として指定されたポートの先に、IPパケット記録や解析を行う運用管理サーバ100が配置される。
【0036】
運用管理サーバ100は、スイッチ装置10から送信される通信パケットを受信して、記憶する(パケットキャプチャ)。なお、運用管理サーバ100で単にパケットキャプチャを行う用途であれば、スイッチ装置10をリピータハブで代用することもできる。運用管理サーバ100は、この転送されてくるIPパケットを受信可能なネットワークインタフェースを有している。そして運用管理サーバ100は、転送されてきたIPパケット格納用の十分に大きなハードディスクを有している。さらに、運用管理サーバ100は、IPパケットをキャプチャするのに十分なCPU(Central Processing Unit)性能を保有していることが望ましい。転送されてきたIPパケットは、運用管理サーバ100上でキャプチャされ、その後にメッセージフローを抽出する為の処理が実施される。
【0037】
Webサーバ200は、端末装置21,22,23で実行されるWebブラウザから業務システムに対する処理要求(メッセージ)を受け付ける。ここで、Webサーバ200と端末装置21,22,23とのメッセージ交換は、HTTPによって行われるものとする。ただし、他のプロトコルが用いられてもよい。
【0038】
以下では、端末装置21,22,23からWebサーバ200へ送信する処理要求をHTTPリクエストと呼ぶこととする。また、それに対する応答をHTTPレスポンスと呼ぶこととする。なお、リクエスト/レスポンスともに処理要求の一例である。
【0039】
Webサーバ200は、端末装置21,22,23から受信したHTTPリクエストに基づいて、静的コンテンツに関しては自装置でHTTPレスポンスを生成し、端末装置21,22,23に送信する。なお、動的コンテンツに関しては、Appサーバ300に依頼すべき処理の処理要求(メッセージ)を生成して、Appサーバ300に送信する。
【0040】
ここで、Webサーバ200とAppサーバ300とのメッセージ交換は、IIOP(Internet Inter-ORB(Object Request Broker) Protocol)によって行われるものとする。ただし、他のプロトコルが用いられてもよい。
【0041】
以下では、Webサーバ200からAppサーバ300へ送信する処理要求をIIOPリクエストと呼ぶこととする。また、それに対する応答をIIOPレスポンスと呼ぶこととする。
【0042】
Webサーバ200は、IIOPリクエストに対するIIOPレスポンスを受信すると、その内容に基づいてHTTPレスポンスを生成して、端末装置21,22,23に送信する。
【0043】
Appサーバ300は、Webサーバ200から受信したIIOPリクエストに基づいてDBサーバ400に依頼すべき処理のクエリを生成し、DBサーバ400に送信する。
ここで、Appサーバ300が生成するクエリは、例えばSQL文によって表記される。以下では、Appサーバ300がDBサーバ400に送信するクエリをDBリクエストと呼ぶこととする。また、それに対する応答をDBレスポンスと呼ぶこととする。
【0044】
Appサーバ300は、DBリクエストに対するDBレスポンスを受信すると、その内容に基づいてIIOPレスポンスを生成してWebサーバ200に送信する。
DBサーバ400は、Appサーバ300から受信したDBリクエストに含まれるSQL文を実行してDBの参照や更新等の処理を実行する。DBサーバ400は、その処理結果に基づいてDBレスポンスを生成し、Appサーバ300に送信する。
【0045】
なお、業務システムにおいてWebサーバ200、Appサーバ300およびDBサーバ400と各層(Web層、App層およびDB層)一台ずつの構成を例示したが、各層にそれぞれ複数台のサーバを設けてもよい。各層に複数のサーバがある場合、各層において負荷分散処理が行われる。
【0046】
階層間を跨って送受信されるメッセージを取得する手法には何通りか考えられるが、第2の実施の形態では、ネットワーク上を流れるIPパケットから情報を取得するものとする。この場合、ポートミラーリング機能を有するスイッチ装置10が用いられる。
【0047】
また、以下では各サーバという場合、Webサーバ200、Appサーバ300およびDBサーバ400を示すものとする。更に、Webサーバ200は、Appサーバ300およびDBサーバ400よりも上位層のサーバであるとする。また、Appサーバ300は、DBサーバ400よりも上位層のサーバであるとする。このような階層関係を定義する情報は、運用管理サーバ100に予め格納される。
【0048】
図3は、第2の実施の形態の運用管理サーバのハードウェア構成を示す図である。運用管理サーバ100は、CPU101、ROM(Read Only Memory)102、RAM(Random Access Memory)103、HDD(Hard Disk Drive)104、グラフィック処理装置105、入力インタフェース106、記録媒体読取装置107および通信インタフェース108を有する。
【0049】
CPU101は、運用管理サーバ100全体を制御する。
ROM102は、運用管理サーバ100上のBIOS(Basic Input / Output System)のプログラムなどを記憶する。
【0050】
RAM103は、CPU101に実行させるOS(Operating System)のプログラムやアプリケーションのプログラムの少なくとも一部を一時的に記憶する。また、RAM103は、CPU101による処理に必要な各種データを記憶する。
【0051】
HDD104は、OSのプログラム、アプリケーションのプログラムを記憶する。また、HDD104はCPU101による処理に必要な各種データを記憶する。なお、HDD104に代えて(または、HDD104と併せて)、SSD(Solid State Drive)など他の種類の記憶装置を用いてもよい。
【0052】
グラフィック処理装置105は、モニタ11と接続される。グラフィック処理装置105は、CPU101からの命令に従って画像をモニタ11の画面に表示させる。
入力インタフェース106は、キーボード12とマウス13と接続される。入力インタフェース106は、キーボード12やマウス13から送られてくる信号をCPU101に送信する。
【0053】
記録媒体読取装置107は、記録媒体14に記憶されたデータを読み取る読取装置である。例えば、運用管理サーバ100が有すべき機能は、その機能の処理内容を記述したプログラムをコンピュータに実行させることで実現できる。そのようなプログラムは、コンピュータ読み取り可能な記録媒体14に記録して配布することができる。また、スイッチ装置10あるいはネットワーク20に接続されたプログラム配信サーバ(図示せず)にそのプログラムを格納してもよい。この場合、運用管理サーバ100は、スイッチ装置10あるいはネットワーク20を介してプログラム配信サーバからプログラムをダウンロードすることができる。
【0054】
記録媒体14としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリを使用できる。磁気記録装置には、HDD、フレキシブルディスク(FD:Flexible Disk)、磁気テープなどがある。光ディスクには、CD(Compact Disc)、CD−R(Recordable)/RW(ReWritable)、DVD(Digital Versatile Disc)、DVD−R/RW/RAMなどがある。光磁気記録媒体には、MO(Magneto-Optical disk)などがある。半導体メモリには、USB(Universal Serial Bus)メモリなどのフラッシュメモリがある。
【0055】
通信インタフェース108は、TP(Twisted Pair)ケーブルや光ケーブル等によってスイッチ装置10と接続される。通信インタフェース108は、スイッチ装置10を介して他の情報処理装置とデータ通信する。また、通信インタフェース108は、各サーバの間で送受信される通信パケットをスイッチ装置10から受信する。
【0056】
なお、Webサーバ200、Appサーバ300、DBサーバ400および端末装置21,22,23も運用管理サーバ100と同様のハードウェア構成により実現できる。
図4は、第2の実施の形態の運用管理サーバの機能構成を示すブロック図である。運用管理サーバ100は、メッセージ解析部110、メッセージ記憶部120、メッセージフロー検出部130、メッセージフロー情報記憶部140、および影響伝搬分析部150を有する。
【0057】
メッセージ解析部110は、スイッチ装置10を介して送受信される通信パケットをスイッチ装置10から受信する。さらにメッセージ解析部110は、受信したパケットを解析し、Webサーバ200、Appサーバ300、DBサーバ400および端末装置21,22,23において通信されたメッセージを再構成する。そしてメッセージ解析部110は、再構成したメッセージをメッセージ記憶部120に格納する。
【0058】
メッセージ記憶部120は、再構成されたメッセージを記憶する。例えばRAM103またはHDD104の記憶領域の一部がメッセージ記憶部120として使用される。
メッセージフロー検出部130は、メッセージ記憶部120に格納されたメッセージから、Webサーバ200、Appサーバ300、およびDBサーバ400で実行されたトランザクション(一連の処理)のメッセージフローを検出する。例えば、メッセージフロー検出部130は、予めメッセージフローモデルを有しており、メッセージフローモデルに合致するメッセージの組み合わせを、メッセージ記憶部120から抽出する。そしてメッセージフロー検出部130は、メッセージフローモデルに合致するメッセージの組み合わせを、メッセージフロー情報としてメッセージフロー情報記憶部140に格納する。
【0059】
メッセージフロー情報記憶部140は、メッセージフロー情報を記憶する。例えばRAM103またはHDD104の記憶領域の一部が、メッセージフロー情報記憶部140として使用される。
【0060】
影響伝搬分析部150は、メッセージフロー情報記憶部140に格納されたメッセージフロー情報に基づいて、異なる階層のサーバ間での影響の伝搬の有無を分析する。そのために、影響伝搬分析部150は、異常有無判定部151、正常時処理時間解析部152、異常時処理時間解析部153、および相関判定部154を有する。
【0061】
異常有無判定部151は、メッセージフロー情報記憶部140に格納されたメッセージフロー情報に基づいて、異常の有無を判定する。例えば異常有無判定部151は、メッセージフロー情報に示される最上位層のサーバ(Webサーバ200)へのリクエストメッセージの入力から、そのサーバからレスポンスメッセージの出力までの時間(処理時間)を計算する。異常有無判定部151は、メッセージフローの処理時間の平均が、所定時間以上の場合、異常ありと判定する。なお、本実施の形態において特に断りのない限り、「平均」とは相加平均(すべて標本の値の和を標本数で除算した値)を意味する。異常有無判定部151は、異常ありと判定した場合、例えば異常があった期間と、異常を検出した旨の情報とを正常時処理時間解析部152と異常時処理時間解析部153とに通知する。
【0062】
正常時処理時間解析部152は、正常に処理されている期間のトランザクションに関するメッセージフロー情報に基づいて、該当するトランザクションを実行する各階層のサーバ間の処理時間の相関関係の有無を解析する。以後、正常に処理されている期間のトランザクションに関するメッセージフロー情報を、正常時メッセージフロー情報と呼ぶこととする。例えば正常時処理時間解析部152は、異常有無判定部151において異常と判定された時からの所定期間を除外した期間内のメッセージフロー情報を、正常時メッセージフロー情報と判断する。
【0063】
なお正常時処理時間解析部152は、正常時処理時間記憶部152aと正常時相関係数記憶部152bとを有している。正常時処理時間記憶部152aは、各階層の区間種別ごとの正常時の処理に関する平均処理時間を記憶する。例えばRAM103またはHDD104の記憶領域の一部が、正常時処理時間記憶部152aとして使用される。正常時相関係数記憶部152bは、各階層の区間種別ごとの正常時の処理に関する相関係数を記憶する。例えばRAM103またはHDD104の記憶領域の一部が、正常時相関係数記憶部152bとして使用される。
【0064】
異常時処理時間解析部153は、異常が発生している期間のトランザクションに関するトランザクション情報に基づいて、該当するトランザクションに関する処理を実行する各階層のサーバ間の処理時間の相関関係の有無を解析する。以後、異常が発生している期間のトランザクションに関するメッセージフロー情報を、異常時メッセージフロー情報と呼ぶこととする。例えば異常時処理時間解析部153は、異常有無判定部151において異常と判定された時から所定期間内のメッセージフロー情報を、異常時メッセージフロー情報と判断する。
【0065】
なお異常時処理時間解析部153は、異常時処理時間記憶部153aと異常時相関係数記憶部153bとを有している。異常時処理時間記憶部153aは、各階層の区間種別ごとの異常時の処理に関する平均処理時間を記憶する。例えばRAM103またはHDD104の記憶領域の一部が、異常時処理時間記憶部153aとして使用される。異常時相関係数記憶部153bは、各階層の区間種別ごとの異常時の処理に関する相関係数を記憶する。例えばRAM103またはHDD104の記憶領域の一部が、異常時相関係数記憶部153bとして使用される。
【0066】
相関判定部154は、正常時メッセージフロー情報に基づいて算出された相関係数により、有意な相関があるか否かを判断する。また相関判定部154は、異常時メッセージフロー情報に基づいて算出された相関係数により、有意な相関があるか否かを判断する。そして相関判定部154は、正常時と異常時との有意な相関の有無に基づいて、異常の影響のサーバ間での伝搬の有無を判定する。例えば、相関判定部154は、2つの階層のサーバの1処理当たりの処理時間に関し、正常時には有意な相関がないと判定され、異常時には有意な相関があると判定された場合、下位層のサーバの異常が上位層のサーバに伝搬しているものと判定する。相関判定部154は、影響伝搬の判定結果を、例えばモニタ11に表示する。
【0067】
図5は、影響伝搬解析処理の手順を示すフローチャートの一例である。以下、図5に示す処理をステップ番号に沿って説明する。
[ステップS1]メッセージ解析部110は、所定期間(例えば30分)、キャプチャしたパケットを取得し、取得したパケットに基づいてメッセージを再構成し、メッセージの通信時刻を測定する。メッセージ解析部110は、例えばメッセージの通信に使用された最初のパケットの取得時刻を、そのメッセージの通信時刻とする。そして、メッセージ解析部110は、通信時刻を付与したメッセージをメッセージ記憶部120に格納する。
【0068】
[ステップS2]メッセージフロー検出部130は、所定期間のメッセージ取得が完了すると、メッセージ記憶部120に格納されたメッセージから、個々のトランザクションを構成するメッセージの組(メッセージフロー)を確定する。そしてメッセージフロー検出部130は、トランザクションに対応するメッセージフローを示すメッセージフロー情報を、メッセージフロー情報記憶部140に格納する。
【0069】
[ステップS3]影響伝搬分析部150の異常有無判定部151が、正常時か異常時かを判定する。
正常時と異常時(処理時間増大時)は、末端装置での応答時間で区別される。この応答時間が、正常時の平均値を大きく超えて長くなった状態が異常時となる。現実のシステム上では全末端ユーザでの正確な応答時間を測定するのは困難な場合が多い。この場合、システムの最上位層のサーバでの応答時間を、端末装置での応答時間とすることができる。
【0070】
第2の実施の形態では、異常有無判定部151は、メッセージフロー情報記憶部140に記憶されている最上位層のサーバでの応答時間が、所定時間を超えていた場合に、異常有りと判定する。例えば異常有無判定部151は、最上位層のサーバでの応答時間が0.1秒を越えた場合に、異常時と判定する。なお異常有無判定部151は、リクエストメッセージを受信してからレスポンスメッセージを送信するまでの時間を、最上位層のサーバでの応答時間とする。
【0071】
正常時であれば、処理がステップS4に進められる。異常時であれば、処理がステップS5に進められる。
[ステップS4]正常時処理時間解析部152は、正常時のサーバ間の相関解析処理を行う。この処理の詳細は、後述する(図10参照)。その後、処理がステップS6に進められる。
【0072】
[ステップS5]異常時処理時間解析部153と相関判定部154とは、異常時のサーバ間の相関解析および因果関係判定処理を行う。この処理の詳細は、後述する(図12、図13参照)。その後、処理がステップS6に進められる。
【0073】
[ステップS6]メッセージ解析部110は、解析を終了するべきか否かを判断する。例えばメッセージ解析部110は、ユーザから解析終了の操作入力が行われた場合、解析を終了するべきと判断する。また、例えばメッセージ解析部110は、予め解析対象期間が指定されていた場合、解析対象期間が終了したときに、解析を終了するべきと判断する。解析を終了するべきと判断された場合、図5に示す処理が終了する。解析を継続するべきと判断された場合、処理がステップS1に進められる。
【0074】
次に、各データ構造例を説明する。まず、業務システムで送受信されるメッセージの流れの具体例を説明する。その後、そのようなメッセージについて管理されるデータ構造例を説明する。
【0075】
図6は、業務システムにおける通信の流れの具体例を示すシーケンス図である。以下、図6に示す処理をステップ番号に沿って説明する。なお、図6では各ステップにつき、そのメッセージに対応する通信パケットをキャプチャしたタイムスタンプ(時:分:秒.マイクロ秒)が表記されている。
【0076】
[ステップS11]Webサーバ200は、端末装置21からHTTPリクエストを受信する(時刻“01:58:19.987360”)。
[ステップS12]Appサーバ300は、Webサーバ200からIIOPリクエストを受信する(時刻“01:58:20.057275”)。
【0077】
[ステップS13]DBサーバ400は、Appサーバ300からDBリクエストを受信する(時刻“01:58:20.120100”)。
[ステップS14]Appサーバ300は、DBサーバ400からDBレスポンスを受信する(時刻“01:58:20.225221”)。
【0078】
[ステップS15〜S20]DBサーバ400は、Appサーバ300からDBリクエストを受信する。そして、Appサーバ300は、それに応じてDBサーバ400からDBレスポンスを受信する。
【0079】
[ステップS21]Webサーバ200は、Appサーバ300からIIOPレスポンスを受信する(時刻“01:58:21.229258”)。
[ステップS22]Webサーバ200は、端末装置21にHTTPレスポンスを送信する(時刻“01:58:21.330431”)。
【0080】
このようにして、各サーバの間で、メッセージが交換される。
なお、端末装置22,23から受け付けるHTTPリクエストに対しても同様の流れでメッセージが交換される。
【0081】
図6に示したメッセージは、各サーバ間では、通信パケットによって通信される。運用管理サーバ100のメッセージ解析部110は、各装置間で送受信される通信パケットをキャプチャして、対応するメッセージを復元する。メッセージを復元する方法として、例えば特開2006−011683号公報に記載の方法を利用することができる。復元されたメッセージは、メッセージ記憶部120に、例えば時系列で記憶される。
【0082】
図7は、メッセージ記憶部に記憶されたメッセージの一例を示す第1の図である。図8は、メッセージ記憶部に記憶されたメッセージの一例を示す第2の図である。メッセージ記憶部120には、復元された複数のメッセージが格納されている。図7、図8では、各メッセージの左に、メッセージ記憶部120内での行番号を示している。メッセージ記憶部120に記憶された各メッセージは、図6に示した各ステップにおけるメッセージの内容を含む。なお、メッセージ記憶部120には、各階層間の処理要求および応答に関連するメッセージ以外のメッセージに関しては図示を省略している。
【0083】
各行に示されるメッセージには、日付フィールド120a、時刻フィールド120b、セッション番号フィールド120c、送信元アドレスフィールド120d、送信先アドレスフィールド120e、コマンド種別フィールド120fおよびメッセージフィールド120gが含まれる。
【0084】
日付フィールド120aは、メッセージをキャプチャした日付を示すフィールドである。
時刻フィールド120bは、メッセージをキャプチャした時刻を示すフィールドである。
【0085】
セッション番号フィールド120cは、業務システムにおけるメッセージの送受信に用いるリソースを管理するためのセッション番号を示すフィールドである。
送信元アドレスフィールド120dは、メッセージの送信元のコンピュータのIP(Internet Protocol)アドレスおよびポート番号を示すフィールドである。
【0086】
送信先アドレスフィールド120eは、メッセージの送信先のコンピュータのIPアドレスおよびポート番号を示すフィールドである。
コマンド種別フィールド120fは、コマンドのリクエスト/レスポンス属性やプロトコル(HTTP、IIOPおよびDBクエリ用等)の種別を示すフィールドである。
【0087】
メッセージフィールド120gは、コマンド種別フィールド120fに示されたリクエスト等のメッセージ内容を示すフィールドである。
以下、メッセージ記憶部120内での行番号を示して説明する。
【0088】
例えば、図6に示すステップS11のHTTPリクエストは1行目に対応する。
日付フィールド120aには、その行に対応する通信パケットをキャプチャした日付として、例えば“2009/09/07”が設定される。
【0089】
また、時刻フィールド120bには、パケットキャプチャした時刻として、例えば“01:58:19.987360”が設定される。
また、セッション番号フィールド120cには、セッション番号として、例えば“132290−1”が表示される。セッション番号フィールド120cには、リクエスト/レスポンスの組で一意の情報が取得されている。これは、同一のセッションを用いてリクエストと、そのリクエストに対応するレスポンスが交換されるためである。例えば、1行目のHTTPリクエストに対応するHTTPレスポンスとして18行目のメッセージを特定できる。
【0090】
1行目のメッセージの送信元アドレスフィールド120dには、HTTPリクエストを送信した端末装置21のIPアドレスとポート番号として、例えば“194.185.39.24:51272”が設定される。
【0091】
1行目のメッセージの送信先アドレスフィールド120eには、HTTPリクエストの送信先であるWebサーバ200のIPアドレスとポート番号として、例えば、“194.23.6.226:10443”が設定される。
【0092】
1行目のメッセージのコマンド種別フィールド120fには、HTTPリクエストに関するメッセージであることを示す情報として、例えば“Request HTTP”という情報が設定される。また、1行目のメッセージのメッセージフィールド120gには、HTTPリクエストの内容として、例えば“POST /cgi−bin/・・・”という情報が設定される。
【0093】
このように、メッセージ記憶部120内のメッセージを参照することで、何れのサーバに対して、どのようなメッセージが送信されたかを検出することができる。
ここで、メッセージ記憶部120内のメッセージ中のその他のIPアドレスと各装置との対応関係は次の通りである。
【0094】
“194.23.7.168”は、Appサーバ300のIPアドレスを示す。“194.23.8.198”は、DBサーバのIPアドレスを示す。“194.185.39.25”は、端末装置22のIPアドレスを示す。例えば、Webサーバ200と端末装置22との間でのHTTPリクエスト/HTTPレスポンスの送受信は、メッセージ記憶部120内の6,20行目のメッセージが対応する。また、Webサーバ200とAppサーバ300との間でのIIOPリクエスト/IIOPレスポンスの送受信は、メッセージ記憶部120内の2,7,17,19行目のメッセージに対応する。また、Appサーバ300とDBサーバ400との間でのDBリクエスト/DBレスポンスの送受信は、メッセージ記憶部120内の3〜5、8〜16行目のメッセージに対応する。
【0095】
なお、日付フィールド120aおよび時刻フィールド120bの情報として、メッセージ解析部110が通信パケットをキャプチャしたタイミングにおけるタイムスタンプを設定するものとしたが、設定方法はこれに限らない。例えば、通信パケット中に各サーバにおけるパケットの生成時刻や送信時刻の情報が含まれている場合には、その日時を日付フィールド120aおよび時刻フィールド120bの情報としてもよい。その場合、各サーバで精度良く時刻同期が行われていることが望ましい。
【0096】
図7,図8に示した時系列のメッセージに基づいて、メッセージフロー検出部130により、一連の処理を示すメッセージフローが検出される。例えば、予め定義されたトランザクションモデルに適合するメッセージの組が、メッセージフローとして検出される。このようなメッセージフローの検出方法として、例えば特開2006−011683号公報に記載の方法を利用することができる。検出されたメッセージフローは、例えば適合するトランザクションモデルに応じて種別が識別される。そして、メッセージフロー検出部130により、種別ごとに分類されたメッセージフローを示すメッセージフロー情報が、メッセージフロー情報記憶部140に格納される。
【0097】
図9は、メッセージフロー情報記憶部のデータ構造例を示す図である。メッセージフロー情報記憶部140には、トランザクションごとのメッセージフロー情報141,142,143・・・が格納されている。なお、図9に示すメッセージフロー情報141,142,143・・・は、第1の実施の形態におけるトランザクション情報2a,2b,2c,・・・の一例である。
【0098】
メッセージフロー情報141には、項番を示す項目、時刻を示す項目、セッション番号を示す項目、プロトコルを示す項目およびRequest/Responseを示す項目が設けられている。各項目の横方向に並べられた情報同士が互いに関連付けられて、1つのメッセージに関する情報を示す。
【0099】
項番を示す項目には、レコードを識別する番号が設定される。時刻を示す項目には、メッセージに対応する通信パケットをキャプチャした時刻が設定される。セッション番号を示す項目には、メッセージを送信するために用いられたセッションを識別するセッション番号が設定される。プロトコルを示す項目には、メッセージが何れのプロトコルによるものかを示す情報が設定される。Request/Responseを示す項目には、そのメッセージがリクエスト/レスポンスの何れのものであるかを示す情報が設定される。
【0100】
メッセージフロー情報141には、例えば、項番が“1”、時刻が“01:58:19.987”、セッション番号が“132290”、プロトコルが“HTTP”、Request/Responseが“Request”という情報が設定される。
【0101】
このレコードは、メッセージ記憶部120内の1行目のメッセージに対応する。ただし、時刻にはミリ秒までを設定している。この点、更に短い時間単位(例えば、マイクロ秒単位)で時刻を取得してもよい。また、セッション番号には図8に示したセッション番号フィールド120cに含まれる情報のうち、リクエスト/レスポンスの組を特定するために必要な最低限の情報を設定している。以下、セッション番号という場合、メッセージフロー情報141のセッション番号を示す項目に設定された情報を示すものとする。
【0102】
メッセージフロー情報には、各メッセージの通信時刻が設定されている。すなわち、キャプチャしたパケットに基づいて、メッセージフローを構成する各メッセージの通信時刻が測定されている。また、ある階層へ処理要求のメッセージが到着して、その処理に関連して下位層へ処理を要求するメッセージが送信された場合に、それらの間の関連付けは、メッセージフロー内の連続するメッセージに基づいて判断できる。すなわち、プロトコル「IIOP」のリクエストメッセージの後に、プロトコル「DB」のリクエストメッセージがあれば、「IIOP」のリクエストメッセージに関連して「DB」のリクエストメッセージが出力されたことが分かる。また、上位層のリクエストメッセージからレスポンスメッセージまでの時間帯内の下位層の各リクエストメッセージは、その上位層のリクエストメッセージに応じて実行された処理に関連して実行されていることが分かる。
【0103】
このように第2の実施の形態では、ネットワーク上を流れるIPパケットをキャプチャして、そこからメッセージ送受の情報を取得することで、一連の処理を示すメッセージフロー情報を生成している。この方法の利点としては、観測対象のシステムに余計な負荷を与えないので正確な挙動を観測できるということがある。また、1か所のサーバでキャプチャしてその際にタイムスタンプを付与できるのでサーバ間の時計誤差を気にしなくてよいという利点もある。
【0104】
なお第2の実施の形態では、各メッセージ上にそれらを関連付ける情報が付加されてない場合を想定している。そのため、メッセージフロー検出部130によるトランザクションモデルとの適合の有無の判定などが行われている。他方、各メッセージ上にそれらを関連付ける情報が付加されている場合もあり得る。例えば、最上位のサーバ(Webサーバ200)に入力されたリクエストメッセージに応じて実行されるトランザクションの識別情報が、そのトランザクションで通信される各メッセージに付与しているような場合である。このような場合、メッセージフロー検出部130は、同一の識別情報が付与されたメッセージを抽出して、メッセージフローを生成することができる。
【0105】
なお、本実施の形態では、特開2006−011683号公報に記載の方法を利用してメッセージフロー情報を作成しているが、メッセージフロー情報の作成手法は特開2006−011683号公報に記載の方法に限定されるものではない。すなわち、個々の業務処理に関する複数階層間を跨った一連のメッセージフローを測定し、その中での各メッセージの正確な送受時刻を取得する手法は何通りか考えられる。
【0106】
他の方法としては、例えば、Web3階層システムを構成する各Webサーバ200、Appサーバ300、およびDBサーバ400でファイルなどに記録したメッセージ送信/受信ログを利用する方法がある。この方法を適用する場合、Webサーバ200、Appサーバ300、およびDBサーバ400が、受信メッセージとその処理に関連した送信メッセージの関連付けを行い、ログ情報としてHDDなどの記録装置に記録する。運用管理サーバ100は、Webサーバ200、Appサーバ300、およびDBサーバ400から、記録した情報を取得する。この手法では、Webサーバ200、Appサーバ300、およびDBサーバ400が、受信したリクエストメッセージと、そのリクエストメッセージに応じた処理により下位の層のサーバへ出力したリクエストメッセージとを関連付けている。そのため、運用管理サーバ100では、1つのトランザクションを構成する上位層のメッセージと下位層のメッセージとを容易に関連付けることができ、メッセージフローの作成が容易となる。ただし、この方法を適用する場合、Webサーバ200、Appサーバ300、およびDBサーバ400各サーバの内部時計を、同期させておくことが好ましい。
【0107】
図9に示すようなメッセージフロー情報に基づいて、影響伝搬分析部150によって階層の異なるサーバ間の影響伝搬の有無が分析される。
影響伝搬分析部150の異常有無判定部151は、処理の異常の有無を判定する。例えば、異常有無判定部151には、端末装置21〜23に対する最上位層のサーバの平均応答時間の閾値が設定されている。異常有無判定部151は、メッセージフロー情報記憶部140内の各メッセージフロー情報における最上位の層のサーバが端末装置からリクエストを受け付けてから、応答を返すまでの応答時間を計算する。図9のメッセージフロー情報141の例であれば、項番12の時刻から項番1の時刻を減算することで、メッセージフロー情報141で示されるトランザクションの応答時間が計算される。異常有無判定部151は、所定期間内に実行されたトランザクションの平均応答時間が、応答時間の閾値を超えていた場合、異常があると判定する。
【0108】
なお、トランザクションの応答時間以外の情報に基づいて異常の判定を行ってもよい。例えば、各階層のサーバでの平均処理時間の閾値を設定しておいてもよい。その場合、異常有無判定部151は、何れかの層のサーバにおいて、処理時間が閾値を超えた場合、異常有りと判定する。
【0109】
異常有無判定部151は、異常の有無を、影響伝搬分析部150内の他の要素に通知する。例えば、異常有無判定部151は、異常を検出した期間と異常を検出していない期間とを正常時処理時間解析部152と異常時処理時間解析部153とに通知する。
【0110】
本実施の形態では、処理時間が短い正常時のメッセージフロー情報から計算した相関係数と、異常時(処理時間増大時)のメッセージフロー情報から計算した相関係数とに基づいて影響伝搬の有無が判定される。正常時の相関係数は、正常時処理時間解析部152によって計算される。異常時の相関係数は、異常時処理時間解析部153によって計算される。
【0111】
まず、正常時の相関関係を示す値の計算手順について説明する。
図10は、正常時の処理時間解析処理手順を示すフローチャートの一例である。以下、図10に示す処理をステップ番号に沿って説明する。
【0112】
[ステップS31]正常時処理時間解析部152は、階層ごとに、ステップS32〜S39の処理を実行する。第2の実施の形態では、階層は、HTTP層、IIOP層、DB層の3階層である。そこで、正常時処理時間解析部152は、未処理の階層を1つ選択する。
【0113】
[ステップS32]正常時処理時間解析部152は、トランザクションごとにステップS33の処理を実行する。すなわち正常時処理時間解析部152は、メッセージフロー情報記憶部140に格納されているメッセージフローで示される未処理のトランザクションを1つ選択する。
【0114】
[ステップS33]正常時処理時間解析部152は、選択したトランザクションに関して、時間軸上の区間別の処理時間を算出する。第2の実施の形態では、正常時処理時間解析部152は、各階層において、メッセージの通信時刻に基づき、処理時間を4つの区間種別に分けて算出する。
【0115】
図11は、1トランザクションにおけるサーバの処理区間の分類例を示す図である。図11には、1つのトランザクションにおける下位2層の各サーバの処理を示している。上位層のサーバは、例えばAppサーバ300である。下位層のサーバは、例えばDBサーバ400である。
【0116】
上位層のサーバでは、受信したリクエストメッセージに応じて処理が実行され、その処理中に下位層のサーバに対して3回の問い合わせが行われている。上位層のサーバは、下位層のサーバに問い合わせを行い、その応答を待っている間は待ち時間であり、処理は実行されていない。そのため、上位層のサーバでは、4回に分けて処理31〜34が実行されている。
【0117】
一方、下位層のサーバでは、上位層のサーバから問い合わせ(リクエストメッセージ)を受け取るごとに、処理41〜43が実行されている。
第2の実施の形態では、上位層のサーバの処理時間を、以下の4つ区間種別に分類する。
【0118】
・第1種区間
第1種区間は、「問い合わせ開始前」の区間である。すなわち、上位層のサーバにおける処理開始時点から、下位層へ最初の問い合わせのリクエストメッセージを送信するまでの時間が、第1種区間である。図11の例では、処理31の実行されている時間が、第1種区間に該当する。
【0119】
・第2種区間
第2種区間は、「複数問い合わせ間」の区間である。すなわち、下位層のサーバへの問い合わせのリクエストメッセージに対応するレスポンスメッセージを受け取ってから、下位層のサーバへ次の問い合わせを発行するまでの時間が、第2種区間である。図11の例では、処理32,33が実行されている時間が、第2種区間に該当する。なお、1つのトランザクション内に第2種区間が複数存在する場合は、例えば1回あたりの処理時間の平均を取ることで、第2種区間の処理の処理時間とすることができる。
【0120】
・第3種区間
第3種区間は、「問い合わせ完了後」の区間である。すなわち、下位層のサーバへの最後の問い合わせのリクエストメッセージに対応するレスポンスメッセージを受け取ってから、上位層における処理を終了するまでの時間が、第3種区間である。図11の例では、処理34が実行されている時間が、第3種区間に該当する。
【0121】
なお、下位層へ対する問い合わせが1回しかないときには、「複数問い合わせ間」の区間(第2種区間)は存在しない。また、最下位層のサーバ(図11の下位層のサーバ)においては、そこより下位への問い合わせは存在しないので、このような3つの区間が存在しない。その場合は、代わりに最下位層のサーバにおける各処理41〜43の処理時間を計算する。最下位層のサーバにおける処理の処理時間は、上位階層からの処理要求が複数回実施される場合は複数存在することになる。この場合は、処理1回あたりの平均値を、最下位層における処理時間とする。
【0122】
また、最下位層のサーバの処理時間は、上位層のサーバの区間種別とは別の区間種別に分類される。
・第4種区間
第4種区間は、「処理時間全体」の区間である。最下位層のサーバでは、上位層のサーバからのリクエストメッセージを受信してから、上位層のサーバにレスポンスメッセージを応答するまで、他のサーバの処理待ちの時間が挟まらないため、第1〜第3種区間は存在しない。そこで、リクエストメッセージを受信してからレスポンスメッセージを応答するまでの処理時間を、第4種区間とする。例えば、図11であれば、処理41〜43が実行されている時間が、第4種区間に相当する。
【0123】
図10に戻り、ステップS34以降の処理を説明する。
[ステップS34]正常時処理時間解析部152は、すべてのトランザクションについてステップS33の処理が完了したか否かを判断する。正常時処理時間解析部152は、未処理のトランザクションがある場合、処理をステップS32に進める。正常時処理時間解析部152は、すべてのトランザクションについてステップS33の処理が完了した場合、処理をステップS35に進める。
【0124】
[ステップS35]正常時処理時間解析部152は、区間種別(第1〜第4種区間)ごとに、ステップS36,S37の処理を実行する。すなわち正常時処理時間解析部152は、未処理の区間種別から、区間種別を1つ選択する。
【0125】
[ステップS36]正常時処理時間解析部152は、ステップS35で選択した区間種別の平均処理時間を求める。すなわち正常時処理時間解析部152は、所定の時間帯ごとに、選択した階層の選択した区間種別の処理に関する処理時間の平均値(平均処理時間)を計算する。
【0126】
この際、正常時処理時間解析部152は、例えば時系列推移を判定するための1分ごとの平均処理時間と、正常時と異常時との処理時間の増加率を計算するための解析期間全体(例えば14分)における平均処理時間とを算出する。
【0127】
[ステップS37]正常時処理時間解析部152は、正常時の平均処理時間を、正常時処理時間記憶部152aに格納する。
[ステップS38]正常時処理時間解析部152は、すべての区間種別についてステップS36,S37の処理が完了したか否かを判断する。正常時処理時間解析部152は、未処理の区間種別がある場合、処理をステップS35に進める。正常時処理時間解析部152は、すべての区間種別に対する処理が完了した場合、処理をステップS39に進める。
【0128】
[ステップS39]正常時処理時間解析部152は、代表区間の処理時間の時系列推移を求める。ここで正常時処理時間解析部152は、第2の実施の形態では以下のようにして代表区間を決定する。
【0129】
正常時処理時間解析部152は、「複数問い合わせ間」の区間(第2種区間)がある場合、「複数問い合わせ間」を最優先に選択し、代表区間に決定する。また正常時処理時間解析部152は、「複数問い合わせ間」区間が存在しない場合は「問い合わせ完了後」区間の処理時間を代表区間とする。さらに正常時処理時間解析部152は、「複数問い合わせ間」区間と「問い合わせ完了後」区間とのいずれも存在しない場合(例えば、最下位層の場合)は、個別に実行されたすべて処理時間全体の区間(第4種区間)を代表区間とする。
【0130】
時系列推移の計算に関し、例えば正常時処理時間解析部152は、1分間隔で解析対象時間を分割し、1分間内で実行された処理に関する処理時間の平均値を求める。そして正常時処理時間解析部152は、1分間ごとの処理時間の平均値が、所定期間(例えば30分間)にどのように変化したか求める。
【0131】
ここで、処理時間の時系列推移の粒度と長さについて考察する。
・時系列推移の粒度
第2の実施の形態では、平均値を1分ごとに集計して、1分ごとの平均処理時間の時系列推移を利用している。メッセージ送受の時刻は1ミリ秒以下の精度で測定できているので、精度としてはそのレベルで集計しているが、集計する単位時間はそんなに細かくする必要はなく、1分単位程度で十分である。集計の単位時間を細かくしすぎると、相関を求める際の計算量が大きくなったり、処理時間の一時的な増減に相関係数が影響を受けたりといった悪影響が考えられる。逆に単位時間を大きくし過ぎると、短時間しか持続しなかったボトルネックの場合に正しく判定できなくなってしまう。
・時系列推移の長さ
解析対象とする時系列の長さはあまり短いと、例え相関係数が高くてもそれが統計的に有意であると言えなくなる。そこで、最低限、統計的に有意な解析結果が得られる程度の長さの時系列推移を求める。他方、時系列の長さが長すぎると、異常時(処理時間増大期間)の時系列推移内に、正常時の情報を含み、正しく判定できなくなってしまう可能性が大きくなる。これらのことを考慮すると、10〜30程度の標本数となるように時系列推移の長さ(解析対象期間)を決定するのが適当である。後述する図16に示す例では1分ごとの集計で、14分間の時系列推移を利用している。この場合の標本数は14である。
【0132】
[ステップS40]正常時処理時間解析部152は、すべての階層についてステップS32〜S39の処理が完了したか否かを判断する。正常時処理時間解析部152は、未処理の階層がある場合、処理をステップS31に進める。また正常時処理時間解析部152は、全ての階層について処理が完了している場合、処理をステップS41に進める。
【0133】
[ステップS41]正常時処理時間解析部152は、階層の組み合わせごとに、階層間の時系列推移の相関係数を算出する。
ここで相関係数とは、2つの変数の間の相関(類似性の度合い)を示す数値である。一つの階層の処理時刻の時系列推移が(x1,x2,x3,...,xn)、一つの階層の処理時刻の時系列推移が(y1,y2,y3,...,yn)のとき、それらの間の相関係数rxyは以下のように計算される。
【0134】
【数1】
【0135】
[ステップS42]正常時処理時間解析部152は、階層間の相関係数を正常時相関係数記憶部152bに格納する。その後、正常時の処理が終了する。
以上のようにして、正常時の階層間の相関係数が算出される。
【0136】
次に、異常時(処理時間増大時)の相関係数解析処理について説明する。
図12は、異常時の処理時間解析処理の手順の一例を示すフローチャートの前半である。以下、図12に示す処理をステップ番号に沿って説明する。
【0137】
[ステップS51]異常時処理時間解析部153は、処理時間が増大した階層ごとに、ステップS52〜S63(図13参照)の処理を実行する。すなわち異常時処理時間解析部153は、処理時間が増大した階層のうち、未処理の階層を1つ選択する。なお異常時処理時間解析部153は、処理時間が増大した階層に限らず、すべての階層に関して、ステップS52〜S62の処理を実行することもできる。
【0138】
[ステップS52]異常時処理時間解析部153は、ステップS51で選択された階層に関し、トランザクションごとに、ステップS53の処理を実行する。すなわち異常時処理時間解析部153は、メッセージフロー情報記憶部140に格納されているメッセージフローで示される未処理のメッセージフローを1つ選択する。
【0139】
[ステップS53]異常時処理時間解析部153は、ステップS52で選択したトランザクションに関して、区間別の処理時間を算出する。この処理の詳細は、正常時の処理時間解析処理におけるステップS33(図10参照)と同様である。
【0140】
[ステップS54]異常時処理時間解析部153は、すべてのトランザクションについてステップS53の処理が完了したか否かを判断する。異常時処理時間解析部153は、未処理のトランザクションがある場合、処理をステップS52に進める。異常時処理時間解析部153は、すべてのトランザクションについて処理が完了した場合、処理をステップS55に進める。
【0141】
[ステップS55]異常時処理時間解析部153は、区間種別(第1〜第4種区間)ごとに、ステップS56,S57の処理を実行する。すなわち異常時処理時間解析部153は、未処理の区間種別を1つ選択する。
【0142】
[ステップS56]異常時処理時間解析部153は、ステップS55で選択した区間種別の平均処理時間を求める。すなわち異常時処理時間解析部153は、所定の時間帯ごとに、選択した階層の選択した区間種別の処理に関する処理時間の平均値(平均処理時間)を計算する。平均処理時間を計算する所定の時間帯は、例えば、解析対象期間全体の時間帯と、解析対象期間を1分間隔で分割して得られる時間帯である。計算結果は、異常時相関係数記憶部153bに格納される。
【0143】
[ステップS57]異常時処理時間解析部153は、平均処理時間の正常時からの増加率を計算する。具体的には、異常時処理時間解析部153は、正常時処理時間解析部152からステップS36で求め正常時の平均処理時間を取得する。そして異常時処理時間解析部153は、取得した正常時の平均処理時間に対するステップS56で求めた異常時の平均処理時間の増加率を求める。
【0144】
平均処理時間の増加率の計算は、4つの区間について計算される。すなわち、異常時処理時間解析部153は、第1〜第4種区間について、正常時と異常時の区間ごとの平均処理時間を比較する。具体的には、4つの区間それぞれの平均処理時間の増加率は、次の式で計算される。
平均処理時間の増加率=異常時の平均処理時間/正常時の平均処理時間
異常時処理時間解析部153は、ステップS56で算出した平均処理時間とステップS57で算出した増加率とを、異常時処理時間記憶部153aに格納する。
【0145】
[ステップS58]異常時処理時間解析部153は、すべての区間種別についてステップS56,S57の処理が完了したか否かを判断する。異常時処理時間解析部153は、未処理の区間種別があれば、処理をステップS55に進める。異常時処理時間解析部153は、すべての区間種別について処理が完了していれば、処理をステップS61(図13参照)に進める。
【0146】
図13は、異常時の処理時間解析処理の手順の一例を示すフローチャートの後半である。以下、図13に示す処理をステップ番号に沿って説明する。
[ステップS61]相関判定部154は、第1〜3種区間に分類される処理を有する階層において、「問い合わせ開始前」の区間(第1種区間)だけが処理時間が増加していて、他の区間(第2,第3種区間)の処理時間が増加していないという条件が満たされるか否かを判定する。すなわち、相関判定部154は、ステップS57(図12参照)による各区間の増加率の計算の結果、増加率が一定の閾値(例えば2.0)より大きい値であれば、その区間の処理時間が増加していると判断する。そこで相関判定部154は、「問い合わせ開始前」の区間(第1種区間)の増加率が一定の閾値より大きく、かつ「複数問い合わせ間」の区間(第2種区間)と「問い合わせ完了後」の区間(第3種区間)の増加率が共に一定の閾値以下であるという条件を判断する。この条件が満たされた場合、相関判定部154は、「問い合わせ開始前」の区間のみ処理時間が増加していると判断する。
【0147】
「問い合わせ開始前」の区間のみ処理時間が増加している場合、処理がステップS62に進められる。そうでない場合、処理がステップS63に進められる。
なお、ステップS61の判定は「問い合わせ開始前」区間が存在しない階層(最下層)においては実施されず、処理がステップS63に進められる。
【0148】
[ステップS62]相関判定部154は、現在処理している階層の1つ下位層のサーバにボトルネック原因となる異常が生じていると判定する。判定結果は、例えばモニタ11に表示される。その後、処理が終了する。
【0149】
図14は、「問い合わせ開始前」区間のみ処理時間が増加した状況を示す図である。図14の例は、図11に示したトランザクションにおける処理31の処理時間のみが増加している。図14に示すように、処理時間が増加しているのが「問い合わせ開始前」区間だけで、他の2つの区間の処理時間が増加していないならば、その階層の処理時間の増加はサーバの負荷増大によるものではないと推定できる。これは、「問い合わせ開始前」区間だけの処理時間の増加であれば、上位層のサーバにおいて、下位層のサーバへの問い合わせを開始するためにコネクション待ちが発生しているだけと考えられるためである。
【0150】
例えば、サーバ間に予め複数のコネクションを接続しておき、リクエストメッセージを送信する際には、サーバは、その時点で使用していないコネクションを用いて送信するという通信形態がある。この場合、送信側のサーバは、用意された複数のコネクションがすべて使用中であれば、いずれかのコネクションが空くまで待つ。このようなコネクションの空き待ちの時間は、送信側(上位層)のサーバが原因で発生している場合より、受信側(下位層)のサーバにおけるリクエストメッセージに応じた処理の遅延により生じる場合が多い。そこで異常時処理時間解析部153は、第1〜3種区間の3つの区間それぞれの増加率のうち、「問い合わせ開始前」の区間の増加率しか一定の閾値(例えば2.0)を超えなかった場合は、1つ下位層のサーバにボトルネックなどの問題があると判定する。
【0151】
図13に戻り、ステップS63以降の処理について説明する。
[ステップS63]異常時処理時間解析部153は、「複数問い合わせ間」の区間(第2種区間)の処理時間の時系列推移を求める。この処理の詳細は、正常時の相関解析処理におけるステップS39(図10参照)と同様である。
【0152】
[ステップS64]異常時処理時間解析部153は、処理時間が増大したすべての階層についてステップS52〜S62の処理が完了しかた否かを判断する。異常時処理時間解析部153は、処理時間が増大した階層のうち未処理の階層がある場合、処理をステップS51(図12参照)に進める。異常時処理時間解析部153は、処理時間が増大したすべての階層について処理が完了した場合、処理をステップS65に進める。
【0153】
[ステップS65]異常時処理時間解析部153は、処理時間が増大している2つの階層の代表区間の処理時間の時系列推移について、それらの時系列推移の相関係数を求める。例えば、異常時処理時間解析部153は、各階層の代表区間における処理時間の増加率が一定の閾値(例えば2.0)より大きい場合、その階層のサーバの処理時間が増大していると判断する。次に異常時処理時間解析部153は、処理時間が増大している2つの階層の組を作成し、作成した組に属する階層のサーバの代表区間の処理時間に関する時系列推移の相関係数を算出する。
【0154】
異常時処理時間解析部153は、算出した相関係数を異常時相関係数記憶部153bに格納する。
[ステップS66]相関判定部154は、ステップS65で算出した異常時の相関係数が所定の閾値(例えば0.66)より大きいか否かを判断する。異常時の相関係数が閾値より大きければ,処理がステップS68に進められる。異常時の相関係数が閾値以下であれば、処理がステップS67に進められる。
【0155】
[ステップS67]相関判定部154は、2つの階層の処理時間が増大したことに関し、因果関係はないと判断する。判断結果は、例えばモニタ11に表示される。その後、処理が終了する。
【0156】
[ステップS68]相関判定部154は、ステップS65で異常時の相関係数を算出した2つの階層の組に関し、ステップS41(図10参照)で算出した正常時の相関係数が所定の閾値(例えば0.66)より大きいか否かを判断する。正常時の相関係数が閾値より大きければ,処理がステップS69に進められる。正常時の相関係数が閾値以下であれば、処理がステップS70に進められる。
【0157】
[ステップS69]相関判定部154は、2つの階層の処理時間が増大したことに関し、因果関係は不明であると判定する。すなわち、正常時と異常時との相関係数が共に閾値より大きい場合、サーバの問題ではなく、端末装置からWeb3階層システムに要求された処理数が過大である場合があり得る。このような場合、例えば、処理時間が増大した各階層におけるサーバの機能増強などの対策が有効となる。他方、下位層のサーバの異常が、上位層のサーバの処理時間の増大を引き起こしており、障害対策としては下位層のサーバに関してのみ行えばよい場合もありうる。そこで第2の実施の形態では、正常時と異常時との相関係数が共に閾値より大きい場合、相関判定部154は、2つの階層の処理時間が増大したことに関し、因果関係が不明と判断する。判断結果は、例えばモニタ11に表示される。その後、処理が終了する。
【0158】
[ステップS70]相関判定部154は、2つの階層のサーバの処理時間が増大したことに関し、因果関係があると判定する。判断結果は、例えばモニタ11に表示される。その後、処理が終了する。
【0159】
以上のようにして、階層間のサーバの処理時間の増大に関する因果関係の有無が判定される。因果関係ありと判定された場合、システムの管理者は、所持時間が増大した階層の各サーバのうち、下位層のサーバの処理時間の増大原因を優先的に調査する。そして管理者は、下位層のサーバの処理時間の増大原因を除去する。すると、下位層のサーバの処理時間が正常状態に戻ると共に、因果関係を有している上位層のサーバの処理時間も正常状態に戻るものと考えられる。
【0160】
次に、第2の実施の形態に示した処理による解析例を具体的に説明する。
正常時の処理としては、まずトランザクションごとの、区間種別ごとの処理時間が計算される(図10のステップS33)。例えば、区間ごとの処理時間の計算を、図6に示したトランザクションの階層ごとの処理時間の計算に適用すると、図9に示したメッセージフロー情報に基づいて、正常時処理時間解析部152において以下のような計算が行われる。
【0161】
まず、図6、図9に示したWebサーバ200の処理時間は、問い合わせ開始前(第1種区間)と問い合わせ完了後(第3種区間)とで構成される。第2種の区間がないため、第3種区間の処理時間が、Webサーバ200の平均処理時間として採用され、以下のような式で計算される。
【0162】
・第1種区間(問い合わせ開始前)の処理時間の計算
(01:58:20.057 - 01:58:19.987) / 1 = 0.070(s)
・第3種区間(問い合わせ完了後)の処理時間の計算
(01:58:21.330 - 01:58:21.299) / 1 = 0.031(s)
Appサーバ300の処理時間は、以下のような式で計算される。
【0163】
・第1種区間(問い合わせ開始前)の処理時間の計算
01:58:20.120 - 01:58:20.057 = 0.063(s)
・第2種区間(複数問い合わせ間)の処理時間の計算
図6の例では、第2種区間に該当する処理が3回実行されており、3回の処理時間の平均が計算される。
((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)
・第3種区間(問い合わせ完了後)の処理時間の計算
01:58:21.299 - 01:58:21.220 = 0.079(s)
DBサーバ400は、最下位層に属し、他のサーバへの問い合わせを行っていない。そのため処理時間全体(第4種区間)のみが存在する。図6の例では、第4種区間に相当する処理が4回実行されており、4回の処理時間の平均が計算される。
【0164】
・第4種区間(処理時間全体)の処理時間の計算
((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)
これらは、端末装置からの1つの処理要求に応じて実行された1つのトランザクションに関してのみ計算した値である。実際のシステムでは多数の処理要求に応じたトランザクションが同じ同時間帯に重複して処理されている。そこで正常時処理時間解析部152は、各トランザクションによって求めた各階層の区間ごとの処理時間の平均値を算出する(図10のステップS36)。算出された平均処理時間は、正常時処理時間解析部152が有する正常時処理時間記憶部152aに格納される。
【0165】
図15は、正常時平均処理時間記憶部のデータ構造の一例を示す図である。正常時処理時間記憶部152aには、例えば処理時間管理テーブル152cが格納されている。処理時間管理テーブル152cには、階層、区間、および平均処理時間の欄が設けられている。
【0166】
階層の欄には、階層の識別子が設定される。図15の例では、上位の層から順に、昇順の番号が振られている。最上位のWebサーバ200が属する階層は「階層1」である。Appサーバ300が属する階層は「階層2」である。DBサーバ400が属する階層は「階層3」である。
【0167】
区間の欄には、各階層内での区間種別が設定される。図6に示すようなトランザクションの場合、最上位の「階層1」の階層には、「問い合わせ開始前」の区間(第1種区間)と「問い合わせ完了後」の区間(第3種区間)とが存在する。「階層2」の階層には、「問い合わせ開始前」の区間(第1種区間)、「複数問い合わせ間」の区間(第2種区間)、および「問い合わせ完了後」の区間(第3種区間)が存在する。最下位の「階層3」の階層には、「処理時間全体」の区間(第4種区間)が存在する。
【0168】
平均処理時間の欄には、対応する階層における対応する区間の処理時間の平均値が秒単位で設定される。
図15に示す処理時間管理テーブル152cのようなデータが、例えば1分間隔で14回取得され、その都度、正常時処理時間記憶部152aに、新たな処理時間管理テーブルが追加格納される。
【0169】
正常時処理時間解析部152は、正常時処理時間記憶部152aに格納された平均処理時間に基づいて、正常時の処理時間の時系列推移を、各階層の区間種別ごとに求める(図10のステップS39)。
【0170】
図16は、正常時の処理時間の時系列推移を示す図である。図16では、横軸に時刻、縦軸に平均処理時間を取ったグラフによって、正常時の処理時間の時系列推移を示している。
【0171】
図16には、Appサーバ300とDBサーバ400との時系列推移が示されている。なお、図16の例では、「複数問い合わせ間」の区間(第2種区間)が存在する。そのためステップS39の処理では、「複数問い合わせ間」の区間に関してのみ、時系列推移が解析される。ただし、図16では、「問い合わせ開始前」の区間(第1種区間)や「問い合わせ完了後」の区間(第3種区間)の時系列推移についても参考のために示している。
【0172】
時系列推移が算出されると、上位層と下位層との間の相関係数が算出される(図10のステップS41)。そして、算出された相関係数が、正常時相関係数記憶部152bに格納される。
【0173】
図17は、正常時相関係数記憶部のデータ構造の一例を示す図である。正常時相関係数記憶部152bには、例えば相関係数管理テーブル152dが格納されている。相関係数管理テーブル152dには、上位層、下位層、および相関係数の欄が設けられている。
【0174】
上位層の欄には、相関関係の比較対象とされる2つの階層のうちの、上位層の識別子と代表区間の区間種別とが設定される。図17の例では、「:(コロン)」で区切った左側に階層の識別子が設定され、右側に代表区間の区間種別が設定されている。
【0175】
下位層の欄には、相関関係の比較対象とされる2つの階層のうちの、下位層の識別子と代表区間の区間種別とが設定される。図17の例では、「:(コロン)」で区切った左側に階層の識別子が設定され、右側に代表区間の区間種別が設定されている。
【0176】
相関係数の欄には、上位層と下位層との代表区間同士の相関関係を示す相関係数が設定される。
このようにして正常時の階層間の相関係数が計算され、保存される。その後、処理時間の所定値以上の増加が発生すると、異常時の相関解析処理が実行される。
【0177】
異常時相関解析処理では、正常時と同様に、個々のトランザクションに関して、区間種別ごとの処理時間が算出される(図12のステップS53)。その後、区間種別ごとの平均処理時間が計算され、さらに平常からの平均処理時間の増加率が計算される(図12のステップS56,S57)。平均処理時間と増加率との計算結果は、異常時処理時間記憶部153aに格納される。
【0178】
図18は、異常時処理時間記憶部のデータ構造の一例を示す図である。異常時処理時間記憶部153aには、例えば処理時間管理テーブル153cが格納されている。処理時間管理テーブル153cには、階層、区間、平均処理時間、および増加率の欄が設けられている。
【0179】
階層の欄には、階層の識別子が設定される。区間の欄には、各階層内での区間種別が設定される。平均処理時間の欄には、対応する階層における対応する区間の処理時間の平均値が秒単位で設定される。
【0180】
増加率の欄には、正常時の平均処理時間に対する異常時の平均処理時間の増加率が設定される。
図18に示す処理時間管理テーブル153cのようなデータが、例えば1分間隔で14回取得され、その都度、異常時処理時間記憶部153aに、新たな処理時間管理テーブルが追加格納される。
【0181】
ここで、図18に示した増加率を参照すると、「階層1」に関しては、処理時間の増加率は所定の閾値(この例では2.0)を超えていない。一方、「階層2」、「階層3」に関しては、処理時間の増加率が閾値を超えている。
【0182】
このとき、「階層2」に関し、「問い合わせ開始前」の区間(第1種区間)のみが処理時間が増加しているのかどうかが判断される(図13のステップS61)。図18の例では、すべての区間において処理時間が増加しているものと判断され、処理がステップS63に進められる。なお、「階層3」に関しては、「問い合わせ開始前」の区間(第1種区間)が存在しないため、図13のステップS61における判断処理は行われない。
【0183】
図19は、異常時の処理時間の時系列推移を示す図である。図19では、横軸に時刻、縦軸に平均処理時間を取ったグラフによって、異常時の処理時間の時系列推移を示している。
【0184】
図19には、Appサーバ300とDBサーバ400と時系列推移を示している。なお、図19の例では、「複数問い合わせ間」の区間(第2種区間)が代表区間として時系列推移が解析されるが、「問い合わせ開始前」の区間(第1種区間)や「問い合わせ完了後」の区間(第3種区間)の時系列推移についても参考のために示している。
【0185】
このような時系列推移に基づいて、異常時処理時間解析部153により、処理時間が増大した複数の階層間で、代表区間の処理時間の時系列推移同士の相関係数が算出される(図13のステップS65)。そして、算出された相関係数が、異常時相関係数記憶部153bに格納される。
【0186】
図20は、異常時相関係数記憶部のデータ構造の一例を示す図である。異常時相関係数記憶部153bには、例えば相関係数管理テーブル153dが格納されている。相関係数管理テーブル153dには、上位層、下位層、および相関係数の欄が設けられている。各欄には、図17に示した正常時相関係数記憶部152b内の相関係数管理テーブル152d内の同名の欄と同種の情報が設定される。
【0187】
なお、異常時においては、処理時間の増加率が所定値より大きい階層間での相関係数が算出される。そのため、図20の例では、「階層2」と「階層3」との間の相関係数のみが算出されている。
【0188】
そして、相関判定部154によって、正常時の相関係数と異常時の相関係数とに基づいて、影響伝搬の有無が判定される。異常時において相関係数が閾値より大きく(図13のステップS66でYES判定)、かつ正常時において相関係数が閾値以下(図13のステップS68でNO判定)の場合に、影響伝搬があると判定する。
【0189】
ここで、複数の階層間の相関係数が一定の閾値を超えている場合は、その両階層の処理時間の増減には有意な相関があると判定している。有意な相関の有無を判定するための閾値は、比較する時系列の長さ(標本数)から統計学的に決定することができる。
【0190】
得られた相関係数が統計学的に有意であると証明する為にはt検定を行えばよい。母集団の相関係数=0と仮定(帰無仮説)すると、標本の相関係数rは、式(2)に示すtについて、自由度n−2のt分布に従う(nは標本数)。
【0191】
【数2】
【0192】
t分布によれば、標本数14の場合の1%有意水準の限界値は0.661である。すなわち図16、図19に示すように標本数が14の場合は、相関係数が0.661以上ならば、1%の有意水準で母相関係数が0でない(帰無仮説が棄却される)ことが分かる。これは、相関係数が0.661以上であれば、相関は有意であることを意味する。よって、第2の実施の形態のように1分毎の平均値の14分間分を比較する場合は、0.661という閾値が、複数階層間の処理時間増大の相関の有無を決定するのに適当であることが分かる。なお、閾値として小数点第2位までの数値を利用し、閾値を0.66としてもよい。
【0193】
図17の例では、正常時の上位層「階層2:複数問い合わせ間」と下位層「階層3:処理時間全体」の時系列推移の相関係数は0.448である。すると、相関係数は0.661以下であり、正常時には階層2と階層3との間に有意な相関は認められない。
【0194】
他方、図20の例では、異常時(処理時間増大時)の上位層「階層2:複数問い合わせ間」と下位層「階層3:処理時間全体」の時系列推移の相関係数は0.986となる。すると、相関係数は0.66より大きく、異常時には階層2と階層3との間に有意な相関が認められる。
【0195】
このように、正常時に有意な相関が認められず、異常時にのみ有意な相関が認められた階層間では、下位層における異常による処理時間の増加が、上位層に伝搬しているという因果関係が存在すると判定される。判定結果が、例えばモニタ11に表示される。
【0196】
図21は、異常警報画面の一例を示す図である。異常警報画面50には、例えば、処理時間の増加率が2.0異常となった階層がリストアップされる。そして、下位層のサーバの処理時間増加の影響が伝搬しただけの可能性がある階層に関しては、その旨のメッセージが表示される。
【0197】
このような異常警報画面50を見た管理者は、Appサーバ300とDBサーバ400との処理時間が正常時よりも過剰に増加していること、およびその処理時間の増加の原因がDBサーバ400にのみ存在している可能性があることを認識できる。すなわち、Appサーバ300については、処理時間が増加しているものの、DBサーバ400について対処し、処理時間の増加状態を解消すれば、Appサーバ300については対処をせずにすむ可能性があることを、管理者が認識できる。
【0198】
以上説明したように、第2の実施の形態では、平均処理時間の時系列推移の相関係数から因果関係が判定されている。すなわち第2の実施の形態では、2つの階層の「複数問い合わせ間」区間が優先的に代表区間として選択される。そして代表区間の処理時間の時系列推移について、それらの時系列推移の相関係数が求められる。異常時の相関係数だけが閾値(例えば0.8)以上に高ければ、その2つの階層の処理時間増大には因果関係があると判定される。異常時において相関係数が高くても、正常時においても同様に高い場合は、それらは処理時間増大とは無関係に相関する(例えば入力負荷の変動に相関する)ということなので、それらの処理時間増大に因果関係があるとは判定されない。
【0199】
このようにして複数階層間の処理時間増加の因果関係を判定する理由は次の通りである。処理時間増加が他の階層に伝搬する理由としては、ある階層の処理時間が増加することによって、その上位層で処理の多重度が上昇し、それが負荷増大や待ち時間増大に繋がっている場合が考えられる。この場合、下位層における処理時間の推移は上位層の多重度の推移と相関があり、それがさらにその階層の処理時間の推移と相関し、それら2つの階層の処理時間の推移が相関を持つことになる。ただし、このときに「問い合わせ開始前」区間(第1種区間)の増加に注意する必要がある。この区間は、様々な理由で突出して増加することがある。例えば、下位層へのコネクション確保待ちの時間などである。このように本来の処理以外に費やされる時間は、多重度の増減による微妙な処理時間の増減を大きく上回って増減する。よって、このような区間を加えた処理時間で階層間の相関を測っても、全く見当違いな結果が出てしまう。そのような処理の内容に一番影響を受けないのが「複数問い合わせ間」の区間で、その区間だけを用いて相関を取ることによって、階層間の処理負荷増減の相関を測ることが可能となる。
【0200】
また、1つのトランザクションにおいて「複数問い合わせ間」区間(第2種区間)が複数存在する場合がある。これは、メッセージフロー内での上位層からのリクエストメッセージが3回以上送信される場合である。このような場合において、複数存在する「複数問い合わせ間」区間の1つ当たりの平均値を用いる理由は、それらの合計値はメッセージ回数にほぼ比例するためである。時系列で平均メッセージ回数が変化した場合に、それだけで複数階層間の「複数問い合わせ間」の合計値の推移が相関してしまう。第2の実施の形態では、そこで複数存在する「複数問い合わせ間」区間の1つ当たりの平均値を、そのトランザクションの「複数問い合わせ間」区間の処理時間としている。
【0201】
以上説明したように、第2の実施の形態では、複数の階層の処理時間が同時に増大した場合に、それらの両方共が本当に問題を抱えているのか、それとも一方だけが問題を抱えていてそれが他方に影響を与えているのか判定できるようになる。因果関係があることが分かれば、因果関係の方向(どちらが原因でどちらが結果か)は簡単に分かる。複数階層システムの場合は通常は下位が上位に影響を与える。そこで、下位層だけを調べれば良いことになる。このような場合に、両方の階層に原因があると誤解して調査を進めると、両方の階層を調査する為に余計な時間がかかったり、無駄に両方の階層のハードウェアを買い替えたり、原因分析が混乱して問題原因が発見できなかったりする。本実施の形態の技術を用いれば、そのような失敗を防ぐことが可能となる。
【0202】
〔第3の実施の形態〕
第3の実施の形態は、高負荷で安定している場合でも、階層間の因果関係を適切に判定できるようにしたものである。
【0203】
第2の実施の形態に示した手法は、以下のような現象を想定して、処理時間増加の因果関係の有無の判定を行っている。
まず、ボトルネックとなる階層のサーバの負荷が増大していく場合、その階層のサーバの処理時間が上下しながら増加していく。このとき、上位層のサーバにおける処理の多重度が、下位層のサーバの処理時間の増減に応じて上下する。このような多重度の上下が、多重度に起因する負荷の上下を引き起こす。第2の実施の形態では、このような現象を利用して、階層間の処理時間増加の因果関係の有無を判定している。
【0204】
ところが、負荷が過剰に増加すると、ボトルネック層とその上位層の間の接続(コネクション)の多重度が際限なく上昇していく。多重度が増加し続けると、どこかの時点で多重度の制限に引っ掛かる。すなわち、接続の多重度の上限が予め設定されており、その多重度を超えた接続は行われない。
【0205】
多重度の制限に達すると多重度はそれ以上上昇しなくなり、ボトルネック層の負荷が安定するようになる。すなわち、ボトルネック層の処理時間は高い値ではあるが安定するようになる。そして、処理時間の分散が小さくなる。式(1)に示した相関係数の算出式から明らかなように、分散が小さくなれば相関係数は低くなる。
【0206】
また、接続の多重度の制限に達した場合は、多重度の制限のために、下位層の処理時間の増減という挙動は上位層に多重度の増減として伝わらなくなる。そのため、例え下位層において処理時間の増減が発生しても、上位層にはその影響が及ばなくなる。よって、処理時間が安定していない場合でも、それぞれの階層の処理時間の増減は相関しなくなる。そうすると、第2の実施の形態に示す手法は、ボトルネックが起き始めて、処理時間が増加していく過程には有効であるものの、多重度の制限に達した以降は、有効に作用しない場合が想定される。
【0207】
ただし、実際のシステムにおいては、入力負荷は安定せずに増減するので、常にそこまでの高負荷が連続することは稀である。多くの場合、部分的には負荷が下がって処理時間の増減が生じて処理時間の相関が生まれることになる。
【0208】
そこで、第3の実施では、利用する時系列を部分時系列に限定することによって、負荷が非常に大きくなる区間が存在したとしても、適切な因果関係の判定を可能とする。
図22は、第3の実施の形態の運用管理サーバの機能構成を示すブロック図である。なお、図22に示す運用管理サーバ100aにおいて、図4に示した第2の実施の形態の運用管理サーバ100と同様の機能を有する要素には、図4と同じ符号を付し説明を省略する。
【0209】
第3の実施の形態に係る運用管理サーバ100aの影響伝搬分析部150aには、部分時系列選択部155が設けられている。部分時系列選択部155は、システムへの入力負荷と所定時間ごとの平均処理時間の標準偏差との関係を求める。そして部分時系列選択部155は、標準偏差の最大値を記憶した入力負荷よりも入力負荷が高い時間帯を、除外時間帯とする。そして部分時系列選択部155は、除外時間帯を、処理時間推移の解析対象から除外する。例えば部分時系列選択部155は、メッセージフロー情報記憶部140から、除外時間帯内のトランザクションに関するメッセージフロー情報を除外したメッセージフロー情報を、正常時処理時間解析部152と異常時処理時間解析部153とに引き渡す。正常時処理時間解析部152と異常時処理時間解析部153とは、部分時系列選択部155から受け取ったメッセージフロー情報に基づいて得られた部分時系列を用いて、相関関係の解析を行う。
【0210】
部分時系列選択部155は、システムの負荷が過大になって処理時間が増減しなくなっている(高い値で安定している)状況を、システムへの入力負荷と平均処理時間の標準偏差とに基づいて検出する。
【0211】
図23は、システムへの入力負荷と平均処理時間の標準偏差との関係を示す図である。図23では、横軸にシステムへの入力負荷を示し、縦軸に標準偏差を示している。
図23には、システムの入力負荷として、端末装置から最上位層のサーバに到着した処理要求の数を用いている。すなわち、Webサーバ200に単位時間内に入力されたリクエストメッセージの数を、システムの入力負荷とする。
【0212】
標準偏差は、処理時間増大が問題となっている複数階層の内の下位層における代表区間の平均処理時間の標準偏差である。部分時系列選択部155は、例えば5秒ごとに平均処理時間を計算する。さらに部分時系列選択部155は、1分間内の5秒間隔の時間帯ごとの12区間の平均処理時間に基づいて、標準偏差を計算する。すると、1分ごとの標準偏差が得られる。
【0213】
また部分時系列選択部155は、標準偏差を計算した時間帯(1分間)内に最上位層のWebサーバ200に入力されたリクエストメッセージ数を計数する。そして、リクエストメッセージ数ごとに、標準偏差の値をプロットしたのが、図23の図である。
【0214】
図23を参照すると、一定の入力負荷までは、入力負荷が増加するにつれて標準偏差が大きくなることが分かる。これは平均処理時間の増加に伴う自然な変化である。しかし、入力負荷がある一定値を超えると、一転、標準偏差が減少に転じる。これは、入力負荷が過大になって、処理時間の増減幅が減少したことを意味する。
【0215】
実際のシステムでは、入力負荷は刻一刻と変化する。そこで、部分時系列選択部155は、例えば1分間程度の短い時間単位で分割して、その間のシステムに対する平均入力負荷と、その間の階層毎の区間別平均処理時間の標準偏差を求める。
【0216】
図24は、入力負荷と標準偏差との関係の解析例を示す図である。まず部分時系列選択部155は、時間軸を5秒間隔で区切り、1分当たり12個の単位期間を生成する。次に部分時系列選択部155は、メッセージフロー情報記憶部140に格納されているメッセージフロー情報に基づいて、単位期間ごとに各階層の代表区間に関する処理の平均処理時間を算出する。
【0217】
さらに部分時系列選択部155は、1分毎の時間帯を選択対象期間として、選択対象期間ごとに、その選択対象期間内の12個の単位期間の平均処理時間の標準偏差を求める。このような標準偏差が、1分ごとに算出される。図24の例では、「0.00045」、「0.00132」、「0.00012」、「0.00048」といった標準偏差が得られる。
【0218】
標準偏差が得られると部分時系列選択部155は、メッセージフロー情報記憶部140に格納されているメッセージフロー情報に基づいて、選択対象期間ごとの入力負荷(1秒当たりのリクエストメッセージ数)を求める。そして部分時系列選択部155は、選択対象期間ごとに、入力負荷と標準偏差とを対応付ける。なお、図24には、4つの解析区間しか示していないが、この解析をある程度長い区間(例えば14分)実行する。そして、入力負荷と標準偏差との関係を、図23に示す表にプロットする。
【0219】
図25は、入力負荷と標準偏差との関係をプロットした例を示す図である。このようにして得られたグラフにおいて、標準偏差の最大値を記録した入力負荷量より多い負荷量の範囲は、システムの負荷が過大になって処理時間が増減しなくなっている範囲である。
【0220】
図24、図25に示した例では、入力負荷が130の時に、標準偏差が最大値となる。そのため、入力負荷が130より大きな時間帯は、処理時間推移の解析対象から除外される。図24の例では、標準偏差「0.00048」と計算された時間帯について、処理時間推移の解析対象から除外される。
【0221】
正常時処理時間解析部152と異常時処理時間解析部153とは、部分時系列選択部155によって除外されていない時間帯だけで処理時間推移の部分時系列を求める。これにより、システムの負荷が過大な時間帯の影響を取り除いた解析が可能となる。
【0222】
複数の階層で処理時間が増大した場合において、そのどちらの階層でこの部分時系列の選択作業を行うかは、特に厳密なルールはない。両者の処理時間が相関している場合は、両方で共通した処理時間増減の傾向を示すはずなので、上記の手順をどちらの階層で行っても同様の結果となる。第3の実施の形態では部分時系列選択部155は、先に下位層で部分時系列の選択作業を実施し、次に、先に選択された時間帯における上位層の平均処理時間の部分時系列を抽出する。このようにして得られた両階層の平均処理時間の部分時系列を利用することによって、後は、第2の実施の形態と同じ手法で相関関係を判定できる。
【0223】
図26は、部分時系列選択処理の手順の一例を示すフローチャートである。以下、図26に示す処理をステップ番号に沿って説明する。
[ステップS81]部分時系列選択部155は、下位層での部分時系列選択処理を行う。
【0224】
[ステップS82]部分時系列選択部155は、上位層での部分時系列選択処理を行う。
このような部分時系列選択処理が、上位層と下位層との組み合わせごとに実行される。例えば、DBサーバ400とAppサーバ300との影響伝搬を解析する場合、DBサーバ400の処理を下位層、Appサーバ300の処理を上位層として、図26の処理が実行される。また、Appサーバ300とWebサーバ200との影響伝搬を解析する場合、Appサーバ300の処理を下位層、Webサーバ200の処理を上位層として、図26の処理が実行される。
【0225】
図27は、下位層での部分時系列選択処理の手順の一例を示すフローチャートである。以下、図27に示す処理をステップ番号に沿って説明する。
[ステップS101]部分時系列選択部155は、解析対象期間(例えば14分)を1分ごとに分割した選択対象期間ごとに、ステップS102〜S107の処理を実行する。すなわち、部分時系列選択部155は、複数の選択対象期間から、未処理の選択対象期間を1つ選択する。
【0226】
[ステップS102]部分時系列選択部155は、1分間の選択対象期間を、5秒ごとの12個の単位期間に分割する。
[ステップS103]部分時系列選択部155は、5秒間の単位期間ごとに、ステップS104の処理を実行する。すなわち、部分時系列選択部155は、選択されている選択対象期間を分割して得られる複数の単位期間から、未処理の単位期間を1つ選択する。
【0227】
[ステップS104]部分時系列選択部155は、選択した単位期間における下位層における代表区間平均処理時間を算出する。
[ステップS105]部分時系列選択部155は、選択した選択対象期間内のすべての単位期間に対してステップS104の処理が完了したか否かを判断する。部分時系列選択部155は、未処理の単位期間があれば、処理をステップS103に進める。部分時系列選択部155は、すべての単位期間について処理が完了していれば、処理をステップS106に進める。
【0228】
[ステップS106]部分時系列選択部155は、選択対象期間内の単位期間ごとの平均処理時間の標準偏差を計算する。
[ステップS107]部分時系列選択部155は、1分間の選択対象期間におけるシステム全体に対する入力負荷を取得する。入力負荷は、1秒当たりのリクエストメッセージ数で表される。
【0229】
[ステップS108]部分時系列選択部155は、1分間ごとの選択対象期間すべてについてステップS102〜S107の処理が完了したか否かを判断する。部分時系列選択部155は、未処理の選択対象期間があれば、処理をステップS101に進める。部分時系列選択部155は、すべての選択対象期間について処理が完了していれば、処理をステップS109に進める。
【0230】
[ステップS109]部分時系列選択部155は、選択対象期間の標準偏差の最大値と、標準偏差が最大値となった選択対象期間のシステム入力負荷を求める。
[ステップS110]部分時系列選択部155は、1分間の選択対象期間ごとに、ステップS111〜S112の処理を実行する。すなわち、部分時系列選択部155は、複数の選択対象期間から、未処理の選択対象期間を1つ選択する。
【0231】
[ステップS111]部分時系列選択部155は、処理対象の選択対象期間の入力負荷が、標準偏差が最大値を記録した選択対象期間の入力負荷よりも大きいか否かを判断する。処理対象の選択対象期間の入力負荷の方が、標準偏差が最大値を記録した選択対象期間の入力負荷より大きい場合、処理がステップS112に進められる。処理対象の選択対象期間の入力負荷が、標準偏差が最大値を記録した選択対象期間の入力負荷以下の場合、処理がステップS113に進められる。
【0232】
[ステップS112]部分時系列選択部155は、現在処理対象となっている選択対象期間の1分間を、処理時間推移の解析対象から除外する。
[ステップS113]部分時系列選択部155は、1分間ごとの選択対象期間すべてについてステップS111〜S112の処理が完了したか否かを判断する。部分時系列選択部155は、未処理の選択対象期間があれば、処理をステップS110に進める。部分時系列選択部155は、すべての選択対象期間について処理が完了していれば、下位層での部分時系列選択処理を終了する。
【0233】
図28は、上位層での部分時系列選択処理手順の一例を示す図である。以下、図28に示す処理をステップ番号に沿って説明する。
[ステップS121]部分時系列選択部155は、解析対象期間(例えば14分)を1分ごとに分割した選択対象期間ごとに、ステップS122〜S123の処理を実行する。すなわち、部分時系列選択部155は、複数の選択対象期間から、未処理の選択対象期間を1つ選択する。
【0234】
[ステップS122]部分時系列選択部155は、現在処理対象となっている選択対象期間が、下位層において処理時間推移の解析対象から除外されているか否かを判断する。除外されていれば、処理がステップS123に進められる。除外されていなければ、処理がステップS124に進められる。
【0235】
[ステップS123]部分時系列選択部155は、現在処理対象となっている選択対象期間を、処理時間推移の解析対象から除外する。
[ステップS124]部分時系列選択部155は、解析対象期間内のすべての選択対象期間についてステップS122,S123の処理が完了したか否かを判断する。部分時系列選択部155は、未処理の選択対象期間があれば、処理をステップS121に進める。部分時系列選択部155は、すべての選択対象期間について処理が完了していれば、すると、上位層での部分時系列選択処理を終了する。
【0236】
以上のような処理で除外されていない時系列を構成するメッセージフロー情報のみが、部分時系列選択部155から正常時処理時間解析部152や異常時処理時間解析部153に渡され、時系列推移が解析される。その結果、正常時処理時間解析部152と異常時処理時間解析部153とでは、一部の期間の情報が取り除かれた時系列推移が生成されることとなる。
【0237】
このように、第3の実施の形態では、入力負荷が過大となり、接続の多重度制限により処理時間が安定した時間帯を解析対象から除外することで、入力負荷が大きな状態が継続しても、影響伝搬の有無を適格に判断することが可能となる。
【0238】
〔その他の応用例〕
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、運用管理サーバが有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置(HDD)、フレキシブルディスク(FD)、磁気テープなどがある。光ディスクには、DVD、DVD−RAM、CD−ROM/RWなどがある。光磁気記録媒体には、MO(Magneto-Optical disc)などがある。
【0239】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたDVD、CD−ROMなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【0240】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
【0241】
また、上記の処理機能の少なくとも一部を、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、PLD(Programmable Logic Device)などの電子回路で実現することもできる。
【0242】
以上、実施の形態を例示したが、実施の形態で示した各部の構成は同様の機能を有する他のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。さらに、前述した実施の形態のうちの任意の2以上の構成(特徴)を組み合わせたものであってもよい。
【0243】
以上の実施の形態に開示された技術には、以下の付記に示す技術が含まれる。
(付記1) コンピュータに、
複数のサーバが連携してトランザクションを実行する複数階層システムにおいて実行された各トランザクションに関し、各階層のサーバが各トランザクションに関する処理を実行した期間を示す情報を記憶する記憶手段を参照し、第1の階層に属するサーバの1処理当たりの平均処理時間の時系列推移と、第2の階層に属するサーバの1処理当たりの平均処理時間の時系列推移とを計算し、
前記第1の階層に属するサーバの平均処理時間の時系列推移と、前記第2の階層に属するサーバの平均処理時間の時系列推移との間の相関の有無を判定する、
処理を実行させることを特徴とする解析プログラム。
【0244】
(付記2) 前記コンピュータに、
前記記憶手段を参照し、最上位のサーバにおける処理要求の受信から応答の送信までの時間に基づいて、前記複数階層システムの異常の有無を判定し、
前記記憶手段を参照し、異常が検出された期間における各階層に属するサーバの1処理当たりの平均処理時間が、異常が検出されていない期間における1処理当たりの平均処理時間より所定値以上増大したか否かを判断し、処理時間が所定値以上増大した2つの階層を、それぞれ前記第1の階層および前記第2の階層として、異常が検出された期間と異常が検出されていない期間とのそれぞれにおける1処理当たりの平均処理時間の時系列推移を計算し、
異常が検出された期間における前記第1の階層に属するサーバの処理時間の時系列推移と前記第2の階層に属するサーバの処理時間の時系列推移との相関と、異常が検出されていない期間における前記第1の階層に属するサーバの処理時間の時系列推移と前記第2の階層に属するサーバの処理時間の時系列推移との相関とに基づいて、前記第1の階層に属するサーバにおける1処理当たりの処理時間の増大と、前記第2の階層に属するサーバにおける1処理当たりの処理時間の増大との因果関係の有無を判定する、
処理を実行させることを特徴とする付記1記載の解析プログラム。
【0245】
(付記3) 前記コンピュータに、因果関係の有無を判定させる際には、
異常が検出された期間において相関ありと判定され、異常が検出されていない期間において相関なしと判定された場合に、処理時間の増大の因果関係ありと判定する、
処理を実行させることを特徴とする付記2記載の解析プログラム。
【0246】
(付記4) 前記コンピュータに、平均処理時間の時系列推移を計算させる際には、
前記第1の階層に属するサーバまたは前記第2の階層に属するサーバが、上位層のサーバからの処理要求に応じた処理中に下位層のサーバへの処理要求を出力している場合、処理の開始の契機となる通信および処理の終了時に行われる通信に応じて各処理を複数の種別に分類し、前記複数の種別から選択した少なくとも1つの種別に属する処理の実行期間の処理時間の平均を、前記第1の階層に属するサーバまたは前記第2の階層に属するサーバの1処理当たりの平均処理時間とする、
処理を実行させることを特徴とする付記1乃至3のいずれかに記載の解析プログラム。
【0247】
(付記5) 前記コンピュータに、各処理を前記複数の種別に分類させる際には、
上位層のサーバから入力された処理要求を契機として開始され、下位層のサーバへ処理要求を出力して終了する処理が属する第1種、下位層のサーバに対して出力した処理要求に対する該サーバからの応答を契機として開始され、下位層のサーバへ処理要求を出力して終了する処理が属する第2種、および下位層のサーバに対して出力した処理要求に対する該サーバからの応答を契機として開始され、上位層のサーバに対して応答を出力して終了する処理が属する第3種に分類する、
処理を実行させることを特徴とする付記4記載の解析プログラム。
【0248】
(付記6) 前記コンピュータに、1処理当たりの平均処理時間を計算させる際には、
前記第2種に属する実行期間が存在する場合、前記第2種に属する実行期間の処理時間の平均を、前記第1の階層に属するサーバまたは前記第2の階層に属するサーバの1処理当たりの平均処理時間とする、
処理を実行させることを特徴とする付記5記載の解析プログラム。
【0249】
(付記7) 前記コンピュータに、さらに、
各階層に属するサーバの処理時間が所定以上増大したか否かを判断する際には、異常が検出されていない期間の1処理当たりの平均処理時間に対する異常検出時の1処理当たりの平均処理時間の増加率を計算し、該増加率が所定値異常の場合、処理時間が所定値以上増大したと判断する、
処理を実行させることを特徴とする付記2記載の解析プログラム。
【0250】
(付記8) 前記コンピュータに、時系列推移間の相関の有無を判断させる際には、
前記第1の階層に属するサーバの1処理当たりの平均処理時間の時系列推移と、前記第2の階層に属するサーバの1処理当たりの平均処理時間の時系列推移との相関係数を算出し、該相関係数が所定の有意水準以上の場合に、時系列推移間に相関があると判断する処理を実行させることを特徴とする付記1乃至7の何れかに記載の解析プログラム。
【0251】
(付記9) 前記コンピュータに、さらに、
前記第1の階層と前記第2の階層とのうちの上位層において、前記第1種に属する処理の1処理当たりの平均処理時間が所定値以上増大し、前記第2種および前記第3種に属する処理の1処理当たりの平均処理時間に所定値以上の増大が認められない場合、上位層の処理時間の増大は、下位層の処理時間増大の影響が伝搬したものであると判定する、
処理を実行させることを特徴とする付記5記載の解析プログラム。
【0252】
(付記10) 前記コンピュータに、1処理当たりの平均処理時間の時系列推移を計算させる際には、前記記憶手段に記憶されたトランザクション情報のうち、前記複数階層システムにおける処理負荷が所定値以上の期間に行われたトランザクションに関するトランザクション情報を除外して、1処理当たりの平均処理時間の時系列推移を計算する、
処理を実行させることを特徴とする付記1乃至9のいずれかに記載の解析プログラム。
【0253】
(付記11) 前記コンピュータに、1処理当たりの平均処理時間の時系列推移を計算させる際には、前記記憶手段に記憶されたトランザクション情報のうち、平均処理時間の標準偏差が最大となった期間よりも大きな処理負荷がかけられた期間に行われたトランザクションに関するトランザクション情報を除外して、1処理当たりの平均処理時間の時系列推移を計算する、
処理を実行させることを特徴とする付記10記載の解析プログラム。
【0254】
(付記12) コンピュータが、
複数のサーバが連携してトランザクションを実行する複数階層システムにおいて実行された各トランザクションに関し、各階層のサーバが各トランザクションに関する処理を実行した期間を示す情報を記憶する記憶手段を参照し、第1の階層に属するサーバの1処理当たりの平均処理時間の時系列推移と、第2の階層に属するサーバの1処理当たりの平均処理時間の時系列推移とを計算し、
前記第1の階層に属するサーバの平均処理時間の時系列推移と、前記第2の階層に属するサーバの平均処理時間の時系列推移との間の相関の有無を判定する、
ことを特徴とする解析方法。
【0255】
(付記13) 複数のサーバが連携してトランザクションを実行する複数階層システムにおいて実行された各トランザクションに関し、各階層のサーバが各トランザクションに関する処理を実行した期間を示す情報を記憶する記憶手段を参照し、第1の階層に属するサーバの1処理当たりの平均処理時間の時系列推移と、第2の階層に属するサーバの1処理当たりの平均処理時間の時系列推移とを計算する処理時間解析手段と、
前記第1の階層に属するサーバの平均処理時間の時系列推移と、前記第2の階層に属するサーバの平均処理時間の時系列推移との間の相関の有無を判定する相関判定手段と、
を有することを特徴とする解析装置。
【符号の説明】
【0256】
1 解析装置
1a 異常判定手段
1b 処理時間解析手段
1c 相関判定手段
2 記憶手段
2a,2b,2c トランザクション情報
【技術分野】
【0001】
本発明は複数階層システムから得られた情報を解析する解析プログラム、解析方法、および解析装置に関する。
【背景技術】
【0002】
従来、複数のコンピュータが階層的に処理を分担する情報処理システム(複数階層システムという)が利用されている。以下、複数階層システムを構成するコンピュータを「サーバ」と呼ぶ。複数階層システムとして、例えばシステム利用のためのインタフェースを提供するWebサーバ、システム上の処理を実行するApp(Application)サーバおよびデータを管理するDB(Database)サーバを有する3階層システムが知られている。各サーバは、ユーザからの処理要求に対して連携して処理を実行し、その処理要求に応答する。このように、各サーバに処理を分担させることで、システムの信頼性や応答性を向上できる。
【0003】
このようなWeb複数階層システムに代表される複数階層システムにおいて、エンドユーザにおける応答時間の増大が発生した際には、問題が発生しているサーバが属する階層を特定することが、障害対応の第一歩として非常に重要である。そのために、各階層のサーバにおいて処理時間を測定し、その推移を監視することによって問題の有無を判定する手法が広く一般に採用されている。
【0004】
例えば、トランザクションモデルを生成し、スイッチを介して送受信されたメッセージからトランザクションモデルに沿って進行するメッセージの受け渡しを検出する技術が考えられている。この技術により、任意のトランザクションを構成するメッセージの集合を特定し、そのトランザクションの解析が可能となる。例えば、ユーザのリクエストからレスポンスまでの各アプリケーションの処理を追跡することができる。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2006−011683号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかし、従来の方法では、各階層のサーバにおける処理時間の解析により、個々のサーバでの処理時間の増加は検出できるものの、処理遅延などの問題の発生原因となる箇所を迅速に特定するには不十分な場合があった。
【0007】
例えば、複数の階層のサーバにおいて処理時間が同時に増加する場合がある。このような処理時間の増加原因として、例えば、以下の2つの発生パターンが想定される。
第1の発生パターンは、各階層のサーバそれぞれにおいて過負荷などの問題が独立して発生している場合である。第2の発生パターンは、下位層のサーバにのみ問題が発生しており、上位層のサーバは、下位層のサーバの処理時間の増加の影響を受けているだけの場合である。ところが従来の技術では、このような2つの発生パターンを区別することができなかった。その結果、処理時間の増加を複数の階層のサーバにおいて検出すると、各階層のサーバそれぞれを調査して原因究明を行うこととなり、原因究明とその対策に時間がかかっていた。
【0008】
1つの側面では、本発明は、異なる階層に属する複数サーバ間での処理時間の影響伝搬の可能性の有無の解析を行う解析プログラム、解析方法および解析装置を提供することを目的とする。
【課題を解決するための手段】
【0009】
1つの案では、コンピュータは、複数のサーバが連携してトランザクションを実行する複数階層システムにおいて実行された各トランザクションに関し、各階層のサーバが各トランザクションに関する処理を実行した期間を示す情報を記憶する記憶手段を参照する。そしてコンピュータは、第1の階層に属するサーバの1処理当たりの平均処理時間の時系列推移と、第2の階層に属するサーバの1処理当たりの平均処理時間の時系列推移とを計算する。さらにコンピュータは、第1の階層に属するサーバの平均処理時間の時系列推移と、第2の階層に属するサーバの平均処理時間の時系列推移との間の相関の有無を判定する。
【0010】
また、上記解析プログラムを実行するコンピュータと同様の処理をコンピュータに実行させる解析方法を用いる。
また、上記解析プログラムを実行するコンピュータと同様の処理を実行する機能を有する解析装置を用いる。
【発明の効果】
【0011】
異なる階層に属する複数サーバ間での処理時間の影響伝搬の可能性の有無が解析できる。
【図面の簡単な説明】
【0012】
【図1】第1の実施の形態に係る解析装置の機能を示すブロック図である。
【図2】第2の実施の形態の業務システムの全体構成を示す図である。
【図3】第2の実施の形態の運用管理サーバのハードウェア構成を示す図である。
【図4】第2の実施の形態の運用管理サーバの機能構成を示すブロック図である。
【図5】影響伝搬解析処理の手順を示すフローチャートの一例である。
【図6】業務システムにおける通信の流れの具体例を示すシーケンス図である。
【図7】メッセージ記憶部に記憶されたメッセージの一例を示す第1の図である。
【図8】メッセージ記憶部に記憶されたメッセージの一例を示す第2の図である。
【図9】メッセージフロー情報記憶部のデータ構造例を示す図である。
【図10】正常時の処理時間解析処理手順を示すフローチャートの一例である。
【図11】1トランザクションにおけるサーバの処理区間の分類例を示す図である。
【図12】異常時の処理時間解析処理の手順の一例を示すフローチャートの前半である。
【図13】異常時の処理時間解析処理の手順の一例を示すフローチャートの後半である。
【図14】「問い合わせ開始前」区間のみ処理時間が増加した状況を示す図である。
【図15】正常時平均処理時間記憶部のデータ構造の一例を示す図である。
【図16】正常時の処理時間の時系列推移を示す図である。
【図17】正常時相関係数記憶部のデータ構造の一例を示す図である。
【図18】異常時処理時間記憶部のデータ構造の一例を示す図である。
【図19】異常時の処理時間の時系列推移を示す図である。
【図20】異常時相関係数記憶部のデータ構造の一例を示す図である。
【図21】異常警報画面の一例を示す図である。
【図22】第3の実施の形態の運用管理サーバの機能構成を示すブロック図である。
【図23】システムへの入力負荷と平均処理時間の標準偏差との関係を示す図である。
【図24】入力負荷と標準偏差との関係の解析例を示す図である。
【図25】入力負荷と標準偏差との関係をプロットした例を示す図である。
【図26】部分時系列選択処理の手順の一例を示すフローチャートである。
【図27】下位層での部分時系列選択処理の手順の一例を示すフローチャートである。
【図28】上位層での部分時系列選択処理手順の一例を示す図である。
【発明を実施するための形態】
【0013】
以下、本実施の形態について図面を参照して説明する。
〔第1の実施の形態〕
図1は、第1の実施の形態に係る解析装置の機能を示すブロック図である。第1の実施の形態に係る解析装置1は、記憶手段2に記憶された情報を参照して解析処理を行う。
【0014】
記憶手段2は、2つ以上のサーバが連携してトランザクションを実行する複数階層システムにおいて実行されたトランザクションに関する複数のトランザクション情報2a,2b,2cを記憶する。トランザクション情報2a,2b,2cは、各階層のサーバが各トランザクションに関する処理を実行した期間を示す情報を含んでいる。例えば、トランザクションにおけるサーバ間で通信されたメッセージと、各メッセージの通信時刻とがトランザクション情報に含まれる。この場合、メッセージの通信時刻によって、各階層のサーバがトランザクションに関する処理を実行した期間が示されている。すなわち、サーバがトランザクション中のメッセージを受信し、その次のメッセージを送信するまでの期間が、そのサーバで処理を実行した期間となる。
【0015】
解析装置1は、トランザクション情報を用いた解析機能として、異常判定手段1a、処理時間解析手段1b、および相関判定手段1cを有する。
異常判定手段1aは、記憶手段2を参照し、複数階層システムでの異常の有無を判定する。例えば異常判定手段1aは、最上位のサーバにおける処理要求の受信から応答の送信までの時間に基づいて、複数階層システムの異常の有無を判定することができる。この場合、異常判定手段1aは、例えば、所定期間内に実行された複数のトランザクションそれぞれにおける最上位のサーバによる処理要求の受信から応答の送信までの経過時間の平均が、予め設定された閾値以上の場合、その所定期間を、異常が検出された期間と判定する。以下、異常が検出された期間を「異常時」、異常が検出されていない期間を「正常時」とする。
【0016】
処理時間解析手段1bは、トランザクション情報に基づいて、第1の階層に属するサーバの1処理当たりの平均処理時間の時系列推移と、第2の階層に属するサーバの1処理当たりの平均処理時間の時系列推移とを計算する。図1の例では、サーバ「A」とサーバ「B」とについて、1処理当たりの平均処理時間の時系列推移が計算されている。なお、処理時間解析手段1bは、正常時と異常時との時系列推移を個別に計算することができる。例えば処理時間解析手段1bは、正常時におけるトランザクション情報に基づいて、第1の階層に属するサーバの1処理当たりの平均処理時間の時系列推移と、第2の階層に属するサーバの1処理当たりの平均処理時間の時系列推移とを計算する。また処理時間解析手段1bは、異常時におけるトランザクション情報に基づいて、第1の階層に属するサーバの1処理当たりの平均処理時間の時系列推移と、第2の階層に属するサーバの1処理当たりの平均処理時間の時系列推移とを計算する。
【0017】
なお処理時間解析手段1bは、次のようにして、第1の階層と第2の階層とを決定する。例えば、処理時間解析手段1bは、記憶手段2を参照する。そして処理時間解析手段1bは、異常時における各階層に属するサーバの1処理当たりの平均処理時間が、正常時における1処理当たりの平均処理時間より所定値以上増大したか否かを判断する。処理時間解析手段1bは、処理時間が所定値以上増大した2つの階層を、それぞれ第1の階層および第2の階層として決定する。
【0018】
相関判定手段1cは、第1の階層に属するサーバの平均処理時間の時系列推移と、第2の階層に属するサーバの平均処理時間の時系列推移との間の相関の有無を判定する。例えば相関判定手段1cは、第1の階層に属するサーバの1処理当たりの平均処理時間の時系列推移と、第2の階層に属するサーバの1処理当たりの平均処理時間の時系列推移との相関係数を算出する。そして相関判定手段1cは、相関係数が所定の有意水準の限界値以上の場合に、時系列推移間に相関があると判断する。
【0019】
なお相関判定手段1cは、正常時と異常時とにおいて、個別に相関の有無を判定することができる。すなわち、相関判定手段1cは、処理時間解析手段1bによって計算された正常時の時系列推移を取得する。そして相関判定手段1cは、正常時の第1の階層のサーバの平均処理時間の時系列推移と、正常時の第2の階層に属するサーバの平均処理時間の時系列推移との間の相関の有無を判定する。また相関判定手段1cは、処理時間解析手段1bから異常時の時系列推移を取得する。そして相関判定手段1cは、異常時の第1の階層のサーバの平均処理時間の時系列推移と、異常時の第2の階層に属するサーバの平均処理時間の時系列推移との間の相関の有無を判定する。
【0020】
正常時と異常時とにおいて個別に相関の有無を判定した場合、相関判定手段1cは、階層の異なるサーバ間での1処理当たりの処理時間の増大の因果関係の有無を判定することができる。例えば相関判定手段1cは、異常時において相関ありと判定され、正常時において相関なしと判定された場合に、処理時間の増大の因果関係ありと判定する。
【0021】
このような機能を有する解析装置1によれば、複数階層システムにおける異なる階層のサーバ間の処理時間の影響伝搬の有無を判断することができる。影響伝搬がある場合、処理時間増大などの異常発生時に、因果関係がある複数の階層のうち一方の階層に属するサーバにおける異常の原因を取り除くだけで、システム全体の異常が解消できる可能性がある。すると因果関係を有する他方の階層のサーバにおいて異常の原因の探索を行わずにすみ、異常解析の作業効率が向上する。
【0022】
なお図1の例では因果関係の有無まで判定しているが、正常時、異常時の区別をせずに、解析装置1が所定期間における相関の有無を判定するだけでも、管理者は、影響伝搬の可能性を容易に認識できる。例えば、管理者が複数階層システムに何らかの異常が検出した期間のトランザクション情報のみを記憶手段2に格納する。その後、管理者は、異常が検出された期間のトランザクション情報に基づいて、解析装置1でサーバ間の処理時間の相関を判定させる。管理者がこのような作業を行えば、解析装置1に異常判定手段1aを備えなくとも、異常時におけるサーバ間の処理時間の相関を判定できる。少なくとも異常時に有意な相関が認められれば、管理者は、サーバ間に影響伝搬の可能性があることが認識できる。
【0023】
また、図1に示す解析装置1は、有意な相関の有無にとどまらず、因果関係の有無までも判断している。因果関係の有無までも判定することで、障害解析の経験が不十分な管理者であっても、サーバ間の処理時間の増加の因果関係の有無を適格に判断でき、異常状態の解消にかかる作業効率が向上する。
【0024】
すなわち、図1に示す解析装置1を用いれば、複数の階層の処理時間が同時に増大した場合に、それらの両方共が本当に問題を抱えているのか、それとも一方だけが問題を抱えていてそれが他方に影響を与えているのか認識できる。異なる階層のサーバ間に処理時間の因果関係があることが分かれば、因果関係の方向(どちらが原因でどちらが結果か)は推定可能である。例えば、複数階層システムの場合は通常は下位層のサーバが上位層のサーバに影響を与える。そこで、複数階層システムに異常がある場合、管理者は、因果関係にある複数の階層のうち下位層のサーバだけを調べればよいことが理解でき、作業効率が向上する。逆に、因果関係の有無が判別できないと、両方の階層に原因があると誤解して調査を進めてしまう場合があり得る。その結果、両方の階層を調査する為に余計な時間がかかったり、無駄に両方の階層のハードウェアを買い替えたり、原因分析が混乱して問題原因が発見できなかったりといった作業が行われ、作業効率が低下する。
【0025】
なお、複数階層システムでは、第1の階層に属するサーバまたは第2の階層に属するサーバが、上位層のサーバからの処理要求に応じた処理中に下位層のサーバへの処理要求を出力している場合がある。このような場合、処理時間解析手段1bは、処理の開始の契機となる通信および処理の終了時に行われる通信に応じて各処理の実行期間を複数の種別に分類してもよい。複数の種別に分類した場合、処理時間解析手段1bは、複数の種別から少なくとも1つの種別を選択する。そして処理時間解析手段1bは、選択した少なくとも1つの種別に属する処理の実行期間の処理時間の平均を、第1の階層に属するサーバまたは第2の階層に属するサーバの1処理当たりの平均処理時間とする。
【0026】
処理を複数の種別に分類する場合、処理時間解析手段1bは、例えば以下のような3種に分類する。
第1種は、上位層のサーバから入力された処理要求を契機として開始され、下位層のサーバへ処理要求を出力して終了する処理の実行期間が属する。第2種は、下位層のサーバに対して出力した処理要求に対する該サーバからの応答を契機として開始され、下位層のサーバへ処理要求を出力して終了する処理の実行期間が属する。第3種は、下位層のサーバに対して出力した処理要求に対する該サーバからの応答を契機として開始され、上位層のサーバに対して応答を出力して終了する処理の実行期間が属する。
【0027】
処理の実行期間を第1種〜第3種に分類した場合、処理時間解析手段1bは、例えば第2種に属する実行期間が存在すれば、第2種を優先的に選択する。すなわち処理時間解析手段1bは、第2種に属する実行期間の処理時間の平均を、第1の階層に属するサーバまたは第2の階層に属するサーバの1処理当たりの平均処理時間とする。第2種は、他の階層のサーバとの接続待ち時間の影響を受けづらく、サーバの処理負荷の状況が、処理時間として正確に現れると考えられるためである。
【0028】
また、相関判定手段1cは、特定の条件が満たされた場合、処理時間の時系列推移を用いずに、因果関係の有無を判定することができる。例えば、第1の階層と第2の階層とのうちの上位層において、第1種に属する実行時間の平均処理時間が所定値以上増大し、第2種および第3種に属する実行時間の平均処理時間の所定値以上の増大が認められない場合がある。このような場合、相関判定手段1cは、上位層の処理時間の増大と、下位層の処理時間増大との間に因果関係があると判定する。この場合、因果関係の有無に加え、原因の発生箇所と、原因の影響を受けた箇所とについても特定できる。すなわち相関判定手段1cは、上位層の処理時間の増大は、下位層の処理時間増大の影響が伝搬したものであると判定できる。
【0029】
〔第2の実施の形態]
以下、第2の実施の形態について図面を参照して詳細に説明する。第2の実施の形態は、ネットワークを介して伝送されるパケットをキャプチャし、キャプチャしたパケットを用いて解析を行うものである。
【0030】
第2の実施の形態では、複数階層システムとしてWeb3階層システムを例として説明する。Web3階層システムとは、Webサーバ、アプリケーションサーバ(以降、Appサーバ)、データベースサーバ(以降、DBサーバ)からなる複数階層システムである。エンドユーザのコンピュータ上のブラウザが出力する処理要求は、WebサーバがHTTP(hyper text transfer protocol)に従ったパケットで受ける。処理要求が静的コンテンツの取得であれば、Webサーバが、保持しているコンテンツを直接エンドユーザのコンピュータへ返信する。他方、処理要求がプログラムによって生成される動的コンテンツの取得の場合、Webサーバは、処理をAppサーバへ依頼する。処理の依頼を受けたAppサーバは、Java(登録商標)などで記述されたプログラムによってその処理要求を実行する。Appサーバは、処理の過程において、使用されるデータは、それを保持するDBサーバに対して処理要求を発行して取得する。
【0031】
このようなWeb3階層システムにおいて、例えばAppサーバとDBサーバとにおいて同時に、1つのトランザクションに関する処理に要する時間が増大することがある。このとき、Appサーバの処理時間の増大はDBサーバの処理時間の増大の影響が伝搬したものであり、DBサーバにおいて発生した問題を解消することで、Appサーバの処理時間は減少する場合がある。このような影響の伝搬の関係が予め分かっていれば、処理時間の増大という異常が発生した場合、その対策を迅速に行うことができる。
【0032】
図2は、第2の実施の形態の業務システムの全体構成を示す図である。この業務システムは、運用管理サーバ100、Webサーバ200、Appサーバ300およびDBサーバ400を有する。運用管理サーバ100、Webサーバ200、Appサーバ300およびDBサーバ400は、スイッチ装置10を介して相互に接続されている。また、スイッチ装置10は、ネットワーク20を介して端末装置21,22,23に接続されている。
【0033】
端末装置21,22,23は、スイッチ装置10およびネットワーク20を介してWebサーバ200にアクセス可能である。端末装置21,22,23のユーザは、Webサーバ200が提供するGUI(Graphical User Interface)を端末装置21,22,23から操作して業務システムを利用できる。ネットワーク20は、例えばイントラネットである。
【0034】
なお、ネットワーク20がインターネットである場合も考えられる。その場合、スイッチ装置10はファイアウォールとして機能させることもできる。また、Webサーバ200の属するネットワークセグメントは、例えばDMZ(Demilitarized Zone)として扱われる。
【0035】
運用管理サーバ100は、Webサーバ200、Appサーバ300およびDBサーバ400の稼働状況を管理する。運用管理サーバ100は、そのための情報をスイッチ装置10から取得することができる。すなわち、スイッチ装置10は、ポートミラーリング機能を有しており、Webサーバ200、Appサーバ300およびDBサーバ400の間で送受信される通信パケットを運用管理サーバ100にも送信する。ポートミラーリング機能とは、スイッチ装置10上の設定したポートを流れるIPパケットをコピーして、指定した別のポートへ転送する機能である。この転送先として指定されたポートの先に、IPパケット記録や解析を行う運用管理サーバ100が配置される。
【0036】
運用管理サーバ100は、スイッチ装置10から送信される通信パケットを受信して、記憶する(パケットキャプチャ)。なお、運用管理サーバ100で単にパケットキャプチャを行う用途であれば、スイッチ装置10をリピータハブで代用することもできる。運用管理サーバ100は、この転送されてくるIPパケットを受信可能なネットワークインタフェースを有している。そして運用管理サーバ100は、転送されてきたIPパケット格納用の十分に大きなハードディスクを有している。さらに、運用管理サーバ100は、IPパケットをキャプチャするのに十分なCPU(Central Processing Unit)性能を保有していることが望ましい。転送されてきたIPパケットは、運用管理サーバ100上でキャプチャされ、その後にメッセージフローを抽出する為の処理が実施される。
【0037】
Webサーバ200は、端末装置21,22,23で実行されるWebブラウザから業務システムに対する処理要求(メッセージ)を受け付ける。ここで、Webサーバ200と端末装置21,22,23とのメッセージ交換は、HTTPによって行われるものとする。ただし、他のプロトコルが用いられてもよい。
【0038】
以下では、端末装置21,22,23からWebサーバ200へ送信する処理要求をHTTPリクエストと呼ぶこととする。また、それに対する応答をHTTPレスポンスと呼ぶこととする。なお、リクエスト/レスポンスともに処理要求の一例である。
【0039】
Webサーバ200は、端末装置21,22,23から受信したHTTPリクエストに基づいて、静的コンテンツに関しては自装置でHTTPレスポンスを生成し、端末装置21,22,23に送信する。なお、動的コンテンツに関しては、Appサーバ300に依頼すべき処理の処理要求(メッセージ)を生成して、Appサーバ300に送信する。
【0040】
ここで、Webサーバ200とAppサーバ300とのメッセージ交換は、IIOP(Internet Inter-ORB(Object Request Broker) Protocol)によって行われるものとする。ただし、他のプロトコルが用いられてもよい。
【0041】
以下では、Webサーバ200からAppサーバ300へ送信する処理要求をIIOPリクエストと呼ぶこととする。また、それに対する応答をIIOPレスポンスと呼ぶこととする。
【0042】
Webサーバ200は、IIOPリクエストに対するIIOPレスポンスを受信すると、その内容に基づいてHTTPレスポンスを生成して、端末装置21,22,23に送信する。
【0043】
Appサーバ300は、Webサーバ200から受信したIIOPリクエストに基づいてDBサーバ400に依頼すべき処理のクエリを生成し、DBサーバ400に送信する。
ここで、Appサーバ300が生成するクエリは、例えばSQL文によって表記される。以下では、Appサーバ300がDBサーバ400に送信するクエリをDBリクエストと呼ぶこととする。また、それに対する応答をDBレスポンスと呼ぶこととする。
【0044】
Appサーバ300は、DBリクエストに対するDBレスポンスを受信すると、その内容に基づいてIIOPレスポンスを生成してWebサーバ200に送信する。
DBサーバ400は、Appサーバ300から受信したDBリクエストに含まれるSQL文を実行してDBの参照や更新等の処理を実行する。DBサーバ400は、その処理結果に基づいてDBレスポンスを生成し、Appサーバ300に送信する。
【0045】
なお、業務システムにおいてWebサーバ200、Appサーバ300およびDBサーバ400と各層(Web層、App層およびDB層)一台ずつの構成を例示したが、各層にそれぞれ複数台のサーバを設けてもよい。各層に複数のサーバがある場合、各層において負荷分散処理が行われる。
【0046】
階層間を跨って送受信されるメッセージを取得する手法には何通りか考えられるが、第2の実施の形態では、ネットワーク上を流れるIPパケットから情報を取得するものとする。この場合、ポートミラーリング機能を有するスイッチ装置10が用いられる。
【0047】
また、以下では各サーバという場合、Webサーバ200、Appサーバ300およびDBサーバ400を示すものとする。更に、Webサーバ200は、Appサーバ300およびDBサーバ400よりも上位層のサーバであるとする。また、Appサーバ300は、DBサーバ400よりも上位層のサーバであるとする。このような階層関係を定義する情報は、運用管理サーバ100に予め格納される。
【0048】
図3は、第2の実施の形態の運用管理サーバのハードウェア構成を示す図である。運用管理サーバ100は、CPU101、ROM(Read Only Memory)102、RAM(Random Access Memory)103、HDD(Hard Disk Drive)104、グラフィック処理装置105、入力インタフェース106、記録媒体読取装置107および通信インタフェース108を有する。
【0049】
CPU101は、運用管理サーバ100全体を制御する。
ROM102は、運用管理サーバ100上のBIOS(Basic Input / Output System)のプログラムなどを記憶する。
【0050】
RAM103は、CPU101に実行させるOS(Operating System)のプログラムやアプリケーションのプログラムの少なくとも一部を一時的に記憶する。また、RAM103は、CPU101による処理に必要な各種データを記憶する。
【0051】
HDD104は、OSのプログラム、アプリケーションのプログラムを記憶する。また、HDD104はCPU101による処理に必要な各種データを記憶する。なお、HDD104に代えて(または、HDD104と併せて)、SSD(Solid State Drive)など他の種類の記憶装置を用いてもよい。
【0052】
グラフィック処理装置105は、モニタ11と接続される。グラフィック処理装置105は、CPU101からの命令に従って画像をモニタ11の画面に表示させる。
入力インタフェース106は、キーボード12とマウス13と接続される。入力インタフェース106は、キーボード12やマウス13から送られてくる信号をCPU101に送信する。
【0053】
記録媒体読取装置107は、記録媒体14に記憶されたデータを読み取る読取装置である。例えば、運用管理サーバ100が有すべき機能は、その機能の処理内容を記述したプログラムをコンピュータに実行させることで実現できる。そのようなプログラムは、コンピュータ読み取り可能な記録媒体14に記録して配布することができる。また、スイッチ装置10あるいはネットワーク20に接続されたプログラム配信サーバ(図示せず)にそのプログラムを格納してもよい。この場合、運用管理サーバ100は、スイッチ装置10あるいはネットワーク20を介してプログラム配信サーバからプログラムをダウンロードすることができる。
【0054】
記録媒体14としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリを使用できる。磁気記録装置には、HDD、フレキシブルディスク(FD:Flexible Disk)、磁気テープなどがある。光ディスクには、CD(Compact Disc)、CD−R(Recordable)/RW(ReWritable)、DVD(Digital Versatile Disc)、DVD−R/RW/RAMなどがある。光磁気記録媒体には、MO(Magneto-Optical disk)などがある。半導体メモリには、USB(Universal Serial Bus)メモリなどのフラッシュメモリがある。
【0055】
通信インタフェース108は、TP(Twisted Pair)ケーブルや光ケーブル等によってスイッチ装置10と接続される。通信インタフェース108は、スイッチ装置10を介して他の情報処理装置とデータ通信する。また、通信インタフェース108は、各サーバの間で送受信される通信パケットをスイッチ装置10から受信する。
【0056】
なお、Webサーバ200、Appサーバ300、DBサーバ400および端末装置21,22,23も運用管理サーバ100と同様のハードウェア構成により実現できる。
図4は、第2の実施の形態の運用管理サーバの機能構成を示すブロック図である。運用管理サーバ100は、メッセージ解析部110、メッセージ記憶部120、メッセージフロー検出部130、メッセージフロー情報記憶部140、および影響伝搬分析部150を有する。
【0057】
メッセージ解析部110は、スイッチ装置10を介して送受信される通信パケットをスイッチ装置10から受信する。さらにメッセージ解析部110は、受信したパケットを解析し、Webサーバ200、Appサーバ300、DBサーバ400および端末装置21,22,23において通信されたメッセージを再構成する。そしてメッセージ解析部110は、再構成したメッセージをメッセージ記憶部120に格納する。
【0058】
メッセージ記憶部120は、再構成されたメッセージを記憶する。例えばRAM103またはHDD104の記憶領域の一部がメッセージ記憶部120として使用される。
メッセージフロー検出部130は、メッセージ記憶部120に格納されたメッセージから、Webサーバ200、Appサーバ300、およびDBサーバ400で実行されたトランザクション(一連の処理)のメッセージフローを検出する。例えば、メッセージフロー検出部130は、予めメッセージフローモデルを有しており、メッセージフローモデルに合致するメッセージの組み合わせを、メッセージ記憶部120から抽出する。そしてメッセージフロー検出部130は、メッセージフローモデルに合致するメッセージの組み合わせを、メッセージフロー情報としてメッセージフロー情報記憶部140に格納する。
【0059】
メッセージフロー情報記憶部140は、メッセージフロー情報を記憶する。例えばRAM103またはHDD104の記憶領域の一部が、メッセージフロー情報記憶部140として使用される。
【0060】
影響伝搬分析部150は、メッセージフロー情報記憶部140に格納されたメッセージフロー情報に基づいて、異なる階層のサーバ間での影響の伝搬の有無を分析する。そのために、影響伝搬分析部150は、異常有無判定部151、正常時処理時間解析部152、異常時処理時間解析部153、および相関判定部154を有する。
【0061】
異常有無判定部151は、メッセージフロー情報記憶部140に格納されたメッセージフロー情報に基づいて、異常の有無を判定する。例えば異常有無判定部151は、メッセージフロー情報に示される最上位層のサーバ(Webサーバ200)へのリクエストメッセージの入力から、そのサーバからレスポンスメッセージの出力までの時間(処理時間)を計算する。異常有無判定部151は、メッセージフローの処理時間の平均が、所定時間以上の場合、異常ありと判定する。なお、本実施の形態において特に断りのない限り、「平均」とは相加平均(すべて標本の値の和を標本数で除算した値)を意味する。異常有無判定部151は、異常ありと判定した場合、例えば異常があった期間と、異常を検出した旨の情報とを正常時処理時間解析部152と異常時処理時間解析部153とに通知する。
【0062】
正常時処理時間解析部152は、正常に処理されている期間のトランザクションに関するメッセージフロー情報に基づいて、該当するトランザクションを実行する各階層のサーバ間の処理時間の相関関係の有無を解析する。以後、正常に処理されている期間のトランザクションに関するメッセージフロー情報を、正常時メッセージフロー情報と呼ぶこととする。例えば正常時処理時間解析部152は、異常有無判定部151において異常と判定された時からの所定期間を除外した期間内のメッセージフロー情報を、正常時メッセージフロー情報と判断する。
【0063】
なお正常時処理時間解析部152は、正常時処理時間記憶部152aと正常時相関係数記憶部152bとを有している。正常時処理時間記憶部152aは、各階層の区間種別ごとの正常時の処理に関する平均処理時間を記憶する。例えばRAM103またはHDD104の記憶領域の一部が、正常時処理時間記憶部152aとして使用される。正常時相関係数記憶部152bは、各階層の区間種別ごとの正常時の処理に関する相関係数を記憶する。例えばRAM103またはHDD104の記憶領域の一部が、正常時相関係数記憶部152bとして使用される。
【0064】
異常時処理時間解析部153は、異常が発生している期間のトランザクションに関するトランザクション情報に基づいて、該当するトランザクションに関する処理を実行する各階層のサーバ間の処理時間の相関関係の有無を解析する。以後、異常が発生している期間のトランザクションに関するメッセージフロー情報を、異常時メッセージフロー情報と呼ぶこととする。例えば異常時処理時間解析部153は、異常有無判定部151において異常と判定された時から所定期間内のメッセージフロー情報を、異常時メッセージフロー情報と判断する。
【0065】
なお異常時処理時間解析部153は、異常時処理時間記憶部153aと異常時相関係数記憶部153bとを有している。異常時処理時間記憶部153aは、各階層の区間種別ごとの異常時の処理に関する平均処理時間を記憶する。例えばRAM103またはHDD104の記憶領域の一部が、異常時処理時間記憶部153aとして使用される。異常時相関係数記憶部153bは、各階層の区間種別ごとの異常時の処理に関する相関係数を記憶する。例えばRAM103またはHDD104の記憶領域の一部が、異常時相関係数記憶部153bとして使用される。
【0066】
相関判定部154は、正常時メッセージフロー情報に基づいて算出された相関係数により、有意な相関があるか否かを判断する。また相関判定部154は、異常時メッセージフロー情報に基づいて算出された相関係数により、有意な相関があるか否かを判断する。そして相関判定部154は、正常時と異常時との有意な相関の有無に基づいて、異常の影響のサーバ間での伝搬の有無を判定する。例えば、相関判定部154は、2つの階層のサーバの1処理当たりの処理時間に関し、正常時には有意な相関がないと判定され、異常時には有意な相関があると判定された場合、下位層のサーバの異常が上位層のサーバに伝搬しているものと判定する。相関判定部154は、影響伝搬の判定結果を、例えばモニタ11に表示する。
【0067】
図5は、影響伝搬解析処理の手順を示すフローチャートの一例である。以下、図5に示す処理をステップ番号に沿って説明する。
[ステップS1]メッセージ解析部110は、所定期間(例えば30分)、キャプチャしたパケットを取得し、取得したパケットに基づいてメッセージを再構成し、メッセージの通信時刻を測定する。メッセージ解析部110は、例えばメッセージの通信に使用された最初のパケットの取得時刻を、そのメッセージの通信時刻とする。そして、メッセージ解析部110は、通信時刻を付与したメッセージをメッセージ記憶部120に格納する。
【0068】
[ステップS2]メッセージフロー検出部130は、所定期間のメッセージ取得が完了すると、メッセージ記憶部120に格納されたメッセージから、個々のトランザクションを構成するメッセージの組(メッセージフロー)を確定する。そしてメッセージフロー検出部130は、トランザクションに対応するメッセージフローを示すメッセージフロー情報を、メッセージフロー情報記憶部140に格納する。
【0069】
[ステップS3]影響伝搬分析部150の異常有無判定部151が、正常時か異常時かを判定する。
正常時と異常時(処理時間増大時)は、末端装置での応答時間で区別される。この応答時間が、正常時の平均値を大きく超えて長くなった状態が異常時となる。現実のシステム上では全末端ユーザでの正確な応答時間を測定するのは困難な場合が多い。この場合、システムの最上位層のサーバでの応答時間を、端末装置での応答時間とすることができる。
【0070】
第2の実施の形態では、異常有無判定部151は、メッセージフロー情報記憶部140に記憶されている最上位層のサーバでの応答時間が、所定時間を超えていた場合に、異常有りと判定する。例えば異常有無判定部151は、最上位層のサーバでの応答時間が0.1秒を越えた場合に、異常時と判定する。なお異常有無判定部151は、リクエストメッセージを受信してからレスポンスメッセージを送信するまでの時間を、最上位層のサーバでの応答時間とする。
【0071】
正常時であれば、処理がステップS4に進められる。異常時であれば、処理がステップS5に進められる。
[ステップS4]正常時処理時間解析部152は、正常時のサーバ間の相関解析処理を行う。この処理の詳細は、後述する(図10参照)。その後、処理がステップS6に進められる。
【0072】
[ステップS5]異常時処理時間解析部153と相関判定部154とは、異常時のサーバ間の相関解析および因果関係判定処理を行う。この処理の詳細は、後述する(図12、図13参照)。その後、処理がステップS6に進められる。
【0073】
[ステップS6]メッセージ解析部110は、解析を終了するべきか否かを判断する。例えばメッセージ解析部110は、ユーザから解析終了の操作入力が行われた場合、解析を終了するべきと判断する。また、例えばメッセージ解析部110は、予め解析対象期間が指定されていた場合、解析対象期間が終了したときに、解析を終了するべきと判断する。解析を終了するべきと判断された場合、図5に示す処理が終了する。解析を継続するべきと判断された場合、処理がステップS1に進められる。
【0074】
次に、各データ構造例を説明する。まず、業務システムで送受信されるメッセージの流れの具体例を説明する。その後、そのようなメッセージについて管理されるデータ構造例を説明する。
【0075】
図6は、業務システムにおける通信の流れの具体例を示すシーケンス図である。以下、図6に示す処理をステップ番号に沿って説明する。なお、図6では各ステップにつき、そのメッセージに対応する通信パケットをキャプチャしたタイムスタンプ(時:分:秒.マイクロ秒)が表記されている。
【0076】
[ステップS11]Webサーバ200は、端末装置21からHTTPリクエストを受信する(時刻“01:58:19.987360”)。
[ステップS12]Appサーバ300は、Webサーバ200からIIOPリクエストを受信する(時刻“01:58:20.057275”)。
【0077】
[ステップS13]DBサーバ400は、Appサーバ300からDBリクエストを受信する(時刻“01:58:20.120100”)。
[ステップS14]Appサーバ300は、DBサーバ400からDBレスポンスを受信する(時刻“01:58:20.225221”)。
【0078】
[ステップS15〜S20]DBサーバ400は、Appサーバ300からDBリクエストを受信する。そして、Appサーバ300は、それに応じてDBサーバ400からDBレスポンスを受信する。
【0079】
[ステップS21]Webサーバ200は、Appサーバ300からIIOPレスポンスを受信する(時刻“01:58:21.229258”)。
[ステップS22]Webサーバ200は、端末装置21にHTTPレスポンスを送信する(時刻“01:58:21.330431”)。
【0080】
このようにして、各サーバの間で、メッセージが交換される。
なお、端末装置22,23から受け付けるHTTPリクエストに対しても同様の流れでメッセージが交換される。
【0081】
図6に示したメッセージは、各サーバ間では、通信パケットによって通信される。運用管理サーバ100のメッセージ解析部110は、各装置間で送受信される通信パケットをキャプチャして、対応するメッセージを復元する。メッセージを復元する方法として、例えば特開2006−011683号公報に記載の方法を利用することができる。復元されたメッセージは、メッセージ記憶部120に、例えば時系列で記憶される。
【0082】
図7は、メッセージ記憶部に記憶されたメッセージの一例を示す第1の図である。図8は、メッセージ記憶部に記憶されたメッセージの一例を示す第2の図である。メッセージ記憶部120には、復元された複数のメッセージが格納されている。図7、図8では、各メッセージの左に、メッセージ記憶部120内での行番号を示している。メッセージ記憶部120に記憶された各メッセージは、図6に示した各ステップにおけるメッセージの内容を含む。なお、メッセージ記憶部120には、各階層間の処理要求および応答に関連するメッセージ以外のメッセージに関しては図示を省略している。
【0083】
各行に示されるメッセージには、日付フィールド120a、時刻フィールド120b、セッション番号フィールド120c、送信元アドレスフィールド120d、送信先アドレスフィールド120e、コマンド種別フィールド120fおよびメッセージフィールド120gが含まれる。
【0084】
日付フィールド120aは、メッセージをキャプチャした日付を示すフィールドである。
時刻フィールド120bは、メッセージをキャプチャした時刻を示すフィールドである。
【0085】
セッション番号フィールド120cは、業務システムにおけるメッセージの送受信に用いるリソースを管理するためのセッション番号を示すフィールドである。
送信元アドレスフィールド120dは、メッセージの送信元のコンピュータのIP(Internet Protocol)アドレスおよびポート番号を示すフィールドである。
【0086】
送信先アドレスフィールド120eは、メッセージの送信先のコンピュータのIPアドレスおよびポート番号を示すフィールドである。
コマンド種別フィールド120fは、コマンドのリクエスト/レスポンス属性やプロトコル(HTTP、IIOPおよびDBクエリ用等)の種別を示すフィールドである。
【0087】
メッセージフィールド120gは、コマンド種別フィールド120fに示されたリクエスト等のメッセージ内容を示すフィールドである。
以下、メッセージ記憶部120内での行番号を示して説明する。
【0088】
例えば、図6に示すステップS11のHTTPリクエストは1行目に対応する。
日付フィールド120aには、その行に対応する通信パケットをキャプチャした日付として、例えば“2009/09/07”が設定される。
【0089】
また、時刻フィールド120bには、パケットキャプチャした時刻として、例えば“01:58:19.987360”が設定される。
また、セッション番号フィールド120cには、セッション番号として、例えば“132290−1”が表示される。セッション番号フィールド120cには、リクエスト/レスポンスの組で一意の情報が取得されている。これは、同一のセッションを用いてリクエストと、そのリクエストに対応するレスポンスが交換されるためである。例えば、1行目のHTTPリクエストに対応するHTTPレスポンスとして18行目のメッセージを特定できる。
【0090】
1行目のメッセージの送信元アドレスフィールド120dには、HTTPリクエストを送信した端末装置21のIPアドレスとポート番号として、例えば“194.185.39.24:51272”が設定される。
【0091】
1行目のメッセージの送信先アドレスフィールド120eには、HTTPリクエストの送信先であるWebサーバ200のIPアドレスとポート番号として、例えば、“194.23.6.226:10443”が設定される。
【0092】
1行目のメッセージのコマンド種別フィールド120fには、HTTPリクエストに関するメッセージであることを示す情報として、例えば“Request HTTP”という情報が設定される。また、1行目のメッセージのメッセージフィールド120gには、HTTPリクエストの内容として、例えば“POST /cgi−bin/・・・”という情報が設定される。
【0093】
このように、メッセージ記憶部120内のメッセージを参照することで、何れのサーバに対して、どのようなメッセージが送信されたかを検出することができる。
ここで、メッセージ記憶部120内のメッセージ中のその他のIPアドレスと各装置との対応関係は次の通りである。
【0094】
“194.23.7.168”は、Appサーバ300のIPアドレスを示す。“194.23.8.198”は、DBサーバのIPアドレスを示す。“194.185.39.25”は、端末装置22のIPアドレスを示す。例えば、Webサーバ200と端末装置22との間でのHTTPリクエスト/HTTPレスポンスの送受信は、メッセージ記憶部120内の6,20行目のメッセージが対応する。また、Webサーバ200とAppサーバ300との間でのIIOPリクエスト/IIOPレスポンスの送受信は、メッセージ記憶部120内の2,7,17,19行目のメッセージに対応する。また、Appサーバ300とDBサーバ400との間でのDBリクエスト/DBレスポンスの送受信は、メッセージ記憶部120内の3〜5、8〜16行目のメッセージに対応する。
【0095】
なお、日付フィールド120aおよび時刻フィールド120bの情報として、メッセージ解析部110が通信パケットをキャプチャしたタイミングにおけるタイムスタンプを設定するものとしたが、設定方法はこれに限らない。例えば、通信パケット中に各サーバにおけるパケットの生成時刻や送信時刻の情報が含まれている場合には、その日時を日付フィールド120aおよび時刻フィールド120bの情報としてもよい。その場合、各サーバで精度良く時刻同期が行われていることが望ましい。
【0096】
図7,図8に示した時系列のメッセージに基づいて、メッセージフロー検出部130により、一連の処理を示すメッセージフローが検出される。例えば、予め定義されたトランザクションモデルに適合するメッセージの組が、メッセージフローとして検出される。このようなメッセージフローの検出方法として、例えば特開2006−011683号公報に記載の方法を利用することができる。検出されたメッセージフローは、例えば適合するトランザクションモデルに応じて種別が識別される。そして、メッセージフロー検出部130により、種別ごとに分類されたメッセージフローを示すメッセージフロー情報が、メッセージフロー情報記憶部140に格納される。
【0097】
図9は、メッセージフロー情報記憶部のデータ構造例を示す図である。メッセージフロー情報記憶部140には、トランザクションごとのメッセージフロー情報141,142,143・・・が格納されている。なお、図9に示すメッセージフロー情報141,142,143・・・は、第1の実施の形態におけるトランザクション情報2a,2b,2c,・・・の一例である。
【0098】
メッセージフロー情報141には、項番を示す項目、時刻を示す項目、セッション番号を示す項目、プロトコルを示す項目およびRequest/Responseを示す項目が設けられている。各項目の横方向に並べられた情報同士が互いに関連付けられて、1つのメッセージに関する情報を示す。
【0099】
項番を示す項目には、レコードを識別する番号が設定される。時刻を示す項目には、メッセージに対応する通信パケットをキャプチャした時刻が設定される。セッション番号を示す項目には、メッセージを送信するために用いられたセッションを識別するセッション番号が設定される。プロトコルを示す項目には、メッセージが何れのプロトコルによるものかを示す情報が設定される。Request/Responseを示す項目には、そのメッセージがリクエスト/レスポンスの何れのものであるかを示す情報が設定される。
【0100】
メッセージフロー情報141には、例えば、項番が“1”、時刻が“01:58:19.987”、セッション番号が“132290”、プロトコルが“HTTP”、Request/Responseが“Request”という情報が設定される。
【0101】
このレコードは、メッセージ記憶部120内の1行目のメッセージに対応する。ただし、時刻にはミリ秒までを設定している。この点、更に短い時間単位(例えば、マイクロ秒単位)で時刻を取得してもよい。また、セッション番号には図8に示したセッション番号フィールド120cに含まれる情報のうち、リクエスト/レスポンスの組を特定するために必要な最低限の情報を設定している。以下、セッション番号という場合、メッセージフロー情報141のセッション番号を示す項目に設定された情報を示すものとする。
【0102】
メッセージフロー情報には、各メッセージの通信時刻が設定されている。すなわち、キャプチャしたパケットに基づいて、メッセージフローを構成する各メッセージの通信時刻が測定されている。また、ある階層へ処理要求のメッセージが到着して、その処理に関連して下位層へ処理を要求するメッセージが送信された場合に、それらの間の関連付けは、メッセージフロー内の連続するメッセージに基づいて判断できる。すなわち、プロトコル「IIOP」のリクエストメッセージの後に、プロトコル「DB」のリクエストメッセージがあれば、「IIOP」のリクエストメッセージに関連して「DB」のリクエストメッセージが出力されたことが分かる。また、上位層のリクエストメッセージからレスポンスメッセージまでの時間帯内の下位層の各リクエストメッセージは、その上位層のリクエストメッセージに応じて実行された処理に関連して実行されていることが分かる。
【0103】
このように第2の実施の形態では、ネットワーク上を流れるIPパケットをキャプチャして、そこからメッセージ送受の情報を取得することで、一連の処理を示すメッセージフロー情報を生成している。この方法の利点としては、観測対象のシステムに余計な負荷を与えないので正確な挙動を観測できるということがある。また、1か所のサーバでキャプチャしてその際にタイムスタンプを付与できるのでサーバ間の時計誤差を気にしなくてよいという利点もある。
【0104】
なお第2の実施の形態では、各メッセージ上にそれらを関連付ける情報が付加されてない場合を想定している。そのため、メッセージフロー検出部130によるトランザクションモデルとの適合の有無の判定などが行われている。他方、各メッセージ上にそれらを関連付ける情報が付加されている場合もあり得る。例えば、最上位のサーバ(Webサーバ200)に入力されたリクエストメッセージに応じて実行されるトランザクションの識別情報が、そのトランザクションで通信される各メッセージに付与しているような場合である。このような場合、メッセージフロー検出部130は、同一の識別情報が付与されたメッセージを抽出して、メッセージフローを生成することができる。
【0105】
なお、本実施の形態では、特開2006−011683号公報に記載の方法を利用してメッセージフロー情報を作成しているが、メッセージフロー情報の作成手法は特開2006−011683号公報に記載の方法に限定されるものではない。すなわち、個々の業務処理に関する複数階層間を跨った一連のメッセージフローを測定し、その中での各メッセージの正確な送受時刻を取得する手法は何通りか考えられる。
【0106】
他の方法としては、例えば、Web3階層システムを構成する各Webサーバ200、Appサーバ300、およびDBサーバ400でファイルなどに記録したメッセージ送信/受信ログを利用する方法がある。この方法を適用する場合、Webサーバ200、Appサーバ300、およびDBサーバ400が、受信メッセージとその処理に関連した送信メッセージの関連付けを行い、ログ情報としてHDDなどの記録装置に記録する。運用管理サーバ100は、Webサーバ200、Appサーバ300、およびDBサーバ400から、記録した情報を取得する。この手法では、Webサーバ200、Appサーバ300、およびDBサーバ400が、受信したリクエストメッセージと、そのリクエストメッセージに応じた処理により下位の層のサーバへ出力したリクエストメッセージとを関連付けている。そのため、運用管理サーバ100では、1つのトランザクションを構成する上位層のメッセージと下位層のメッセージとを容易に関連付けることができ、メッセージフローの作成が容易となる。ただし、この方法を適用する場合、Webサーバ200、Appサーバ300、およびDBサーバ400各サーバの内部時計を、同期させておくことが好ましい。
【0107】
図9に示すようなメッセージフロー情報に基づいて、影響伝搬分析部150によって階層の異なるサーバ間の影響伝搬の有無が分析される。
影響伝搬分析部150の異常有無判定部151は、処理の異常の有無を判定する。例えば、異常有無判定部151には、端末装置21〜23に対する最上位層のサーバの平均応答時間の閾値が設定されている。異常有無判定部151は、メッセージフロー情報記憶部140内の各メッセージフロー情報における最上位の層のサーバが端末装置からリクエストを受け付けてから、応答を返すまでの応答時間を計算する。図9のメッセージフロー情報141の例であれば、項番12の時刻から項番1の時刻を減算することで、メッセージフロー情報141で示されるトランザクションの応答時間が計算される。異常有無判定部151は、所定期間内に実行されたトランザクションの平均応答時間が、応答時間の閾値を超えていた場合、異常があると判定する。
【0108】
なお、トランザクションの応答時間以外の情報に基づいて異常の判定を行ってもよい。例えば、各階層のサーバでの平均処理時間の閾値を設定しておいてもよい。その場合、異常有無判定部151は、何れかの層のサーバにおいて、処理時間が閾値を超えた場合、異常有りと判定する。
【0109】
異常有無判定部151は、異常の有無を、影響伝搬分析部150内の他の要素に通知する。例えば、異常有無判定部151は、異常を検出した期間と異常を検出していない期間とを正常時処理時間解析部152と異常時処理時間解析部153とに通知する。
【0110】
本実施の形態では、処理時間が短い正常時のメッセージフロー情報から計算した相関係数と、異常時(処理時間増大時)のメッセージフロー情報から計算した相関係数とに基づいて影響伝搬の有無が判定される。正常時の相関係数は、正常時処理時間解析部152によって計算される。異常時の相関係数は、異常時処理時間解析部153によって計算される。
【0111】
まず、正常時の相関関係を示す値の計算手順について説明する。
図10は、正常時の処理時間解析処理手順を示すフローチャートの一例である。以下、図10に示す処理をステップ番号に沿って説明する。
【0112】
[ステップS31]正常時処理時間解析部152は、階層ごとに、ステップS32〜S39の処理を実行する。第2の実施の形態では、階層は、HTTP層、IIOP層、DB層の3階層である。そこで、正常時処理時間解析部152は、未処理の階層を1つ選択する。
【0113】
[ステップS32]正常時処理時間解析部152は、トランザクションごとにステップS33の処理を実行する。すなわち正常時処理時間解析部152は、メッセージフロー情報記憶部140に格納されているメッセージフローで示される未処理のトランザクションを1つ選択する。
【0114】
[ステップS33]正常時処理時間解析部152は、選択したトランザクションに関して、時間軸上の区間別の処理時間を算出する。第2の実施の形態では、正常時処理時間解析部152は、各階層において、メッセージの通信時刻に基づき、処理時間を4つの区間種別に分けて算出する。
【0115】
図11は、1トランザクションにおけるサーバの処理区間の分類例を示す図である。図11には、1つのトランザクションにおける下位2層の各サーバの処理を示している。上位層のサーバは、例えばAppサーバ300である。下位層のサーバは、例えばDBサーバ400である。
【0116】
上位層のサーバでは、受信したリクエストメッセージに応じて処理が実行され、その処理中に下位層のサーバに対して3回の問い合わせが行われている。上位層のサーバは、下位層のサーバに問い合わせを行い、その応答を待っている間は待ち時間であり、処理は実行されていない。そのため、上位層のサーバでは、4回に分けて処理31〜34が実行されている。
【0117】
一方、下位層のサーバでは、上位層のサーバから問い合わせ(リクエストメッセージ)を受け取るごとに、処理41〜43が実行されている。
第2の実施の形態では、上位層のサーバの処理時間を、以下の4つ区間種別に分類する。
【0118】
・第1種区間
第1種区間は、「問い合わせ開始前」の区間である。すなわち、上位層のサーバにおける処理開始時点から、下位層へ最初の問い合わせのリクエストメッセージを送信するまでの時間が、第1種区間である。図11の例では、処理31の実行されている時間が、第1種区間に該当する。
【0119】
・第2種区間
第2種区間は、「複数問い合わせ間」の区間である。すなわち、下位層のサーバへの問い合わせのリクエストメッセージに対応するレスポンスメッセージを受け取ってから、下位層のサーバへ次の問い合わせを発行するまでの時間が、第2種区間である。図11の例では、処理32,33が実行されている時間が、第2種区間に該当する。なお、1つのトランザクション内に第2種区間が複数存在する場合は、例えば1回あたりの処理時間の平均を取ることで、第2種区間の処理の処理時間とすることができる。
【0120】
・第3種区間
第3種区間は、「問い合わせ完了後」の区間である。すなわち、下位層のサーバへの最後の問い合わせのリクエストメッセージに対応するレスポンスメッセージを受け取ってから、上位層における処理を終了するまでの時間が、第3種区間である。図11の例では、処理34が実行されている時間が、第3種区間に該当する。
【0121】
なお、下位層へ対する問い合わせが1回しかないときには、「複数問い合わせ間」の区間(第2種区間)は存在しない。また、最下位層のサーバ(図11の下位層のサーバ)においては、そこより下位への問い合わせは存在しないので、このような3つの区間が存在しない。その場合は、代わりに最下位層のサーバにおける各処理41〜43の処理時間を計算する。最下位層のサーバにおける処理の処理時間は、上位階層からの処理要求が複数回実施される場合は複数存在することになる。この場合は、処理1回あたりの平均値を、最下位層における処理時間とする。
【0122】
また、最下位層のサーバの処理時間は、上位層のサーバの区間種別とは別の区間種別に分類される。
・第4種区間
第4種区間は、「処理時間全体」の区間である。最下位層のサーバでは、上位層のサーバからのリクエストメッセージを受信してから、上位層のサーバにレスポンスメッセージを応答するまで、他のサーバの処理待ちの時間が挟まらないため、第1〜第3種区間は存在しない。そこで、リクエストメッセージを受信してからレスポンスメッセージを応答するまでの処理時間を、第4種区間とする。例えば、図11であれば、処理41〜43が実行されている時間が、第4種区間に相当する。
【0123】
図10に戻り、ステップS34以降の処理を説明する。
[ステップS34]正常時処理時間解析部152は、すべてのトランザクションについてステップS33の処理が完了したか否かを判断する。正常時処理時間解析部152は、未処理のトランザクションがある場合、処理をステップS32に進める。正常時処理時間解析部152は、すべてのトランザクションについてステップS33の処理が完了した場合、処理をステップS35に進める。
【0124】
[ステップS35]正常時処理時間解析部152は、区間種別(第1〜第4種区間)ごとに、ステップS36,S37の処理を実行する。すなわち正常時処理時間解析部152は、未処理の区間種別から、区間種別を1つ選択する。
【0125】
[ステップS36]正常時処理時間解析部152は、ステップS35で選択した区間種別の平均処理時間を求める。すなわち正常時処理時間解析部152は、所定の時間帯ごとに、選択した階層の選択した区間種別の処理に関する処理時間の平均値(平均処理時間)を計算する。
【0126】
この際、正常時処理時間解析部152は、例えば時系列推移を判定するための1分ごとの平均処理時間と、正常時と異常時との処理時間の増加率を計算するための解析期間全体(例えば14分)における平均処理時間とを算出する。
【0127】
[ステップS37]正常時処理時間解析部152は、正常時の平均処理時間を、正常時処理時間記憶部152aに格納する。
[ステップS38]正常時処理時間解析部152は、すべての区間種別についてステップS36,S37の処理が完了したか否かを判断する。正常時処理時間解析部152は、未処理の区間種別がある場合、処理をステップS35に進める。正常時処理時間解析部152は、すべての区間種別に対する処理が完了した場合、処理をステップS39に進める。
【0128】
[ステップS39]正常時処理時間解析部152は、代表区間の処理時間の時系列推移を求める。ここで正常時処理時間解析部152は、第2の実施の形態では以下のようにして代表区間を決定する。
【0129】
正常時処理時間解析部152は、「複数問い合わせ間」の区間(第2種区間)がある場合、「複数問い合わせ間」を最優先に選択し、代表区間に決定する。また正常時処理時間解析部152は、「複数問い合わせ間」区間が存在しない場合は「問い合わせ完了後」区間の処理時間を代表区間とする。さらに正常時処理時間解析部152は、「複数問い合わせ間」区間と「問い合わせ完了後」区間とのいずれも存在しない場合(例えば、最下位層の場合)は、個別に実行されたすべて処理時間全体の区間(第4種区間)を代表区間とする。
【0130】
時系列推移の計算に関し、例えば正常時処理時間解析部152は、1分間隔で解析対象時間を分割し、1分間内で実行された処理に関する処理時間の平均値を求める。そして正常時処理時間解析部152は、1分間ごとの処理時間の平均値が、所定期間(例えば30分間)にどのように変化したか求める。
【0131】
ここで、処理時間の時系列推移の粒度と長さについて考察する。
・時系列推移の粒度
第2の実施の形態では、平均値を1分ごとに集計して、1分ごとの平均処理時間の時系列推移を利用している。メッセージ送受の時刻は1ミリ秒以下の精度で測定できているので、精度としてはそのレベルで集計しているが、集計する単位時間はそんなに細かくする必要はなく、1分単位程度で十分である。集計の単位時間を細かくしすぎると、相関を求める際の計算量が大きくなったり、処理時間の一時的な増減に相関係数が影響を受けたりといった悪影響が考えられる。逆に単位時間を大きくし過ぎると、短時間しか持続しなかったボトルネックの場合に正しく判定できなくなってしまう。
・時系列推移の長さ
解析対象とする時系列の長さはあまり短いと、例え相関係数が高くてもそれが統計的に有意であると言えなくなる。そこで、最低限、統計的に有意な解析結果が得られる程度の長さの時系列推移を求める。他方、時系列の長さが長すぎると、異常時(処理時間増大期間)の時系列推移内に、正常時の情報を含み、正しく判定できなくなってしまう可能性が大きくなる。これらのことを考慮すると、10〜30程度の標本数となるように時系列推移の長さ(解析対象期間)を決定するのが適当である。後述する図16に示す例では1分ごとの集計で、14分間の時系列推移を利用している。この場合の標本数は14である。
【0132】
[ステップS40]正常時処理時間解析部152は、すべての階層についてステップS32〜S39の処理が完了したか否かを判断する。正常時処理時間解析部152は、未処理の階層がある場合、処理をステップS31に進める。また正常時処理時間解析部152は、全ての階層について処理が完了している場合、処理をステップS41に進める。
【0133】
[ステップS41]正常時処理時間解析部152は、階層の組み合わせごとに、階層間の時系列推移の相関係数を算出する。
ここで相関係数とは、2つの変数の間の相関(類似性の度合い)を示す数値である。一つの階層の処理時刻の時系列推移が(x1,x2,x3,...,xn)、一つの階層の処理時刻の時系列推移が(y1,y2,y3,...,yn)のとき、それらの間の相関係数rxyは以下のように計算される。
【0134】
【数1】
【0135】
[ステップS42]正常時処理時間解析部152は、階層間の相関係数を正常時相関係数記憶部152bに格納する。その後、正常時の処理が終了する。
以上のようにして、正常時の階層間の相関係数が算出される。
【0136】
次に、異常時(処理時間増大時)の相関係数解析処理について説明する。
図12は、異常時の処理時間解析処理の手順の一例を示すフローチャートの前半である。以下、図12に示す処理をステップ番号に沿って説明する。
【0137】
[ステップS51]異常時処理時間解析部153は、処理時間が増大した階層ごとに、ステップS52〜S63(図13参照)の処理を実行する。すなわち異常時処理時間解析部153は、処理時間が増大した階層のうち、未処理の階層を1つ選択する。なお異常時処理時間解析部153は、処理時間が増大した階層に限らず、すべての階層に関して、ステップS52〜S62の処理を実行することもできる。
【0138】
[ステップS52]異常時処理時間解析部153は、ステップS51で選択された階層に関し、トランザクションごとに、ステップS53の処理を実行する。すなわち異常時処理時間解析部153は、メッセージフロー情報記憶部140に格納されているメッセージフローで示される未処理のメッセージフローを1つ選択する。
【0139】
[ステップS53]異常時処理時間解析部153は、ステップS52で選択したトランザクションに関して、区間別の処理時間を算出する。この処理の詳細は、正常時の処理時間解析処理におけるステップS33(図10参照)と同様である。
【0140】
[ステップS54]異常時処理時間解析部153は、すべてのトランザクションについてステップS53の処理が完了したか否かを判断する。異常時処理時間解析部153は、未処理のトランザクションがある場合、処理をステップS52に進める。異常時処理時間解析部153は、すべてのトランザクションについて処理が完了した場合、処理をステップS55に進める。
【0141】
[ステップS55]異常時処理時間解析部153は、区間種別(第1〜第4種区間)ごとに、ステップS56,S57の処理を実行する。すなわち異常時処理時間解析部153は、未処理の区間種別を1つ選択する。
【0142】
[ステップS56]異常時処理時間解析部153は、ステップS55で選択した区間種別の平均処理時間を求める。すなわち異常時処理時間解析部153は、所定の時間帯ごとに、選択した階層の選択した区間種別の処理に関する処理時間の平均値(平均処理時間)を計算する。平均処理時間を計算する所定の時間帯は、例えば、解析対象期間全体の時間帯と、解析対象期間を1分間隔で分割して得られる時間帯である。計算結果は、異常時相関係数記憶部153bに格納される。
【0143】
[ステップS57]異常時処理時間解析部153は、平均処理時間の正常時からの増加率を計算する。具体的には、異常時処理時間解析部153は、正常時処理時間解析部152からステップS36で求め正常時の平均処理時間を取得する。そして異常時処理時間解析部153は、取得した正常時の平均処理時間に対するステップS56で求めた異常時の平均処理時間の増加率を求める。
【0144】
平均処理時間の増加率の計算は、4つの区間について計算される。すなわち、異常時処理時間解析部153は、第1〜第4種区間について、正常時と異常時の区間ごとの平均処理時間を比較する。具体的には、4つの区間それぞれの平均処理時間の増加率は、次の式で計算される。
平均処理時間の増加率=異常時の平均処理時間/正常時の平均処理時間
異常時処理時間解析部153は、ステップS56で算出した平均処理時間とステップS57で算出した増加率とを、異常時処理時間記憶部153aに格納する。
【0145】
[ステップS58]異常時処理時間解析部153は、すべての区間種別についてステップS56,S57の処理が完了したか否かを判断する。異常時処理時間解析部153は、未処理の区間種別があれば、処理をステップS55に進める。異常時処理時間解析部153は、すべての区間種別について処理が完了していれば、処理をステップS61(図13参照)に進める。
【0146】
図13は、異常時の処理時間解析処理の手順の一例を示すフローチャートの後半である。以下、図13に示す処理をステップ番号に沿って説明する。
[ステップS61]相関判定部154は、第1〜3種区間に分類される処理を有する階層において、「問い合わせ開始前」の区間(第1種区間)だけが処理時間が増加していて、他の区間(第2,第3種区間)の処理時間が増加していないという条件が満たされるか否かを判定する。すなわち、相関判定部154は、ステップS57(図12参照)による各区間の増加率の計算の結果、増加率が一定の閾値(例えば2.0)より大きい値であれば、その区間の処理時間が増加していると判断する。そこで相関判定部154は、「問い合わせ開始前」の区間(第1種区間)の増加率が一定の閾値より大きく、かつ「複数問い合わせ間」の区間(第2種区間)と「問い合わせ完了後」の区間(第3種区間)の増加率が共に一定の閾値以下であるという条件を判断する。この条件が満たされた場合、相関判定部154は、「問い合わせ開始前」の区間のみ処理時間が増加していると判断する。
【0147】
「問い合わせ開始前」の区間のみ処理時間が増加している場合、処理がステップS62に進められる。そうでない場合、処理がステップS63に進められる。
なお、ステップS61の判定は「問い合わせ開始前」区間が存在しない階層(最下層)においては実施されず、処理がステップS63に進められる。
【0148】
[ステップS62]相関判定部154は、現在処理している階層の1つ下位層のサーバにボトルネック原因となる異常が生じていると判定する。判定結果は、例えばモニタ11に表示される。その後、処理が終了する。
【0149】
図14は、「問い合わせ開始前」区間のみ処理時間が増加した状況を示す図である。図14の例は、図11に示したトランザクションにおける処理31の処理時間のみが増加している。図14に示すように、処理時間が増加しているのが「問い合わせ開始前」区間だけで、他の2つの区間の処理時間が増加していないならば、その階層の処理時間の増加はサーバの負荷増大によるものではないと推定できる。これは、「問い合わせ開始前」区間だけの処理時間の増加であれば、上位層のサーバにおいて、下位層のサーバへの問い合わせを開始するためにコネクション待ちが発生しているだけと考えられるためである。
【0150】
例えば、サーバ間に予め複数のコネクションを接続しておき、リクエストメッセージを送信する際には、サーバは、その時点で使用していないコネクションを用いて送信するという通信形態がある。この場合、送信側のサーバは、用意された複数のコネクションがすべて使用中であれば、いずれかのコネクションが空くまで待つ。このようなコネクションの空き待ちの時間は、送信側(上位層)のサーバが原因で発生している場合より、受信側(下位層)のサーバにおけるリクエストメッセージに応じた処理の遅延により生じる場合が多い。そこで異常時処理時間解析部153は、第1〜3種区間の3つの区間それぞれの増加率のうち、「問い合わせ開始前」の区間の増加率しか一定の閾値(例えば2.0)を超えなかった場合は、1つ下位層のサーバにボトルネックなどの問題があると判定する。
【0151】
図13に戻り、ステップS63以降の処理について説明する。
[ステップS63]異常時処理時間解析部153は、「複数問い合わせ間」の区間(第2種区間)の処理時間の時系列推移を求める。この処理の詳細は、正常時の相関解析処理におけるステップS39(図10参照)と同様である。
【0152】
[ステップS64]異常時処理時間解析部153は、処理時間が増大したすべての階層についてステップS52〜S62の処理が完了しかた否かを判断する。異常時処理時間解析部153は、処理時間が増大した階層のうち未処理の階層がある場合、処理をステップS51(図12参照)に進める。異常時処理時間解析部153は、処理時間が増大したすべての階層について処理が完了した場合、処理をステップS65に進める。
【0153】
[ステップS65]異常時処理時間解析部153は、処理時間が増大している2つの階層の代表区間の処理時間の時系列推移について、それらの時系列推移の相関係数を求める。例えば、異常時処理時間解析部153は、各階層の代表区間における処理時間の増加率が一定の閾値(例えば2.0)より大きい場合、その階層のサーバの処理時間が増大していると判断する。次に異常時処理時間解析部153は、処理時間が増大している2つの階層の組を作成し、作成した組に属する階層のサーバの代表区間の処理時間に関する時系列推移の相関係数を算出する。
【0154】
異常時処理時間解析部153は、算出した相関係数を異常時相関係数記憶部153bに格納する。
[ステップS66]相関判定部154は、ステップS65で算出した異常時の相関係数が所定の閾値(例えば0.66)より大きいか否かを判断する。異常時の相関係数が閾値より大きければ,処理がステップS68に進められる。異常時の相関係数が閾値以下であれば、処理がステップS67に進められる。
【0155】
[ステップS67]相関判定部154は、2つの階層の処理時間が増大したことに関し、因果関係はないと判断する。判断結果は、例えばモニタ11に表示される。その後、処理が終了する。
【0156】
[ステップS68]相関判定部154は、ステップS65で異常時の相関係数を算出した2つの階層の組に関し、ステップS41(図10参照)で算出した正常時の相関係数が所定の閾値(例えば0.66)より大きいか否かを判断する。正常時の相関係数が閾値より大きければ,処理がステップS69に進められる。正常時の相関係数が閾値以下であれば、処理がステップS70に進められる。
【0157】
[ステップS69]相関判定部154は、2つの階層の処理時間が増大したことに関し、因果関係は不明であると判定する。すなわち、正常時と異常時との相関係数が共に閾値より大きい場合、サーバの問題ではなく、端末装置からWeb3階層システムに要求された処理数が過大である場合があり得る。このような場合、例えば、処理時間が増大した各階層におけるサーバの機能増強などの対策が有効となる。他方、下位層のサーバの異常が、上位層のサーバの処理時間の増大を引き起こしており、障害対策としては下位層のサーバに関してのみ行えばよい場合もありうる。そこで第2の実施の形態では、正常時と異常時との相関係数が共に閾値より大きい場合、相関判定部154は、2つの階層の処理時間が増大したことに関し、因果関係が不明と判断する。判断結果は、例えばモニタ11に表示される。その後、処理が終了する。
【0158】
[ステップS70]相関判定部154は、2つの階層のサーバの処理時間が増大したことに関し、因果関係があると判定する。判断結果は、例えばモニタ11に表示される。その後、処理が終了する。
【0159】
以上のようにして、階層間のサーバの処理時間の増大に関する因果関係の有無が判定される。因果関係ありと判定された場合、システムの管理者は、所持時間が増大した階層の各サーバのうち、下位層のサーバの処理時間の増大原因を優先的に調査する。そして管理者は、下位層のサーバの処理時間の増大原因を除去する。すると、下位層のサーバの処理時間が正常状態に戻ると共に、因果関係を有している上位層のサーバの処理時間も正常状態に戻るものと考えられる。
【0160】
次に、第2の実施の形態に示した処理による解析例を具体的に説明する。
正常時の処理としては、まずトランザクションごとの、区間種別ごとの処理時間が計算される(図10のステップS33)。例えば、区間ごとの処理時間の計算を、図6に示したトランザクションの階層ごとの処理時間の計算に適用すると、図9に示したメッセージフロー情報に基づいて、正常時処理時間解析部152において以下のような計算が行われる。
【0161】
まず、図6、図9に示したWebサーバ200の処理時間は、問い合わせ開始前(第1種区間)と問い合わせ完了後(第3種区間)とで構成される。第2種の区間がないため、第3種区間の処理時間が、Webサーバ200の平均処理時間として採用され、以下のような式で計算される。
【0162】
・第1種区間(問い合わせ開始前)の処理時間の計算
(01:58:20.057 - 01:58:19.987) / 1 = 0.070(s)
・第3種区間(問い合わせ完了後)の処理時間の計算
(01:58:21.330 - 01:58:21.299) / 1 = 0.031(s)
Appサーバ300の処理時間は、以下のような式で計算される。
【0163】
・第1種区間(問い合わせ開始前)の処理時間の計算
01:58:20.120 - 01:58:20.057 = 0.063(s)
・第2種区間(複数問い合わせ間)の処理時間の計算
図6の例では、第2種区間に該当する処理が3回実行されており、3回の処理時間の平均が計算される。
((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)
・第3種区間(問い合わせ完了後)の処理時間の計算
01:58:21.299 - 01:58:21.220 = 0.079(s)
DBサーバ400は、最下位層に属し、他のサーバへの問い合わせを行っていない。そのため処理時間全体(第4種区間)のみが存在する。図6の例では、第4種区間に相当する処理が4回実行されており、4回の処理時間の平均が計算される。
【0164】
・第4種区間(処理時間全体)の処理時間の計算
((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)
これらは、端末装置からの1つの処理要求に応じて実行された1つのトランザクションに関してのみ計算した値である。実際のシステムでは多数の処理要求に応じたトランザクションが同じ同時間帯に重複して処理されている。そこで正常時処理時間解析部152は、各トランザクションによって求めた各階層の区間ごとの処理時間の平均値を算出する(図10のステップS36)。算出された平均処理時間は、正常時処理時間解析部152が有する正常時処理時間記憶部152aに格納される。
【0165】
図15は、正常時平均処理時間記憶部のデータ構造の一例を示す図である。正常時処理時間記憶部152aには、例えば処理時間管理テーブル152cが格納されている。処理時間管理テーブル152cには、階層、区間、および平均処理時間の欄が設けられている。
【0166】
階層の欄には、階層の識別子が設定される。図15の例では、上位の層から順に、昇順の番号が振られている。最上位のWebサーバ200が属する階層は「階層1」である。Appサーバ300が属する階層は「階層2」である。DBサーバ400が属する階層は「階層3」である。
【0167】
区間の欄には、各階層内での区間種別が設定される。図6に示すようなトランザクションの場合、最上位の「階層1」の階層には、「問い合わせ開始前」の区間(第1種区間)と「問い合わせ完了後」の区間(第3種区間)とが存在する。「階層2」の階層には、「問い合わせ開始前」の区間(第1種区間)、「複数問い合わせ間」の区間(第2種区間)、および「問い合わせ完了後」の区間(第3種区間)が存在する。最下位の「階層3」の階層には、「処理時間全体」の区間(第4種区間)が存在する。
【0168】
平均処理時間の欄には、対応する階層における対応する区間の処理時間の平均値が秒単位で設定される。
図15に示す処理時間管理テーブル152cのようなデータが、例えば1分間隔で14回取得され、その都度、正常時処理時間記憶部152aに、新たな処理時間管理テーブルが追加格納される。
【0169】
正常時処理時間解析部152は、正常時処理時間記憶部152aに格納された平均処理時間に基づいて、正常時の処理時間の時系列推移を、各階層の区間種別ごとに求める(図10のステップS39)。
【0170】
図16は、正常時の処理時間の時系列推移を示す図である。図16では、横軸に時刻、縦軸に平均処理時間を取ったグラフによって、正常時の処理時間の時系列推移を示している。
【0171】
図16には、Appサーバ300とDBサーバ400との時系列推移が示されている。なお、図16の例では、「複数問い合わせ間」の区間(第2種区間)が存在する。そのためステップS39の処理では、「複数問い合わせ間」の区間に関してのみ、時系列推移が解析される。ただし、図16では、「問い合わせ開始前」の区間(第1種区間)や「問い合わせ完了後」の区間(第3種区間)の時系列推移についても参考のために示している。
【0172】
時系列推移が算出されると、上位層と下位層との間の相関係数が算出される(図10のステップS41)。そして、算出された相関係数が、正常時相関係数記憶部152bに格納される。
【0173】
図17は、正常時相関係数記憶部のデータ構造の一例を示す図である。正常時相関係数記憶部152bには、例えば相関係数管理テーブル152dが格納されている。相関係数管理テーブル152dには、上位層、下位層、および相関係数の欄が設けられている。
【0174】
上位層の欄には、相関関係の比較対象とされる2つの階層のうちの、上位層の識別子と代表区間の区間種別とが設定される。図17の例では、「:(コロン)」で区切った左側に階層の識別子が設定され、右側に代表区間の区間種別が設定されている。
【0175】
下位層の欄には、相関関係の比較対象とされる2つの階層のうちの、下位層の識別子と代表区間の区間種別とが設定される。図17の例では、「:(コロン)」で区切った左側に階層の識別子が設定され、右側に代表区間の区間種別が設定されている。
【0176】
相関係数の欄には、上位層と下位層との代表区間同士の相関関係を示す相関係数が設定される。
このようにして正常時の階層間の相関係数が計算され、保存される。その後、処理時間の所定値以上の増加が発生すると、異常時の相関解析処理が実行される。
【0177】
異常時相関解析処理では、正常時と同様に、個々のトランザクションに関して、区間種別ごとの処理時間が算出される(図12のステップS53)。その後、区間種別ごとの平均処理時間が計算され、さらに平常からの平均処理時間の増加率が計算される(図12のステップS56,S57)。平均処理時間と増加率との計算結果は、異常時処理時間記憶部153aに格納される。
【0178】
図18は、異常時処理時間記憶部のデータ構造の一例を示す図である。異常時処理時間記憶部153aには、例えば処理時間管理テーブル153cが格納されている。処理時間管理テーブル153cには、階層、区間、平均処理時間、および増加率の欄が設けられている。
【0179】
階層の欄には、階層の識別子が設定される。区間の欄には、各階層内での区間種別が設定される。平均処理時間の欄には、対応する階層における対応する区間の処理時間の平均値が秒単位で設定される。
【0180】
増加率の欄には、正常時の平均処理時間に対する異常時の平均処理時間の増加率が設定される。
図18に示す処理時間管理テーブル153cのようなデータが、例えば1分間隔で14回取得され、その都度、異常時処理時間記憶部153aに、新たな処理時間管理テーブルが追加格納される。
【0181】
ここで、図18に示した増加率を参照すると、「階層1」に関しては、処理時間の増加率は所定の閾値(この例では2.0)を超えていない。一方、「階層2」、「階層3」に関しては、処理時間の増加率が閾値を超えている。
【0182】
このとき、「階層2」に関し、「問い合わせ開始前」の区間(第1種区間)のみが処理時間が増加しているのかどうかが判断される(図13のステップS61)。図18の例では、すべての区間において処理時間が増加しているものと判断され、処理がステップS63に進められる。なお、「階層3」に関しては、「問い合わせ開始前」の区間(第1種区間)が存在しないため、図13のステップS61における判断処理は行われない。
【0183】
図19は、異常時の処理時間の時系列推移を示す図である。図19では、横軸に時刻、縦軸に平均処理時間を取ったグラフによって、異常時の処理時間の時系列推移を示している。
【0184】
図19には、Appサーバ300とDBサーバ400と時系列推移を示している。なお、図19の例では、「複数問い合わせ間」の区間(第2種区間)が代表区間として時系列推移が解析されるが、「問い合わせ開始前」の区間(第1種区間)や「問い合わせ完了後」の区間(第3種区間)の時系列推移についても参考のために示している。
【0185】
このような時系列推移に基づいて、異常時処理時間解析部153により、処理時間が増大した複数の階層間で、代表区間の処理時間の時系列推移同士の相関係数が算出される(図13のステップS65)。そして、算出された相関係数が、異常時相関係数記憶部153bに格納される。
【0186】
図20は、異常時相関係数記憶部のデータ構造の一例を示す図である。異常時相関係数記憶部153bには、例えば相関係数管理テーブル153dが格納されている。相関係数管理テーブル153dには、上位層、下位層、および相関係数の欄が設けられている。各欄には、図17に示した正常時相関係数記憶部152b内の相関係数管理テーブル152d内の同名の欄と同種の情報が設定される。
【0187】
なお、異常時においては、処理時間の増加率が所定値より大きい階層間での相関係数が算出される。そのため、図20の例では、「階層2」と「階層3」との間の相関係数のみが算出されている。
【0188】
そして、相関判定部154によって、正常時の相関係数と異常時の相関係数とに基づいて、影響伝搬の有無が判定される。異常時において相関係数が閾値より大きく(図13のステップS66でYES判定)、かつ正常時において相関係数が閾値以下(図13のステップS68でNO判定)の場合に、影響伝搬があると判定する。
【0189】
ここで、複数の階層間の相関係数が一定の閾値を超えている場合は、その両階層の処理時間の増減には有意な相関があると判定している。有意な相関の有無を判定するための閾値は、比較する時系列の長さ(標本数)から統計学的に決定することができる。
【0190】
得られた相関係数が統計学的に有意であると証明する為にはt検定を行えばよい。母集団の相関係数=0と仮定(帰無仮説)すると、標本の相関係数rは、式(2)に示すtについて、自由度n−2のt分布に従う(nは標本数)。
【0191】
【数2】
【0192】
t分布によれば、標本数14の場合の1%有意水準の限界値は0.661である。すなわち図16、図19に示すように標本数が14の場合は、相関係数が0.661以上ならば、1%の有意水準で母相関係数が0でない(帰無仮説が棄却される)ことが分かる。これは、相関係数が0.661以上であれば、相関は有意であることを意味する。よって、第2の実施の形態のように1分毎の平均値の14分間分を比較する場合は、0.661という閾値が、複数階層間の処理時間増大の相関の有無を決定するのに適当であることが分かる。なお、閾値として小数点第2位までの数値を利用し、閾値を0.66としてもよい。
【0193】
図17の例では、正常時の上位層「階層2:複数問い合わせ間」と下位層「階層3:処理時間全体」の時系列推移の相関係数は0.448である。すると、相関係数は0.661以下であり、正常時には階層2と階層3との間に有意な相関は認められない。
【0194】
他方、図20の例では、異常時(処理時間増大時)の上位層「階層2:複数問い合わせ間」と下位層「階層3:処理時間全体」の時系列推移の相関係数は0.986となる。すると、相関係数は0.66より大きく、異常時には階層2と階層3との間に有意な相関が認められる。
【0195】
このように、正常時に有意な相関が認められず、異常時にのみ有意な相関が認められた階層間では、下位層における異常による処理時間の増加が、上位層に伝搬しているという因果関係が存在すると判定される。判定結果が、例えばモニタ11に表示される。
【0196】
図21は、異常警報画面の一例を示す図である。異常警報画面50には、例えば、処理時間の増加率が2.0異常となった階層がリストアップされる。そして、下位層のサーバの処理時間増加の影響が伝搬しただけの可能性がある階層に関しては、その旨のメッセージが表示される。
【0197】
このような異常警報画面50を見た管理者は、Appサーバ300とDBサーバ400との処理時間が正常時よりも過剰に増加していること、およびその処理時間の増加の原因がDBサーバ400にのみ存在している可能性があることを認識できる。すなわち、Appサーバ300については、処理時間が増加しているものの、DBサーバ400について対処し、処理時間の増加状態を解消すれば、Appサーバ300については対処をせずにすむ可能性があることを、管理者が認識できる。
【0198】
以上説明したように、第2の実施の形態では、平均処理時間の時系列推移の相関係数から因果関係が判定されている。すなわち第2の実施の形態では、2つの階層の「複数問い合わせ間」区間が優先的に代表区間として選択される。そして代表区間の処理時間の時系列推移について、それらの時系列推移の相関係数が求められる。異常時の相関係数だけが閾値(例えば0.8)以上に高ければ、その2つの階層の処理時間増大には因果関係があると判定される。異常時において相関係数が高くても、正常時においても同様に高い場合は、それらは処理時間増大とは無関係に相関する(例えば入力負荷の変動に相関する)ということなので、それらの処理時間増大に因果関係があるとは判定されない。
【0199】
このようにして複数階層間の処理時間増加の因果関係を判定する理由は次の通りである。処理時間増加が他の階層に伝搬する理由としては、ある階層の処理時間が増加することによって、その上位層で処理の多重度が上昇し、それが負荷増大や待ち時間増大に繋がっている場合が考えられる。この場合、下位層における処理時間の推移は上位層の多重度の推移と相関があり、それがさらにその階層の処理時間の推移と相関し、それら2つの階層の処理時間の推移が相関を持つことになる。ただし、このときに「問い合わせ開始前」区間(第1種区間)の増加に注意する必要がある。この区間は、様々な理由で突出して増加することがある。例えば、下位層へのコネクション確保待ちの時間などである。このように本来の処理以外に費やされる時間は、多重度の増減による微妙な処理時間の増減を大きく上回って増減する。よって、このような区間を加えた処理時間で階層間の相関を測っても、全く見当違いな結果が出てしまう。そのような処理の内容に一番影響を受けないのが「複数問い合わせ間」の区間で、その区間だけを用いて相関を取ることによって、階層間の処理負荷増減の相関を測ることが可能となる。
【0200】
また、1つのトランザクションにおいて「複数問い合わせ間」区間(第2種区間)が複数存在する場合がある。これは、メッセージフロー内での上位層からのリクエストメッセージが3回以上送信される場合である。このような場合において、複数存在する「複数問い合わせ間」区間の1つ当たりの平均値を用いる理由は、それらの合計値はメッセージ回数にほぼ比例するためである。時系列で平均メッセージ回数が変化した場合に、それだけで複数階層間の「複数問い合わせ間」の合計値の推移が相関してしまう。第2の実施の形態では、そこで複数存在する「複数問い合わせ間」区間の1つ当たりの平均値を、そのトランザクションの「複数問い合わせ間」区間の処理時間としている。
【0201】
以上説明したように、第2の実施の形態では、複数の階層の処理時間が同時に増大した場合に、それらの両方共が本当に問題を抱えているのか、それとも一方だけが問題を抱えていてそれが他方に影響を与えているのか判定できるようになる。因果関係があることが分かれば、因果関係の方向(どちらが原因でどちらが結果か)は簡単に分かる。複数階層システムの場合は通常は下位が上位に影響を与える。そこで、下位層だけを調べれば良いことになる。このような場合に、両方の階層に原因があると誤解して調査を進めると、両方の階層を調査する為に余計な時間がかかったり、無駄に両方の階層のハードウェアを買い替えたり、原因分析が混乱して問題原因が発見できなかったりする。本実施の形態の技術を用いれば、そのような失敗を防ぐことが可能となる。
【0202】
〔第3の実施の形態〕
第3の実施の形態は、高負荷で安定している場合でも、階層間の因果関係を適切に判定できるようにしたものである。
【0203】
第2の実施の形態に示した手法は、以下のような現象を想定して、処理時間増加の因果関係の有無の判定を行っている。
まず、ボトルネックとなる階層のサーバの負荷が増大していく場合、その階層のサーバの処理時間が上下しながら増加していく。このとき、上位層のサーバにおける処理の多重度が、下位層のサーバの処理時間の増減に応じて上下する。このような多重度の上下が、多重度に起因する負荷の上下を引き起こす。第2の実施の形態では、このような現象を利用して、階層間の処理時間増加の因果関係の有無を判定している。
【0204】
ところが、負荷が過剰に増加すると、ボトルネック層とその上位層の間の接続(コネクション)の多重度が際限なく上昇していく。多重度が増加し続けると、どこかの時点で多重度の制限に引っ掛かる。すなわち、接続の多重度の上限が予め設定されており、その多重度を超えた接続は行われない。
【0205】
多重度の制限に達すると多重度はそれ以上上昇しなくなり、ボトルネック層の負荷が安定するようになる。すなわち、ボトルネック層の処理時間は高い値ではあるが安定するようになる。そして、処理時間の分散が小さくなる。式(1)に示した相関係数の算出式から明らかなように、分散が小さくなれば相関係数は低くなる。
【0206】
また、接続の多重度の制限に達した場合は、多重度の制限のために、下位層の処理時間の増減という挙動は上位層に多重度の増減として伝わらなくなる。そのため、例え下位層において処理時間の増減が発生しても、上位層にはその影響が及ばなくなる。よって、処理時間が安定していない場合でも、それぞれの階層の処理時間の増減は相関しなくなる。そうすると、第2の実施の形態に示す手法は、ボトルネックが起き始めて、処理時間が増加していく過程には有効であるものの、多重度の制限に達した以降は、有効に作用しない場合が想定される。
【0207】
ただし、実際のシステムにおいては、入力負荷は安定せずに増減するので、常にそこまでの高負荷が連続することは稀である。多くの場合、部分的には負荷が下がって処理時間の増減が生じて処理時間の相関が生まれることになる。
【0208】
そこで、第3の実施では、利用する時系列を部分時系列に限定することによって、負荷が非常に大きくなる区間が存在したとしても、適切な因果関係の判定を可能とする。
図22は、第3の実施の形態の運用管理サーバの機能構成を示すブロック図である。なお、図22に示す運用管理サーバ100aにおいて、図4に示した第2の実施の形態の運用管理サーバ100と同様の機能を有する要素には、図4と同じ符号を付し説明を省略する。
【0209】
第3の実施の形態に係る運用管理サーバ100aの影響伝搬分析部150aには、部分時系列選択部155が設けられている。部分時系列選択部155は、システムへの入力負荷と所定時間ごとの平均処理時間の標準偏差との関係を求める。そして部分時系列選択部155は、標準偏差の最大値を記憶した入力負荷よりも入力負荷が高い時間帯を、除外時間帯とする。そして部分時系列選択部155は、除外時間帯を、処理時間推移の解析対象から除外する。例えば部分時系列選択部155は、メッセージフロー情報記憶部140から、除外時間帯内のトランザクションに関するメッセージフロー情報を除外したメッセージフロー情報を、正常時処理時間解析部152と異常時処理時間解析部153とに引き渡す。正常時処理時間解析部152と異常時処理時間解析部153とは、部分時系列選択部155から受け取ったメッセージフロー情報に基づいて得られた部分時系列を用いて、相関関係の解析を行う。
【0210】
部分時系列選択部155は、システムの負荷が過大になって処理時間が増減しなくなっている(高い値で安定している)状況を、システムへの入力負荷と平均処理時間の標準偏差とに基づいて検出する。
【0211】
図23は、システムへの入力負荷と平均処理時間の標準偏差との関係を示す図である。図23では、横軸にシステムへの入力負荷を示し、縦軸に標準偏差を示している。
図23には、システムの入力負荷として、端末装置から最上位層のサーバに到着した処理要求の数を用いている。すなわち、Webサーバ200に単位時間内に入力されたリクエストメッセージの数を、システムの入力負荷とする。
【0212】
標準偏差は、処理時間増大が問題となっている複数階層の内の下位層における代表区間の平均処理時間の標準偏差である。部分時系列選択部155は、例えば5秒ごとに平均処理時間を計算する。さらに部分時系列選択部155は、1分間内の5秒間隔の時間帯ごとの12区間の平均処理時間に基づいて、標準偏差を計算する。すると、1分ごとの標準偏差が得られる。
【0213】
また部分時系列選択部155は、標準偏差を計算した時間帯(1分間)内に最上位層のWebサーバ200に入力されたリクエストメッセージ数を計数する。そして、リクエストメッセージ数ごとに、標準偏差の値をプロットしたのが、図23の図である。
【0214】
図23を参照すると、一定の入力負荷までは、入力負荷が増加するにつれて標準偏差が大きくなることが分かる。これは平均処理時間の増加に伴う自然な変化である。しかし、入力負荷がある一定値を超えると、一転、標準偏差が減少に転じる。これは、入力負荷が過大になって、処理時間の増減幅が減少したことを意味する。
【0215】
実際のシステムでは、入力負荷は刻一刻と変化する。そこで、部分時系列選択部155は、例えば1分間程度の短い時間単位で分割して、その間のシステムに対する平均入力負荷と、その間の階層毎の区間別平均処理時間の標準偏差を求める。
【0216】
図24は、入力負荷と標準偏差との関係の解析例を示す図である。まず部分時系列選択部155は、時間軸を5秒間隔で区切り、1分当たり12個の単位期間を生成する。次に部分時系列選択部155は、メッセージフロー情報記憶部140に格納されているメッセージフロー情報に基づいて、単位期間ごとに各階層の代表区間に関する処理の平均処理時間を算出する。
【0217】
さらに部分時系列選択部155は、1分毎の時間帯を選択対象期間として、選択対象期間ごとに、その選択対象期間内の12個の単位期間の平均処理時間の標準偏差を求める。このような標準偏差が、1分ごとに算出される。図24の例では、「0.00045」、「0.00132」、「0.00012」、「0.00048」といった標準偏差が得られる。
【0218】
標準偏差が得られると部分時系列選択部155は、メッセージフロー情報記憶部140に格納されているメッセージフロー情報に基づいて、選択対象期間ごとの入力負荷(1秒当たりのリクエストメッセージ数)を求める。そして部分時系列選択部155は、選択対象期間ごとに、入力負荷と標準偏差とを対応付ける。なお、図24には、4つの解析区間しか示していないが、この解析をある程度長い区間(例えば14分)実行する。そして、入力負荷と標準偏差との関係を、図23に示す表にプロットする。
【0219】
図25は、入力負荷と標準偏差との関係をプロットした例を示す図である。このようにして得られたグラフにおいて、標準偏差の最大値を記録した入力負荷量より多い負荷量の範囲は、システムの負荷が過大になって処理時間が増減しなくなっている範囲である。
【0220】
図24、図25に示した例では、入力負荷が130の時に、標準偏差が最大値となる。そのため、入力負荷が130より大きな時間帯は、処理時間推移の解析対象から除外される。図24の例では、標準偏差「0.00048」と計算された時間帯について、処理時間推移の解析対象から除外される。
【0221】
正常時処理時間解析部152と異常時処理時間解析部153とは、部分時系列選択部155によって除外されていない時間帯だけで処理時間推移の部分時系列を求める。これにより、システムの負荷が過大な時間帯の影響を取り除いた解析が可能となる。
【0222】
複数の階層で処理時間が増大した場合において、そのどちらの階層でこの部分時系列の選択作業を行うかは、特に厳密なルールはない。両者の処理時間が相関している場合は、両方で共通した処理時間増減の傾向を示すはずなので、上記の手順をどちらの階層で行っても同様の結果となる。第3の実施の形態では部分時系列選択部155は、先に下位層で部分時系列の選択作業を実施し、次に、先に選択された時間帯における上位層の平均処理時間の部分時系列を抽出する。このようにして得られた両階層の平均処理時間の部分時系列を利用することによって、後は、第2の実施の形態と同じ手法で相関関係を判定できる。
【0223】
図26は、部分時系列選択処理の手順の一例を示すフローチャートである。以下、図26に示す処理をステップ番号に沿って説明する。
[ステップS81]部分時系列選択部155は、下位層での部分時系列選択処理を行う。
【0224】
[ステップS82]部分時系列選択部155は、上位層での部分時系列選択処理を行う。
このような部分時系列選択処理が、上位層と下位層との組み合わせごとに実行される。例えば、DBサーバ400とAppサーバ300との影響伝搬を解析する場合、DBサーバ400の処理を下位層、Appサーバ300の処理を上位層として、図26の処理が実行される。また、Appサーバ300とWebサーバ200との影響伝搬を解析する場合、Appサーバ300の処理を下位層、Webサーバ200の処理を上位層として、図26の処理が実行される。
【0225】
図27は、下位層での部分時系列選択処理の手順の一例を示すフローチャートである。以下、図27に示す処理をステップ番号に沿って説明する。
[ステップS101]部分時系列選択部155は、解析対象期間(例えば14分)を1分ごとに分割した選択対象期間ごとに、ステップS102〜S107の処理を実行する。すなわち、部分時系列選択部155は、複数の選択対象期間から、未処理の選択対象期間を1つ選択する。
【0226】
[ステップS102]部分時系列選択部155は、1分間の選択対象期間を、5秒ごとの12個の単位期間に分割する。
[ステップS103]部分時系列選択部155は、5秒間の単位期間ごとに、ステップS104の処理を実行する。すなわち、部分時系列選択部155は、選択されている選択対象期間を分割して得られる複数の単位期間から、未処理の単位期間を1つ選択する。
【0227】
[ステップS104]部分時系列選択部155は、選択した単位期間における下位層における代表区間平均処理時間を算出する。
[ステップS105]部分時系列選択部155は、選択した選択対象期間内のすべての単位期間に対してステップS104の処理が完了したか否かを判断する。部分時系列選択部155は、未処理の単位期間があれば、処理をステップS103に進める。部分時系列選択部155は、すべての単位期間について処理が完了していれば、処理をステップS106に進める。
【0228】
[ステップS106]部分時系列選択部155は、選択対象期間内の単位期間ごとの平均処理時間の標準偏差を計算する。
[ステップS107]部分時系列選択部155は、1分間の選択対象期間におけるシステム全体に対する入力負荷を取得する。入力負荷は、1秒当たりのリクエストメッセージ数で表される。
【0229】
[ステップS108]部分時系列選択部155は、1分間ごとの選択対象期間すべてについてステップS102〜S107の処理が完了したか否かを判断する。部分時系列選択部155は、未処理の選択対象期間があれば、処理をステップS101に進める。部分時系列選択部155は、すべての選択対象期間について処理が完了していれば、処理をステップS109に進める。
【0230】
[ステップS109]部分時系列選択部155は、選択対象期間の標準偏差の最大値と、標準偏差が最大値となった選択対象期間のシステム入力負荷を求める。
[ステップS110]部分時系列選択部155は、1分間の選択対象期間ごとに、ステップS111〜S112の処理を実行する。すなわち、部分時系列選択部155は、複数の選択対象期間から、未処理の選択対象期間を1つ選択する。
【0231】
[ステップS111]部分時系列選択部155は、処理対象の選択対象期間の入力負荷が、標準偏差が最大値を記録した選択対象期間の入力負荷よりも大きいか否かを判断する。処理対象の選択対象期間の入力負荷の方が、標準偏差が最大値を記録した選択対象期間の入力負荷より大きい場合、処理がステップS112に進められる。処理対象の選択対象期間の入力負荷が、標準偏差が最大値を記録した選択対象期間の入力負荷以下の場合、処理がステップS113に進められる。
【0232】
[ステップS112]部分時系列選択部155は、現在処理対象となっている選択対象期間の1分間を、処理時間推移の解析対象から除外する。
[ステップS113]部分時系列選択部155は、1分間ごとの選択対象期間すべてについてステップS111〜S112の処理が完了したか否かを判断する。部分時系列選択部155は、未処理の選択対象期間があれば、処理をステップS110に進める。部分時系列選択部155は、すべての選択対象期間について処理が完了していれば、下位層での部分時系列選択処理を終了する。
【0233】
図28は、上位層での部分時系列選択処理手順の一例を示す図である。以下、図28に示す処理をステップ番号に沿って説明する。
[ステップS121]部分時系列選択部155は、解析対象期間(例えば14分)を1分ごとに分割した選択対象期間ごとに、ステップS122〜S123の処理を実行する。すなわち、部分時系列選択部155は、複数の選択対象期間から、未処理の選択対象期間を1つ選択する。
【0234】
[ステップS122]部分時系列選択部155は、現在処理対象となっている選択対象期間が、下位層において処理時間推移の解析対象から除外されているか否かを判断する。除外されていれば、処理がステップS123に進められる。除外されていなければ、処理がステップS124に進められる。
【0235】
[ステップS123]部分時系列選択部155は、現在処理対象となっている選択対象期間を、処理時間推移の解析対象から除外する。
[ステップS124]部分時系列選択部155は、解析対象期間内のすべての選択対象期間についてステップS122,S123の処理が完了したか否かを判断する。部分時系列選択部155は、未処理の選択対象期間があれば、処理をステップS121に進める。部分時系列選択部155は、すべての選択対象期間について処理が完了していれば、すると、上位層での部分時系列選択処理を終了する。
【0236】
以上のような処理で除外されていない時系列を構成するメッセージフロー情報のみが、部分時系列選択部155から正常時処理時間解析部152や異常時処理時間解析部153に渡され、時系列推移が解析される。その結果、正常時処理時間解析部152と異常時処理時間解析部153とでは、一部の期間の情報が取り除かれた時系列推移が生成されることとなる。
【0237】
このように、第3の実施の形態では、入力負荷が過大となり、接続の多重度制限により処理時間が安定した時間帯を解析対象から除外することで、入力負荷が大きな状態が継続しても、影響伝搬の有無を適格に判断することが可能となる。
【0238】
〔その他の応用例〕
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、運用管理サーバが有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置(HDD)、フレキシブルディスク(FD)、磁気テープなどがある。光ディスクには、DVD、DVD−RAM、CD−ROM/RWなどがある。光磁気記録媒体には、MO(Magneto-Optical disc)などがある。
【0239】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたDVD、CD−ROMなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【0240】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
【0241】
また、上記の処理機能の少なくとも一部を、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、PLD(Programmable Logic Device)などの電子回路で実現することもできる。
【0242】
以上、実施の形態を例示したが、実施の形態で示した各部の構成は同様の機能を有する他のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。さらに、前述した実施の形態のうちの任意の2以上の構成(特徴)を組み合わせたものであってもよい。
【0243】
以上の実施の形態に開示された技術には、以下の付記に示す技術が含まれる。
(付記1) コンピュータに、
複数のサーバが連携してトランザクションを実行する複数階層システムにおいて実行された各トランザクションに関し、各階層のサーバが各トランザクションに関する処理を実行した期間を示す情報を記憶する記憶手段を参照し、第1の階層に属するサーバの1処理当たりの平均処理時間の時系列推移と、第2の階層に属するサーバの1処理当たりの平均処理時間の時系列推移とを計算し、
前記第1の階層に属するサーバの平均処理時間の時系列推移と、前記第2の階層に属するサーバの平均処理時間の時系列推移との間の相関の有無を判定する、
処理を実行させることを特徴とする解析プログラム。
【0244】
(付記2) 前記コンピュータに、
前記記憶手段を参照し、最上位のサーバにおける処理要求の受信から応答の送信までの時間に基づいて、前記複数階層システムの異常の有無を判定し、
前記記憶手段を参照し、異常が検出された期間における各階層に属するサーバの1処理当たりの平均処理時間が、異常が検出されていない期間における1処理当たりの平均処理時間より所定値以上増大したか否かを判断し、処理時間が所定値以上増大した2つの階層を、それぞれ前記第1の階層および前記第2の階層として、異常が検出された期間と異常が検出されていない期間とのそれぞれにおける1処理当たりの平均処理時間の時系列推移を計算し、
異常が検出された期間における前記第1の階層に属するサーバの処理時間の時系列推移と前記第2の階層に属するサーバの処理時間の時系列推移との相関と、異常が検出されていない期間における前記第1の階層に属するサーバの処理時間の時系列推移と前記第2の階層に属するサーバの処理時間の時系列推移との相関とに基づいて、前記第1の階層に属するサーバにおける1処理当たりの処理時間の増大と、前記第2の階層に属するサーバにおける1処理当たりの処理時間の増大との因果関係の有無を判定する、
処理を実行させることを特徴とする付記1記載の解析プログラム。
【0245】
(付記3) 前記コンピュータに、因果関係の有無を判定させる際には、
異常が検出された期間において相関ありと判定され、異常が検出されていない期間において相関なしと判定された場合に、処理時間の増大の因果関係ありと判定する、
処理を実行させることを特徴とする付記2記載の解析プログラム。
【0246】
(付記4) 前記コンピュータに、平均処理時間の時系列推移を計算させる際には、
前記第1の階層に属するサーバまたは前記第2の階層に属するサーバが、上位層のサーバからの処理要求に応じた処理中に下位層のサーバへの処理要求を出力している場合、処理の開始の契機となる通信および処理の終了時に行われる通信に応じて各処理を複数の種別に分類し、前記複数の種別から選択した少なくとも1つの種別に属する処理の実行期間の処理時間の平均を、前記第1の階層に属するサーバまたは前記第2の階層に属するサーバの1処理当たりの平均処理時間とする、
処理を実行させることを特徴とする付記1乃至3のいずれかに記載の解析プログラム。
【0247】
(付記5) 前記コンピュータに、各処理を前記複数の種別に分類させる際には、
上位層のサーバから入力された処理要求を契機として開始され、下位層のサーバへ処理要求を出力して終了する処理が属する第1種、下位層のサーバに対して出力した処理要求に対する該サーバからの応答を契機として開始され、下位層のサーバへ処理要求を出力して終了する処理が属する第2種、および下位層のサーバに対して出力した処理要求に対する該サーバからの応答を契機として開始され、上位層のサーバに対して応答を出力して終了する処理が属する第3種に分類する、
処理を実行させることを特徴とする付記4記載の解析プログラム。
【0248】
(付記6) 前記コンピュータに、1処理当たりの平均処理時間を計算させる際には、
前記第2種に属する実行期間が存在する場合、前記第2種に属する実行期間の処理時間の平均を、前記第1の階層に属するサーバまたは前記第2の階層に属するサーバの1処理当たりの平均処理時間とする、
処理を実行させることを特徴とする付記5記載の解析プログラム。
【0249】
(付記7) 前記コンピュータに、さらに、
各階層に属するサーバの処理時間が所定以上増大したか否かを判断する際には、異常が検出されていない期間の1処理当たりの平均処理時間に対する異常検出時の1処理当たりの平均処理時間の増加率を計算し、該増加率が所定値異常の場合、処理時間が所定値以上増大したと判断する、
処理を実行させることを特徴とする付記2記載の解析プログラム。
【0250】
(付記8) 前記コンピュータに、時系列推移間の相関の有無を判断させる際には、
前記第1の階層に属するサーバの1処理当たりの平均処理時間の時系列推移と、前記第2の階層に属するサーバの1処理当たりの平均処理時間の時系列推移との相関係数を算出し、該相関係数が所定の有意水準以上の場合に、時系列推移間に相関があると判断する処理を実行させることを特徴とする付記1乃至7の何れかに記載の解析プログラム。
【0251】
(付記9) 前記コンピュータに、さらに、
前記第1の階層と前記第2の階層とのうちの上位層において、前記第1種に属する処理の1処理当たりの平均処理時間が所定値以上増大し、前記第2種および前記第3種に属する処理の1処理当たりの平均処理時間に所定値以上の増大が認められない場合、上位層の処理時間の増大は、下位層の処理時間増大の影響が伝搬したものであると判定する、
処理を実行させることを特徴とする付記5記載の解析プログラム。
【0252】
(付記10) 前記コンピュータに、1処理当たりの平均処理時間の時系列推移を計算させる際には、前記記憶手段に記憶されたトランザクション情報のうち、前記複数階層システムにおける処理負荷が所定値以上の期間に行われたトランザクションに関するトランザクション情報を除外して、1処理当たりの平均処理時間の時系列推移を計算する、
処理を実行させることを特徴とする付記1乃至9のいずれかに記載の解析プログラム。
【0253】
(付記11) 前記コンピュータに、1処理当たりの平均処理時間の時系列推移を計算させる際には、前記記憶手段に記憶されたトランザクション情報のうち、平均処理時間の標準偏差が最大となった期間よりも大きな処理負荷がかけられた期間に行われたトランザクションに関するトランザクション情報を除外して、1処理当たりの平均処理時間の時系列推移を計算する、
処理を実行させることを特徴とする付記10記載の解析プログラム。
【0254】
(付記12) コンピュータが、
複数のサーバが連携してトランザクションを実行する複数階層システムにおいて実行された各トランザクションに関し、各階層のサーバが各トランザクションに関する処理を実行した期間を示す情報を記憶する記憶手段を参照し、第1の階層に属するサーバの1処理当たりの平均処理時間の時系列推移と、第2の階層に属するサーバの1処理当たりの平均処理時間の時系列推移とを計算し、
前記第1の階層に属するサーバの平均処理時間の時系列推移と、前記第2の階層に属するサーバの平均処理時間の時系列推移との間の相関の有無を判定する、
ことを特徴とする解析方法。
【0255】
(付記13) 複数のサーバが連携してトランザクションを実行する複数階層システムにおいて実行された各トランザクションに関し、各階層のサーバが各トランザクションに関する処理を実行した期間を示す情報を記憶する記憶手段を参照し、第1の階層に属するサーバの1処理当たりの平均処理時間の時系列推移と、第2の階層に属するサーバの1処理当たりの平均処理時間の時系列推移とを計算する処理時間解析手段と、
前記第1の階層に属するサーバの平均処理時間の時系列推移と、前記第2の階層に属するサーバの平均処理時間の時系列推移との間の相関の有無を判定する相関判定手段と、
を有することを特徴とする解析装置。
【符号の説明】
【0256】
1 解析装置
1a 異常判定手段
1b 処理時間解析手段
1c 相関判定手段
2 記憶手段
2a,2b,2c トランザクション情報
【特許請求の範囲】
【請求項1】
コンピュータに、
複数のサーバが連携してトランザクションを実行する複数階層システムにおいて実行された各トランザクションに関し、各階層のサーバが各トランザクションに関する処理を実行した期間を示す情報を記憶する記憶手段を参照し、第1の階層に属するサーバの1処理当たりの平均処理時間の時系列推移と、第2の階層に属するサーバの1処理当たりの平均処理時間の時系列推移とを計算し、
前記第1の階層に属するサーバの平均処理時間の時系列推移と、前記第2の階層に属するサーバの平均処理時間の時系列推移との間の相関の有無を判定する、
処理を実行させることを特徴とする解析プログラム。
【請求項2】
前記コンピュータに、
前記記憶手段を参照し、最上位のサーバにおける処理要求の受信から応答の送信までの時間に基づいて、前記複数階層システムの異常の有無を判定し、
前記記憶手段を参照し、異常が検出された期間における各階層に属するサーバの1処理当たりの平均処理時間が、異常が検出されていない期間における1処理当たりの平均処理時間より所定値以上増大したか否かを判断し、処理時間が所定値以上増大した2つの階層を、それぞれ前記第1の階層および前記第2の階層として、異常が検出された期間と異常が検出されていない期間とのそれぞれにおける1処理当たりの平均処理時間の時系列推移を計算し、
異常が検出された期間における前記第1の階層に属するサーバの処理時間の時系列推移と前記第2の階層に属するサーバの処理時間の時系列推移との相関と、異常が検出されていない期間における前記第1の階層に属するサーバの処理時間の時系列推移と前記第2の階層に属するサーバの処理時間の時系列推移との相関とに基づいて、前記第1の階層に属するサーバにおける1処理当たりの処理時間の増大と、前記第2の階層に属するサーバにおける1処理当たりの処理時間の増大との因果関係の有無を判定する、
処理を実行させることを特徴とする請求項1記載の解析プログラム。
【請求項3】
前記コンピュータに、平均処理時間の時系列推移を計算させる際には、
前記第1の階層に属するサーバまたは前記第2の階層に属するサーバが、上位層のサーバからの処理要求に応じた処理中に下位層のサーバへの処理要求を出力している場合、処理の開始の契機となる通信および処理の終了時に行われる通信に応じて各処理を複数の種別に分類し、前記複数の種別から選択した少なくとも1つの種別に属する処理の実行期間の処理時間の平均を、前記第1の階層に属するサーバまたは前記第2の階層に属するサーバの1処理当たりの平均処理時間とする、
処理を実行させることを特徴とする請求項1または2のいずれかに記載の解析プログラム。
【請求項4】
前記コンピュータに、各処理を前記複数の種別に分類させる際には、
上位層のサーバから入力された処理要求を契機として開始され、下位層のサーバへ処理要求を出力して終了する処理が属する第1種、下位層のサーバに対して出力した処理要求に対する該サーバからの応答を契機として開始され、下位層のサーバへ処理要求を出力して終了する処理が属する第2種、および下位層のサーバに対して出力した処理要求に対する該サーバからの応答を契機として開始され、上位層のサーバに対して応答を出力して終了する処理が属する第3種に分類する、
処理を実行させることを特徴とする請求項3記載の解析プログラム。
【請求項5】
前記コンピュータに、1処理当たりの平均処理時間の時系列推移を計算させる際には、前記記憶手段に記憶されたトランザクション情報のうち、前記複数階層システムにおける処理負荷が所定値以上の期間に行われたトランザクションに関するトランザクション情報を除外して、1処理当たりの平均処理時間の時系列推移を計算する、
処理を実行させることを特徴とする請求項1乃至4のいずれかに記載の解析プログラム。
【請求項6】
コンピュータが、
複数のサーバが連携してトランザクションを実行する複数階層システムにおいて実行された各トランザクションに関し、各階層のサーバが各トランザクションに関する処理を実行した期間を示す情報を記憶する記憶手段を参照し、第1の階層に属するサーバの1処理当たりの平均処理時間の時系列推移と、第2の階層に属するサーバの1処理当たりの平均処理時間の時系列推移とを計算し、
前記第1の階層に属するサーバの平均処理時間の時系列推移と、前記第2の階層に属するサーバの平均処理時間の時系列推移との間の相関の有無を判定する、
ことを特徴とする解析方法。
【請求項7】
複数のサーバが連携してトランザクションを実行する複数階層システムにおいて実行された各トランザクションに関し、各階層のサーバが各トランザクションに関する処理を実行した期間を示す情報を記憶する記憶手段を参照し、第1の階層に属するサーバの1処理当たりの平均処理時間の時系列推移と、第2の階層に属するサーバの1処理当たりの平均処理時間の時系列推移とを計算する処理時間解析手段と、
前記第1の階層に属するサーバの平均処理時間の時系列推移と、前記第2の階層に属するサーバの平均処理時間の時系列推移との間の相関の有無を判定する相関判定手段と、
を有することを特徴とする解析装置。
【請求項1】
コンピュータに、
複数のサーバが連携してトランザクションを実行する複数階層システムにおいて実行された各トランザクションに関し、各階層のサーバが各トランザクションに関する処理を実行した期間を示す情報を記憶する記憶手段を参照し、第1の階層に属するサーバの1処理当たりの平均処理時間の時系列推移と、第2の階層に属するサーバの1処理当たりの平均処理時間の時系列推移とを計算し、
前記第1の階層に属するサーバの平均処理時間の時系列推移と、前記第2の階層に属するサーバの平均処理時間の時系列推移との間の相関の有無を判定する、
処理を実行させることを特徴とする解析プログラム。
【請求項2】
前記コンピュータに、
前記記憶手段を参照し、最上位のサーバにおける処理要求の受信から応答の送信までの時間に基づいて、前記複数階層システムの異常の有無を判定し、
前記記憶手段を参照し、異常が検出された期間における各階層に属するサーバの1処理当たりの平均処理時間が、異常が検出されていない期間における1処理当たりの平均処理時間より所定値以上増大したか否かを判断し、処理時間が所定値以上増大した2つの階層を、それぞれ前記第1の階層および前記第2の階層として、異常が検出された期間と異常が検出されていない期間とのそれぞれにおける1処理当たりの平均処理時間の時系列推移を計算し、
異常が検出された期間における前記第1の階層に属するサーバの処理時間の時系列推移と前記第2の階層に属するサーバの処理時間の時系列推移との相関と、異常が検出されていない期間における前記第1の階層に属するサーバの処理時間の時系列推移と前記第2の階層に属するサーバの処理時間の時系列推移との相関とに基づいて、前記第1の階層に属するサーバにおける1処理当たりの処理時間の増大と、前記第2の階層に属するサーバにおける1処理当たりの処理時間の増大との因果関係の有無を判定する、
処理を実行させることを特徴とする請求項1記載の解析プログラム。
【請求項3】
前記コンピュータに、平均処理時間の時系列推移を計算させる際には、
前記第1の階層に属するサーバまたは前記第2の階層に属するサーバが、上位層のサーバからの処理要求に応じた処理中に下位層のサーバへの処理要求を出力している場合、処理の開始の契機となる通信および処理の終了時に行われる通信に応じて各処理を複数の種別に分類し、前記複数の種別から選択した少なくとも1つの種別に属する処理の実行期間の処理時間の平均を、前記第1の階層に属するサーバまたは前記第2の階層に属するサーバの1処理当たりの平均処理時間とする、
処理を実行させることを特徴とする請求項1または2のいずれかに記載の解析プログラム。
【請求項4】
前記コンピュータに、各処理を前記複数の種別に分類させる際には、
上位層のサーバから入力された処理要求を契機として開始され、下位層のサーバへ処理要求を出力して終了する処理が属する第1種、下位層のサーバに対して出力した処理要求に対する該サーバからの応答を契機として開始され、下位層のサーバへ処理要求を出力して終了する処理が属する第2種、および下位層のサーバに対して出力した処理要求に対する該サーバからの応答を契機として開始され、上位層のサーバに対して応答を出力して終了する処理が属する第3種に分類する、
処理を実行させることを特徴とする請求項3記載の解析プログラム。
【請求項5】
前記コンピュータに、1処理当たりの平均処理時間の時系列推移を計算させる際には、前記記憶手段に記憶されたトランザクション情報のうち、前記複数階層システムにおける処理負荷が所定値以上の期間に行われたトランザクションに関するトランザクション情報を除外して、1処理当たりの平均処理時間の時系列推移を計算する、
処理を実行させることを特徴とする請求項1乃至4のいずれかに記載の解析プログラム。
【請求項6】
コンピュータが、
複数のサーバが連携してトランザクションを実行する複数階層システムにおいて実行された各トランザクションに関し、各階層のサーバが各トランザクションに関する処理を実行した期間を示す情報を記憶する記憶手段を参照し、第1の階層に属するサーバの1処理当たりの平均処理時間の時系列推移と、第2の階層に属するサーバの1処理当たりの平均処理時間の時系列推移とを計算し、
前記第1の階層に属するサーバの平均処理時間の時系列推移と、前記第2の階層に属するサーバの平均処理時間の時系列推移との間の相関の有無を判定する、
ことを特徴とする解析方法。
【請求項7】
複数のサーバが連携してトランザクションを実行する複数階層システムにおいて実行された各トランザクションに関し、各階層のサーバが各トランザクションに関する処理を実行した期間を示す情報を記憶する記憶手段を参照し、第1の階層に属するサーバの1処理当たりの平均処理時間の時系列推移と、第2の階層に属するサーバの1処理当たりの平均処理時間の時系列推移とを計算する処理時間解析手段と、
前記第1の階層に属するサーバの平均処理時間の時系列推移と、前記第2の階層に属するサーバの平均処理時間の時系列推移との間の相関の有無を判定する相関判定手段と、
を有することを特徴とする解析装置。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図27】
【図28】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図27】
【図28】
【公開番号】特開2011−258057(P2011−258057A)
【公開日】平成23年12月22日(2011.12.22)
【国際特許分類】
【出願番号】特願2010−132992(P2010−132992)
【出願日】平成22年6月10日(2010.6.10)
【出願人】(000005223)富士通株式会社 (25,993)
【Fターム(参考)】
【公開日】平成23年12月22日(2011.12.22)
【国際特許分類】
【出願日】平成22年6月10日(2010.6.10)
【出願人】(000005223)富士通株式会社 (25,993)
【Fターム(参考)】
[ Back to top ]