以下、本実施の形態を図面を参照して詳細に説明する。
[第1の実施の形態]
図1は、第1の実施の形態に係る運用管理装置を示す図である。運用管理装置1は、情報処理装置2,3,4と通信可能である。運用管理装置1および情報処理装置2,3,4は、情報処理システムを構成する。
情報処理装置2,3,4は、互いに連携してシステム上の処理を実行する。情報処理装置2,3,4は、例えば、多階層システムである。多階層システムの一例として、Web3階層システムが考えられる。
運用管理装置1は、情報処理装置2,3,4の稼働状況を管理する。運用管理装置1は、履歴情報記憶部1a、計数部1bおよび処理部1cを有する。
履歴情報記憶部1aは、情報処理装置2,3,4で発生した処理要求の履歴を示す履歴情報を記憶する。履歴情報は、例えば、情報処理装置2,3,4の間で送受信される通信情報を運用管理装置1で収集したものである。このような通信情報には、情報処理装置2,3,4の間での処理要求や処理要求に対する応答を示すメッセージが含まれる。また、履歴情報は、例えば、情報処理装置2,3,4で取得された処理のログであってもよい。このログには、上述の通信情報と同様に処理要求を受け付けたことや処理要求に対する応答を示すメッセージ、あるいは、これと同等の内容を示す情報が含まれる。
計数部1bは、情報処理装置から取得した、所定の時間間隔で得られたN(Nは1≦Nの整数)個のサンプリングタイミングから、各サンプリングタイミング時に情報処理装置が処理中の処理要求の数を示す値Xi(iは1≦i≦Nの整数)を得る。具体的には、計数部1bは、履歴情報記憶部1aに記憶された履歴情報に基づいて、所定期間ごとのサンプリングタイミングにおいて情報処理装置2,3,4で処理中の処理要求の数を計数し処理要求滞在数とする。
ここで、「処理要求の滞在」について説明する。「処理要求が滞在している」状態とは、その情報処理装置において、その処理要求に対する処理を実行中である状態をいう。なお、その処理要求が上位の階層の情報処理装置から依頼されたものであれば、上位の情報処理装置でその依頼に対する応答を受け付けるまでは、依頼元の処理要求が上位の情報処理装置に「滞在した」状態となる。計数部1bは、例えば履歴情報に含まれるメッセージとメッセージに対応付けられたタイムスタンプとに基づいて、所定期間ごとの処理要求滞在数を計数することができる。
処理部1cは、Xiの総和に対する、Xiの最大値との差分が所定範囲内にあるXiの総和の割合を求める処理を、複数の情報処理装置について行い、求めた該割合が所定値以上の情報処理処置を検出する。具体的には、処理部1cは情報処理装置2,3,4ごとに計数対象となったサンプリングタイミングの総数に対する処理要求滞在数の最大値から所定範囲内の値の処理要求滞在数となるサンプリングタイミングの数の占める割合を情報処理装置2,3,4ごとの集中度とする。そして、処理部1cは、集中度が所定値以上である情報処理装置を検出する。
ここで、集中度とは、該当の情報処理装置の分布について、処理要求滞在数が最大値から所定範囲内であったイベントが該当の分布に含まれる全イベントに対してどれ程存在したかを示す指標である。
所定範囲を決める情報として、例えば「特定した最大値から“最大値のZ%”(ただし、Zは0より大きく100よりも小さい実数)の値の範囲内とする」という条件が予め設定される。
例えば、処理部1cは情報処理装置2について処理要求滞在数の頻度分布5を取得する。また、例えば処理部1cは情報処理装置3について処理要求滞在数の頻度分布6を取得する。また、例えば処理部1cは情報処理装置4について処理要求滞在数の頻度分布7を取得する。なお、頻度とは各処理要求滞在数となるサンプリング時刻の数を示す。
例として“Z=10”および情報処理装置の検出のための集中度の所定値が“0.8”と設定されている場合を考える。まず、処理部1cは頻度分布5,6,7に含まれる処理要求滞在数の最大値を特定する。頻度分布5であれば、処理部1cは、例えば最大値“43”を特定する。そして、最大値“43”から“43×0.1=4.3”の値の範囲内、すなわち、“38.7以上43以下”の範囲における集中度を算出する。処理部1cは、頻度分布5についてこの範囲における集中度を、例えば“0.2”と算出する。この場合、集中度の所定値“0.8”よりも小さい。よって、処理部1cは情報処理装置2を検出しない。
また、頻度分布6についても同様にして、処理部1cは集中度を例えば“0.5”と算出する。この場合も集中度の所定値“0.8”よりも小さい。よって、処理部1cは情報処理装置3を検出しない。
また、頻度分布7についても同様にして、処理部1cは集中度を例えば“0.9”と算出する。この場合、集中度の所定値“0.8”よりも大きい。よって、処理部1cは情報処理装置4を検出する。
なお、集中度を求めるための所定範囲を決める情報として、上述した割合(“Z%”)を指定するパラメータのほか、例えば「特定した最大値から定数値“Y”の範囲内」などという条件を処理部1cに予め設定してもよい。
運用管理装置1によれば、計数部1bにより、情報処理装置から取得した、所定の時間間隔で得られたN個のサンプリングタイミングから、各サンプリングタイミング時に情報処理装置が処理中の処理要求の数を示す値Xi(iは1≦i≦Nの整数)が取得される。処理部1cにより、Xiの総和に対する、Xiの最大値との差分が所定範囲内にあるXiの総和の割合を求める処理が、複数の情報処理装置について行われ、求めた割合が所定値以上の情報処理処置が検出される。
このようにして検出された情報処理装置では、処理要求滞在数の最大値において、所定期間当たりに許容される処理要求滞在数が飽和していると考えることができる。この場合、情報処理装置4において処理要求滞在数が飽和して処理要求が受け付けられないために、例えば情報処理装置3において、次に情報処理装置4に依頼すべき処理が滞留する。すなわち、情報処理装置4の処理要求滞在数の飽和状態の影響が情報処理装置3に及び、情報処理装置3で処理遅延を引き起こす要因となる。このため、情報処理装置4は情報処理システムにおける処理のボトルネック候補と捉えることができる。処理部1cは、検出した情報処理装置をボトルネック候補としてシステムの管理者に報知してもよい。このようにすれば、管理者はボトルネックの解消作業を早期に開始できる。
また、このような飽和状態は、アプリケーションソフトウェア(以下、アプリケーションという)の動作上、処理要求滞在数(並列実行可能な処理数)に制限が加わっていることに起因するものであると考えられる。このようにアプリケーションの動作上の制限により処理要求滞在数が頭打ちとなる場合には、情報処理装置4において処理時間の増大やリソースの枯渇などの異常がみられないことが多い。したがって、従来のように処理時間やリソースの状況を取得する方法のみでは、このようなボトルネック候補を検出することは困難であった。
これに対し、運用管理装置1は、情報処理装置2,3,4における処理要求滞在数の集中度に基づいてボトルネック候補を検出する。このため、アプリケーションの動作上の制限によって生じるボトルネック候補を適切に検出することができる。
以下の実施の形態では、Web3階層システムに運用管理装置1を適用する場合を例に採り、更に具体的に説明する。
[第2の実施の形態]
以下、第2の実施の形態を図面を参照して詳細に説明する。
図2は、第2の実施の形態の業務システムの全体構成を示す図である。この業務システムは、運用管理サーバ100、Webサーバ200、Appサーバ300およびDBサーバ400を有する。運用管理サーバ100、Webサーバ200、Appサーバ300およびDBサーバ400は、スイッチ装置10を介して相互に接続されている。また、スイッチ装置10は、ネットワーク20を介して端末装置21,22,23に接続されている。
端末装置21,22,23は、スイッチ装置10およびネットワーク20を介してWebサーバ200にアクセス可能である。端末装置21,22,23のユーザは、Webサーバ200が提供するGUI(Graphical User Interface)を端末装置21,22,23から操作して業務システムを利用できる。ネットワーク20は、例えばイントラネットである。
なお、ネットワーク20がインターネットである場合も考えられる。その場合、スイッチ装置10はファイアウォールとして機能させることもできる。また、Webサーバ200の属するネットワークセグメントは、例えばDMZ(Demilitarized Zone)として扱われる。
運用管理サーバ100は、Webサーバ200、Appサーバ300およびDBサーバ400の稼働状況を管理する。運用管理サーバ100は、そのための情報をスイッチ装置10から取得することができる。すなわち、スイッチ装置10は、ポートミラーリング機能を有しており、Webサーバ200、Appサーバ300およびDBサーバ400の間で送受信される通信パケットを運用管理サーバ100にも送信する。運用管理サーバ100は、スイッチ装置10から送信される通信パケットを受信して、記憶する(パケットキャプチャ)。なお、運用管理サーバ100で単にパケットキャプチャを行う用途であれば、スイッチ装置10をリピータハブで代用することもできる。
Webサーバ200は、端末装置21,22,23で実行されるWebブラウザから業務システムに対する処理要求(メッセージ)を受け付ける。ここで、Webサーバ200と端末装置21,22,23とのメッセージ交換は、HTTP(HyperText Transfer Protocol)によって行われるものとする。ただし、他のプロトコルが用いられてもよい。
以下では、端末装置21,22,23からWebサーバ200へ送信する処理要求をHTTPリクエストと呼ぶこととする。また、それに対する応答をHTTPレスポンスと呼ぶこととする。なお、リクエスト/レスポンスともに処理要求の一例である。
Webサーバ200は、端末装置21,22,23から受信したHTTPリクエストに基づいて、静的コンテンツに関しては自装置でHTTPレスポンスを生成し、端末装置21,22,23に送信する。なお、動的コンテンツに関しては、Appサーバ300に依頼すべき処理の処理要求(メッセージ)を生成して、Appサーバ300に送信する。
ここで、Webサーバ200とAppサーバ300とのメッセージ交換は、IIOP(Internet Inter-ORB(Object Request Broker) Protocol)によって行われるものとする。ただし、他のプロトコルが用いられてもよい。
以下では、Webサーバ200からAppサーバ300へ送信する処理要求をIIOPリクエストと呼ぶこととする。また、それに対する応答をIIOPレスポンスと呼ぶこととする。
Webサーバ200は、IIOPリクエストに対するIIOPレスポンスを受信すると、その内容に基づいてHTTPレスポンスを生成して、端末装置21,22,23に送信する。
Appサーバ300は、Webサーバ200から受信したIIOPリクエストに基づいてDBサーバ400に依頼すべき処理のクエリを生成し、DBサーバ400に送信する。
ここで、Appサーバ300が生成するクエリは、例えばSQL文によって表記される。以下では、Appサーバ300がDBサーバ400に送信するクエリをDBリクエストと呼ぶこととする。また、それに対する応答をDBレスポンスと呼ぶこととする。
Appサーバ300は、DBリクエストに対するDBレスポンスを受信すると、その内容に基づいてIIOPレスポンスを生成してWebサーバ200に送信する。
DBサーバ400は、Appサーバ300から受信したDBリクエストに含まれるSQL文を実行してDBの参照や更新等の処理を実行する。DBサーバ400は、その処理結果に基づいてDBレスポンスを生成し、Appサーバ300に送信する。
なお、業務システムにおいてWebサーバ200、Appサーバ300およびDBサーバ400と各層(Web層、App層およびDB層)一台ずつの構成を例示したが、各層にそれぞれ複数台のサーバを設けてもよい。
また、以下では各サーバという場合、Webサーバ200、Appサーバ300およびDBサーバ400を示すものとする。更に、Webサーバ200は、Appサーバ300およびDBサーバ400よりも上位の階層のサーバであるとする。また、Appサーバ300は、DBサーバ400よりも上位の階層のサーバであるとする。このような階層関係を定義する情報は、運用管理サーバ100に予め格納される。
図3は、第2の実施の形態の運用管理サーバのハードウェア構成を示す図である。運用管理サーバ100は、CPU(Central Processing Unit)101、ROM(Read Only Memory)102、RAM(Random Access Memory)103、HDD(Hard Disk Drive)104、グラフィック処理装置105、入力インタフェース106、記録媒体読取装置107および通信インタフェース108を有する。
CPU101は、運用管理サーバ100全体を制御する。
ROM102は、運用管理サーバ100上のBIOS(Basic Input / Output System)のプログラムなどを記憶する。
RAM103は、CPU101に実行させるOS(Operating System)のプログラムやアプリケーションのプログラムの少なくとも一部を一時的に記憶する。また、RAM103は、CPU101による処理に必要な各種データを記憶する。
HDD104は、OSのプログラム、アプリケーションのプログラムを記憶する。また、HDD104はCPU101による処理に必要な各種データを記憶する。なお、HDD104に代えて(または、HDD104と併せて)、SSD(Solid State Drive)など他の種類の記憶装置を用いてもよい。
グラフィック処理装置105は、モニタ11と接続される。グラフィック処理装置105は、CPU101からの命令に従って画像をモニタ11の画面に表示させる。
入力インタフェース106は、キーボード12とマウス13と接続される。入力インタフェース106は、キーボード12やマウス13から送られてくる信号をCPU101に送信する。
記録媒体読取装置107は、記録媒体14に記憶されたデータを読み取る読取装置である。例えば、運用管理サーバ100が有すべき機能は、その機能の処理内容を記述したプログラムをコンピュータに実行させることで実現できる。そのようなプログラムは、コンピュータ読み取り可能な記録媒体14に記録して配布することができる。また、スイッチ装置10あるいはネットワーク20に接続されたプログラム配信サーバ(図示せず)にそのプログラムを格納してもよい。この場合、運用管理サーバ100は、スイッチ装置10あるいはネットワーク20を介してプログラム配信サーバからプログラムをダウンロードすることができる。
記録媒体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)メモリなどのフラッシュメモリがある。
通信インタフェース108は、TP(Twisted Pair)ケーブルや光ケーブル等によってスイッチ装置10と接続される。通信インタフェース108は、スイッチ装置10を介して他の情報処理装置とデータ通信する。また、通信インタフェース108は、各サーバの間で送受信される通信パケットをスイッチ装置10から受信する。
なお、Webサーバ200、Appサーバ300、DBサーバ400および端末装置21,22,23も運用管理サーバ100と同様のハードウェア構成により実現できる。
図4は、第2の実施の形態の運用管理サーバの機能構成を示す図である。運用管理サーバ100は、パケット記憶部110、計数情報記憶部120、パケット受信部130、計数部140、ボトルネック検出処理部150および報知部160を有する。これらの機能は、所定のプログラムをCPU101が実行することで実現される。なお、これらの機能の少なくとも一部または全部を専用のハードウェアにより実現してもよい。
パケット記憶部110は、キャプチャしたパケット情報を記憶する。
計数情報記憶部120は、各サーバにおける処理要求滞在数を示す情報(以下、計数情報という)を記憶する。
パケット受信部130は、スイッチ装置10を介して送受信される通信パケットをスイッチ装置10から受信する。パケット受信部130は、受信した通信パケットをパケット情報としてパケット記憶部110に格納する。
計数部140は、パケット記憶部110に記憶されたパケット情報に基づいて、各サーバの間で送受信されるメッセージを復元する。計数部140は、復元したメッセージに基づいて各サーバにおける処理要求滞在数を計数し、計数情報を生成する。計数部140は、生成した計数情報を計数情報記憶部120に格納する。
ボトルネック検出処理部150は、計数情報記憶部120に記憶された計数情報に基づいて、各サーバにおける処理要求滞在数の頻度分布を解析し、頻度分布が以下の条件を満たすサーバをボトルネック候補として検出する。
(条件1)頻度分布において、処理要求滞在数の最大値から所定範囲内におけるイベントの集中度が閾値以上であること。
(条件2)頻度分布でピークをとる処理要求滞在数のうち、最大の処理要求滞在数に対応するピークが正規分布でないこと。
ここで、集中度とは、該当のサーバの分布について、処理要求滞在数が最大値から所定範囲内であったイベントが該当の分布に含まれる全イベントに対してどれ程存在したかを示す指標である。集中度の評価方法の詳細は後述する。
ボトルネック検出処理部150は、検出したボトルネック候補からボトルネックとなりうるサーバを特定して、特定結果を報知部160に出力する。
報知部160は、ボトルネック検出処理部150から取得したサーバを示す情報を業務システムの管理者に報知する。
次に、各データ構造例を説明する。まず、業務システムで送受信されるメッセージの流れの具体例を説明する。その後、そのようなメッセージについて管理されるデータ構造例を説明する。
図5は、業務システムにおける通信の流れの具体例を示すシーケンス図である。以下、図5に示す処理をステップ番号に沿って説明する。なお、図5では各ステップにつき、そのメッセージに対応する通信パケットをキャプチャしたタイムスタンプ(時:分:秒.マイクロ秒)が表記されている。
[ステップS1]Webサーバ200は、端末装置21からHTTPリクエストを受信する(時刻“01:58:19.987360”)。
[ステップS2]Appサーバ300は、Webサーバ200からIIOPリクエストを受信する(時刻“01:58:20.057275”)。
[ステップS3]DBサーバ400は、Appサーバ300からDBリクエストを受信する(時刻“01:58:20.120100”)。
[ステップS4]Appサーバ300は、DBサーバ400からDBレスポンスを受信する(時刻“01:58:20.225221”)。
[ステップS5〜S10]DBサーバ400は、Appサーバ300からDBリクエストを受信する。そして、Appサーバ300は、それに応じてDBサーバ400からDBレスポンスを受信する。
[ステップS11]Webサーバ200は、Appサーバ300からIIOPレスポンスを受信する(時刻“01:58:21.229258”)。
[ステップS12]Webサーバ200は、端末装置21にHTTPレスポンスを送信する(時刻“01:58:21.330431”)。
このようにして、各サーバの間で、メッセージが交換される。
なお、端末装置22,23から受け付けるHTTPリクエストに対しても同様の流れとなる。
運用管理サーバ100は、各装置間で送受信される通信パケットをキャプチャして、対応するメッセージを復元することができる。メッセージを復元する方法として、例えば特開2006−011683号公報に記載の方法を利用することができる。
図6,7は、復元メッセージを例示する図である。復元メッセージ111は、図5に示した各ステップにおけるメッセージの内容を含む。計数部140は、パケット記憶部110に記憶されたパケット情報に基づいて、復元メッセージ111を得ることができる。なお、復元メッセージ111には、各階層間の処理要求および応答に関連するメッセージ以外のメッセージに関しては図示を省略している。
復元メッセージ111の各行には、日付フィールド111a、時刻フィールド111b、セッション番号フィールド111c、送信元アドレスフィールド111d、送信先アドレスフィールド111e、コマンド種別フィールド111fおよびメッセージフィールド111gが含まれる。
日付フィールド111aは、メッセージをキャプチャした日付を示すフィールドである。
時刻フィールド111bは、メッセージをキャプチャした時刻を示すフィールドである。
セッション番号フィールド111cは、業務システムにおけるメッセージの送受信に用いるリソースを管理するためのセッション番号を示すフィールドである。
送信元アドレスフィールド111dは、メッセージの送信元のコンピュータのIP(Internet Protocol)アドレスおよびポート番号を示すフィールドである。
送信先アドレスフィールド111eは、メッセージの送信先のコンピュータのIPアドレスおよびポート番号を示すフィールドである。
コマンド種別フィールド111fは、コマンドのリクエスト/レスポンス属性やプロトコル(HTTP、IIOPおよびDBクエリ用等)の種別を示すフィールドである。
メッセージフィールド111gは、コマンド種別フィールド111fに示されたリクエスト等のメッセージ内容を示すフィールドである。
以下、復元メッセージ111に付した行番号を示して説明する。
例えば、ステップS1のHTTPリクエストは1行目に対応する。
日付フィールド111aには、その行に対応する通信パケットをキャプチャした日付として、例えば“2009/09/07”が取得される。
また、時刻フィールド111bには、パケットキャプチャした時刻として、例えば“01:58:19.987360”が取得される。
また、セッション番号フィールド111cには、セッション番号として、例えば“132290−1”が表示される。セッション番号フィールド111cには、リクエスト/レスポンスの組で一意の情報が取得されている。これは、同一のセッションを用いてリクエストと、そのリクエストに対応するレスポンスが交換されるためである。例えば、1行目のHTTPリクエストに対応するHTTPレスポンスとして18行目のメッセージを特定できる。
送信元アドレスフィールド111dには、HTTPリクエストを送信した端末装置21のIPアドレスとポート番号として、例えば“194.185.39.24:51272”が取得される。
送信先アドレスフィールド111eには、HTTPリクエストの送信先であるWebサーバ200のIPアドレスとポート番号として、例えば、“194.23.6.226:10443”が取得される。
コマンド種別フィールド111fには、1行目がHTTPリクエストに関するメッセージであることを示す情報として、例えば“Request HTTP”という情報が取得される。また、メッセージフィールド111gには、HTTPリクエストの内容として、例えば“POST /cgi−bin/・・・”という情報が取得される。
このように、復元メッセージ111を参照することで、何れのサーバに対して、どのようなメッセージが送信されたかを検出することができる。
ここで、復元メッセージ111中のその他のIPアドレスと各装置との対応関係は次の通りである。
“194.23.7.168”は、Appサーバ300のIPアドレスを示す。“194.23.8.198”は、DBサーバのIPアドレスを示す。“194.185.39.25”は、端末装置22のIPアドレスを示す。
すなわち、Webサーバ200と端末装置22との間でのHTTPリクエスト/HTTPレスポンスの送受信を各行に含まれる送信元アドレスフィールド111d、送信先アドレスフィールド111eおよびコマンド種別等によって特定できる。具体的には、復元メッセージ111の6,20行目が対応する。
また、Webサーバ200とAppサーバ300との間でのIIOPリクエスト/IIOPレスポンスの送受信は、復元メッセージ111の2,7,17,19行目に対応する。
また、Appサーバ300とDBサーバ400との間でのDBリクエスト/DBレスポンスの送受信は、復元メッセージ111の3〜5、8〜16行目に対応する。
なお、日付フィールド111aおよび時刻フィールド111bの情報として、パケット受信部130が通信パケットをキャプチャしたタイミングにおけるタイムスタンプが取得されるものとしたが、これに限らない。例えば、通信パケット中に各サーバにおけるパケットの生成時刻や送信時刻の情報が含まれている場合には、その時刻としてもよい。その場合、各サーバで精度良く時刻同期が行われていることが望ましい。
図8は、第2の実施の形態のメッセージ管理テーブルのデータ構造例を示す図である。メッセージ管理テーブル121は、計数部140によって生成され、計数情報記憶部120に格納される。メッセージ管理テーブル121は、計数部140が計数処理を効率的に実行するためのデータである。
メッセージ管理テーブル121には、項番を示す項目、時刻を示す項目、セッション番号を示す項目、プロトコルを示す項目およびRequest/Responseを示す項目が設けられている。各項目の横方向に並べられた情報同士が互いに関連付けられて、1つのメッセージに関する情報を示す。
項番を示す項目には、レコードを識別する番号が設定される。時刻を示す項目には、メッセージに対応する通信パケットをキャプチャした時刻が設定される。セッション番号を示す項目には、メッセージを送信するために用いられたセッションを識別するセッション番号が設定される。プロトコルを示す項目には、メッセージが何れのプロトコルによるものかを示す情報が設定される。Request/Responseを示す項目には、そのメッセージがリクエスト/レスポンスの何れのものであるかを示す情報が設定される。
メッセージ管理テーブル121には、例えば、項番が“1”、時刻が“01:58:19.987”、セッション番号が“132290”、プロトコルが“HTTP”、Request/Responseが“Request”という情報が設定される。
このレコードは、復元メッセージ111の1行目の内容に対応する。ただし、時刻にはミリ秒までを設定している。この点、更に短い時間単位(例えば、マイクロ秒単位)で時刻を取得してもよい。また、セッション番号にはセッション番号フィールド111cに含まれる情報のうち、リクエスト/レスポンスの組を特定するために必要な最低限の情報を設定している。以下、セッション番号という場合、メッセージ管理テーブル121のセッション番号を示す項目に設定された情報を示すものとする。
図9は、第2の実施の形態のカウンタテーブルのデータ構造例を示す図である。カウンタテーブル122は、計数部140によってメッセージ管理テーブル121に基づいて生成され、計数情報記憶部120に格納される。カウンタテーブル122は、各メッセージに対応する通信パケットをキャプチャしたタイミングにおける各サーバの処理要求滞在数をカウントしたものである。
カウンタテーブル122には、項番を示す項目、時刻を示す項目、Webサーバを示す項目、Appサーバを示す項目およびDBサーバを示す項目が設けられている。各項目の横方向に並べられた情報同士が互いに関連付けられて、1つのタイミングにおける各サーバの処理要求滞在数を示す。
項番を示す項目には、レコードを識別する番号が設定される。時刻を示す項目は、メッセージ管理テーブル121の時刻を示す項目に対応する。この時刻は第1の実施の形態におけるサンプリング時刻に対応する。Webサーバを示す項目には、該当の時刻におけるWebサーバの処理要求滞在数が設定される。Appサーバを示す項目には、該当の時刻におけるAppサーバの処理要求滞在数が設定される。DBサーバを示す項目には、該当の時刻におけるDBサーバの処理要求滞在数が設定される。
計数部140は、メッセージ管理テーブル121を参照して、次の手順によりカウンタテーブル122を生成することができる。
(手順1)計数部140は、メッセージ管理テーブル121からリクエストとそれに対するレスポンスの組を抽出する。対応するリクエスト/レスポンスの組は、セッション番号に基づいて特定できる。ここで、リクエスト/レスポンスの組として抽出できない処理要求(例えば、リクエストは存在するが対応するレスポンスのないもの、あるいは、レスポンスは存在するが対応するリクエストのないもの)は破棄する。
(手順2)計数部140は、全メッセージを時刻順に並べる。
(手順3)計数部140は、メッセージ管理テーブル121の各レコードを時刻順に参照し、各サーバに対するリクエストをキャプチャしたらそのサーバの処理要求滞在数に1加算する。また、そのリクエストに対するレスポンスをキャプチャした時刻で処理要求滞在数を1減算する。
ここで、手順1のような処理を行うのは、リクエスト/レスポンスのどちらか一方が存在しないために処理要求滞在数の値が増加し続けてしまうことを防止するためである。その要因として、例えばサーバで異常処理が発生してレスポンスを返せない場合が考えられる。また、例えば実際にはレスポンスが返っているにもかかわらず、通信パケットのキャプチャ段階でパケット落ちが生じてしまい、運用管理サーバ100でレスポンスを検出できない場合が考えられる。
カウンタテーブル122には、例えば、項番が“1”、時刻が“01:58:19.987”、Webサーバが“1”、Appサーバが“0”、DBサーバが“0”という情報が設定される。計数部140は、メッセージ管理テーブル121を参照してこのレコードを生成できる。具体的には、メッセージ管理テーブル121によれば時刻“01:58:19.987”にHTTPリクエストの通信パケットがキャプチャされていることが分かる。すなわち、Webサーバ200に対してHTTPリクエストが送信されたことを示す。このため、計数部140はカウンタテーブル122において、Webサーバ200につき時刻“01:58:19.987”で本HTTPリクエストによって生じた処理要求滞在数として1を加算する。ただし、カウンタテーブル122では時刻“01:58:19.987”よりも前には、各サーバの処理要求滞在数が0であった場合を示している。よって、時刻“01:58:19.987”におけるWebサーバ200の処理要求滞在数は、“0+1=1”となる。
また、計数部140はその要求に対する応答がなされた場合に、処理要求滞在数を1減算する。例えば、メッセージ管理テーブル121によれば、時刻“01:58:19.987”のHTTPリクエスト(セッション番号“132290”)に対して、時刻“01:58:21.330”にHTTPレスポンス(セッション番号“132290”)が送信されている。このため、計数部140はカウンタテーブル122において、Webサーバ200につき時刻“01:58:21.330”で本HTTPレスポンスによって減少した処理要求滞在数として1を減算する。ここで、時刻“01:58:21.330”の直前の時刻“01:58:21.299”でWebサーバ200の処理要求滞在数は“2”である。よって、時刻“01:58:21.330”におけるWebサーバ200の処理要求滞在数は、“2−1=1”となる。
計数部140は、同様にしてAppサーバ300およびDBサーバ400における通信パケットをキャプチャした各時刻(サンプリング時刻)における処理要求滞在数を取得することができる。
更に、計数部140は取得した複数のサンプリング時刻における処理要求滞在数を所定のサンプリング周期で抽出する。サンプリング周期は、例えば1秒とする。その場合、計数部140は、例えば時刻“01:58:20.000”、“01:58:21.000”、・・・における各サーバの処理要求滞在数を抽出する。計数部140は、時刻“01:58:20.000”の直前に記録された時刻“01:58:19.987”に取得された各サーバの処理要求滞在数を時刻“01:58:20.000”の各サーバの処理要求滞在数として取得する。また、計数部140は時刻“01:58:21.000”の直前に記録された時刻“01:58:20.991”に取得された各サーバの処理要求滞在数を時刻“01:58:21.000”の各サーバの処理要求滞在数として取得する。
このようにして、計数部140はサンプリング周期(例えば、1秒)ごとの各サーバの処理要求滞在数を取得する。
図10は、第2の実施の形態の処理要求滞在数テーブルのデータ構造例を示す図である。処理要求滞在数テーブル123は、計数部140によって生成され、計数情報記憶部120に格納される。処理要求滞在数テーブル123には、サーバ名を示す項目および処理要求滞在数を示す項目が設けられている。各項目の横方向に並べられた情報同士が互いに関連付けられて、1つのサーバの各時刻における処理要求滞在数を示す。
サーバ名を示す項目には、サーバの名称が設定される。処理要求滞在数を示す項目には、各時刻における処理要求滞在数が設定される。
処理要求滞在数テーブル123には、例えばサーバ名が“Webサーバ”、処理要求滞在数が時刻“1:58:20”に“23”、時刻“1:58:21”に“25”、・・・という情報が設定される。これらの値は、カウンタテーブル122から対応する時刻の処理要求滞在数として取得した値である。
なお、カウンタテーブル122では、処理要求滞在数の変化が分かり易いように小さな値を用いて説明した。しかし、現実のシステム運用の際には、カウンタテーブル122では、それよりも大きな値が計数されることが考えられる。そこで、以降の説明をより具体的にするために、処理要求滞在数テーブル123ではカウンタテーブル122で示した値よりも大きな値でデータを例示している。
ここで、カウンタテーブル122および処理要求滞在数テーブル123は、頻度分布を取得するための元データであり、計数情報に対応するものである。
なお、計数部140がカウンタテーブル122から所定のサンプリング周期で処理要求滞在数を抽出する理由は、処理するデータ量を削減して演算コストを低減するためである。ただし、カウンタテーブル122をそのまま処理要求滞在数テーブル123として扱うこともできる。
図11は、集中度の定義を示す図である。ボトルネック検出処理部150は、計数情報記憶部120に記憶された処理要求滞在数テーブル123に基づいて、処理要求滞在数の頻度分布600を得たとする。頻度分布600には、各処理要求滞在数の値に対する頻度の系列を示す分布関数601が示されている。
ボトルネック検出処理部150は、次のような方法MA1または方法MA2の何れかによって、最大値近傍の分布の集中度を算出する。なお、集中度とは前述したとおり、処理要求滞在数の発生頻度がどれだけ処理要求滞在数の最大値直前に集中しているかを示す指標である。
(方法MA1)ボトルネック検出処理部150は、頻度分布における処理要求滞在数の最大値Xを取得する。次に、集中度を求めるための最大値からの範囲を決める比率p(p<1)をXに乗じたpXを求める。ここで、比率pは業務システムを構成するアプリケーションに応じて決定する。比率pとして、例えば0.9が予め設定される。そして、ボトルネック検出処理部150は、分布全体に含まれるイベント数E1とpX以上X以下に含まれる各処理要求滞在数のイベント数E2との比E2/E1を集中度とする。
(方法MA2)pXを求めるまでは方法MA1と同様である。次に、ボトルネック検出処理部150は、分布関数601と横軸とで囲まれる領域の面積S1を算出する。また、分布関数601と横軸と処理要求滞在数=pXの直線とで囲まれる領域602の面積S2を算出する。そして、各面積の比S2/S1を集中度とする。
ここで、方法MA1をとる場合、最大値Xと比率pの値によってはXが小さい値のときに、集中度が最大値Xに対応するイベント数のみによって決定されてしまい、集中度を適切に評価できないことが考えられる。例えば、最大値X=6、p=0.9の場合、集中度の評価の対象範囲は、処理要求滞在数が5.4以上6以下の範囲である。このため、E2の値は、最大値X(=6)に対応するイベント数と等しくなり、Xよりも小さい処理要求滞在数を考慮した集中度を精度良く評価することができない。
よって、処理要求滞在数の値が小さな値で最大値をとる場合にも集中度を精度良く評価するためには、方法MA2のように面積比S2/S1を集中度とすることが好ましい。なぜなら、このように評価すれば集中度の評価対象範囲の最小値(例えば5.4)と最大値(例えば6)とを集中度の算出結果に反映させることができるためである。以下では、集中度の算出方法として方法MA2を用いる場合を想定する。
なお、最大値Xが大きな値(例えば10以上の値)のときには方法MA1を用い、最大値Xが小さな値(例えば10よりも小さい値)のときには方法MA2を用いてもよい。このようにすると、集中度の評価精度を保ちつつ演算負荷を軽減できる。
図12は、正規分布か否かの判定方法の具体例を示す図である。ボトルネック検出処理部150は、計数情報記憶部120に記憶された処理要求滞在数テーブル123に基づいて、処理要求滞在数の頻度分布600aを得たとする。頻度分布600aには、各処理要求滞在数の値に対する頻度の系列を示す分布関数601aが示されている。ここで、頻度分布600aには複数のピークが表れることもある。その場合、分布関数601aは複数のピークのうち、処理要求滞在数が最も大きな値に対応するピークを示す分布関数とする。
ボトルネック検出処理部150は、分布関数601aで示される分布を正規分布とみなせるか否かを、次のような方法MB1または方法MB2の何れかによって判定できる。
(方法MB1)分布関数601aを正規分布関数でフィッティングする。フィッティングの方法としては、例えば非線形最小二乗法を用いることができる。フィッティングの結果得られた分布関数と分布関数601aとに基づいてχ2乗検定を行う。すなわち、両関数に対応するスペクトルの残差に基づくχ2乗値、χ2乗分布の自由度および各自由度におけるχ2乗分布によりを正規分布とみなすか否かを判定することができる。なお、検定に必要な情報(例えば、各自由度におけるχ2乗分布や検定の有意水準等)は予め与えられる。
(方法MB2)処理要求滞在数の出現頻度の最も大きな値Yから処理要求滞在数の最大値Xまでの範囲603で分布関数601aが単調減少となっているかを判定する。単調減少となっている場合、正規分布とみなす。単調減少となっていない場合、正規分布とはみなさない。なお、Y=Xの場合には、単調減少にはなっていないものとし、正規分布とはみなさない。
ここで、方法MB1と方法MB2とでは、方法MB2の方がその演算負荷が小さい。よって、正規分布の判定を厳密に行う必要がなく、当判定処理による負荷を軽減するためには、方法MB2をとることが好ましい。
次に、以上のような構成を備える運用管理サーバ100の処理手順を詳細に説明する。
図13は、第2の実施の形態のパケットキャプチャ処理を示すフローチャートである。以下、図13に示す処理をステップ番号に沿って説明する。
[ステップS11]パケット受信部130は、スイッチ装置10からの通信パケットの受信の待ち受けを開始する。なお、パケット受信部130は、この開始処理を、例えば管理者によるキーボード12やマウス13を用いた所定の開始入力(開始コマンド)を受け付けたタイミングで実行する。そして、パケット受信部130は、例えば管理者によるキーボード12やマウス13を用いた所定の停止入力(停止コマンド)を受け付けるまで以降の処理を繰り返し実行する。
[ステップS12]パケット受信部130は、受信した通信パケットをキャプチャして、パケット記憶部110に格納する。ここで、パケット受信部130は、キャプチャした通信パケット群を所定時間ごとに区切った複数のファイルとして出力する。
[ステップS13]パケット受信部130は、停止コマンドを受け付けるとパケットキャプチャ処理を停止する。
このように、パケット受信部130は、通信パケット群を一定時間溜めた複数のファイルとして出力する。以下、通信パケット群を溜めて1ファイルを生成する時間の周期をボトルネック解析周期と呼ぶこととする。計数部140は、ボトルネック解析周期で出力されたファイル単位で計数処理を実行できる。
ここで、ボトルネック解析周期は、長すぎるとパケットデータ量が増大して後段の計数処理の計算量が多くなり運用管理サーバ100に過大な負荷がかかる。また、短期間で生じるボトルネックを見逃す可能性がある。一方、ボトルネック解析周期は、短すぎるとパケットデータ量が少なすぎて特定の少数の処理に結果が大きく影響を受けてしまう可能性がある。よって、ボトルネック解析周期は、システムを構成するハードウェアやアプリケーションの処理に応じて適切な周期とすることが望ましい。例えば、本実施の形態の業務システムのようなWeb3階層システムでは10〜60秒程度とすることが考えられる。
なお、パケット情報を複数のファイルとして出力することで、パケットキャプチャ処理とボトルネック検出処理とを同時に並列して行うことができる。すなわち、ボトルネック検出のためにパケットキャプチャ処理を停止する必要がないので、パケットキャプチャ処理を停止している間の通信パケットの欠落を防止できる。そして、計数部140は、例えばパケット受信部130によってパケット記憶部110に新たなファイルが出力されるたびに、出力されたファイルの計数処理を実行できる。
次に、ボトルネックの発生の有無を監視する処理を説明する。ボトルネック検出処理は、この監視処理に含まれる。
図14は、第2の実施の形態の監視処理を示すフローチャートである。以下、図14に示す処理をステップ番号に沿って説明する。
[ステップS21]計数部140は、パケット受信部130がパケット記憶部110にファイルを出力したかの監視を開始する。なお、計数部140は、この開始処理を、例えば、管理者によるキーボード12やマウス13を用いた所定の開始入力(開始コマンド)を受け付けたタイミングで実行する。そして、計数部140は、例えば管理者によるキーボード12やマウス13を用いた所定の停止入力(停止コマンド)を受け付けるまで以降の処理を繰り返し実行する。ここで、開始コマンドや停止コマンドは、ステップS11に示したパケット受信部130に対する各コマンドとそれぞれ同一のコマンドとして受け付けてもよいし、別個のコマンドとして受け付けてもよい。
[ステップS22]計数部140は、パケット記憶部110に新たなファイルが出力されると、そのファイルを読み取る。
[ステップS23]計数部140は、読み取ったファイルに基づいて各サーバで送受信されたメッセージを復元する。
[ステップS24]計数部140は、復元したメッセージに基づいてメッセージ管理テーブルを生成し、計数情報記憶部120に格納する。計数部140は、メッセージ管理テーブルに基づいてカウンタテーブルを生成し、計数情報記憶部120に格納する。計数部140は、カウンタテーブルに基づいて処理要求滞在数テーブル123を生成して、計数情報記憶部120に格納する。
[ステップS25]ボトルネック検出処理部150は、処理要求滞在数テーブル123に基づいて、各サーバにおける処理要求滞在数の頻度分布を求める。そして、ボトルネック検出処理部150は、各サーバで求めた分布が所定の条件を満たしているかを判定して、条件を満たすサーバをボトルネック候補として検出する。ボトルネック検出処理部150は、ボトルネック候補からボトルネックとなり得るサーバを特定して、特定結果を報知部160に出力する。報知部160は、ボトルネック検出処理部150から取得したサーバを示す情報を業務システムの管理者に報知する。
[ステップS26]計数部140は、停止コマンドを受け付けるとファイル出力の監視を停止する。これにより、ボトルネック発生の有無の監視処理が完了する。
このように、計数部140は、パケット受信部130のパケットキャプチャによって、パケット記憶部110に新たなファイルが出力されると、計数処理を実行する。そして、ボトルネック検出処理部150は、計数部140によって計数情報記憶部120に出力された処理要求滞在数テーブル123に基づいて、ボトルネック検出処理を実行する。
次に、ステップS25のボトルネック検出処理を詳細に説明する。
図15は、第2の実施の形態のボトルネック検出処理を示すフローチャートである。以下、図15に示す処理をステップ番号に沿って説明する。
[ステップS31]ボトルネック検出処理部150は、業務システムの階層単位に以降のステップS38までの処理を繰り返し実行する。なお、本実施の形態では、各階層にサーバは1台ずつであるので、サーバごとに順次実行すればよい。
[ステップS32]ボトルネック検出処理部150は、計数情報記憶部120に記憶された処理要求滞在数テーブル123に基づいて、処理対象のサーバの処理要求滞在数の頻度分布を取得する。
[ステップS33]ボトルネック検出処理部150は、取得した頻度分布における処理要求滞在数の最大値を特定する。
[ステップS34]ボトルネック検出処理部150は、頻度分布における処理要求滞在数の最大値近傍の集中度を算出する。
[ステップS35]ボトルネック検出処理部150は、集中度が閾値以上であるか否かを判定する。閾値以上である場合、処理をステップS36に進める。閾値よりも小さい場合、処理をステップS38に進める。
[ステップS36]ボトルネック検出処理部150は、頻度分布が正規分布であるか否かを判定する。正規分布でない場合、処理をステップS37に進める。正規分布である場合、処理をステップS38に進める。
[ステップS37]ボトルネック検出処理部150は、処理対象のサーバをボトルネック候補として追加する。
[ステップS38]ボトルネック検出処理部150は、全階層(サーバ)について処理済みであれば、処理をステップS39に進める。未処理の階層(サーバ)が存在する場合、処理をステップS31に進める。
[ステップS39]ボトルネック検出処理部150は、ステップS31〜S38の処理でボトルネック候補を検出しているか否かを判定する。検出している場合、処理をステップS40に進める。検出していない場合、処理を完了する。
[ステップS40]ボトルネック検出処理部150は、ボトルネック候補が複数検出されたか否かを判定する。複数ある場合、処理をステップS41に進める。複数でない、すなわち、1つだけ検出されている場合、処理をステップS42に進める。
[ステップS41]ボトルネック検出処理部150は、複数のボトルネック候補のうち、最下位の階層のサーバをボトルネックと特定する。例えば、ボトルネック候補としてAppサーバ300およびDBサーバ400が検出されている場合、DBサーバ400をボトルネックと特定する。ボトルネック検出処理部150は、特定したボトルネックのサーバを示す情報を報知部160に出力する。
[ステップS42]報知部160は、ボトルネック検出処理部150から取得したボトルネックのサーバを示す情報を管理者に報知する。
このようにして、ボトルネック検出処理部150はボトルネックのサーバを検出する。
ボトルネック検出処理部150は処理要求滞在数の頻度分布に基づいてボトルネック候補を検出する。このため、従来の方法と比べて複数の階層のサーバで処理遅延等が生じた場合にも適切にボトルネック候補を検出できる。例えば、次のような問題を解決できる。
処理時間等を測定する従来の方法では、上位の階層に対する下位の階層がボトルネックとなっている場合を適切に検知することが困難であった。例えば、上位階層から下位階層に送信される処理要求の数が、下位階層で処理可能な数を超えて際限なく増加すると、下位階層における応答時間が増加し続けることが想定される。しかし、下位階層での処理要求滞在数がアプリケーションの動作設定などで制限されているために、下位階層への処理要求の数が上位階層で適切にコントロールされている場合は、下位階層に対する所定数以上の処理要求の送信が制限される。この場合、下位階層における処理時間の増加はある程度抑制される。その一方で、上位階層では下位階層へ処理要求を送信するまでの待ち時間が増加する。したがって、上位階層で処理遅延が発生する。
この場合、従来の方法では各階層で生じた遅延が、該当の階層の装置の処理時間の増加によるものか、他階層における処理待ちの時間の増加によるものか、を区別することが困難であった。このため、処理待ちの時間が増加した方の階層(上記の例では上位階層)にボトルネックが存在すると誤認してしまう可能性もあった。
これに対し、ボトルネック検出処理部150のように処理要求滞在数の頻度分布の集中度を評価する。これにより、アプリケーションによる処理要求滞在数の制限を考慮して適切にボトルネック候補を検出することができる。
なお、各階層に複数のサーバが設けられている場合には、何れの階層がボトルネックとなっているかを検出することができる。例えば、Web層にWebサーバが複数台設けられている場合には、計数部140は各Webサーバの処理要求滞在数の総和(階層単位処理要求滞在数)をWeb層における処理要求滞在数として求めることができる。これにより、処理要求滞在数テーブル123の処理要求滞在数を示す項目の値をWebサーバ、AppサーバおよびDBサーバ単位での値に代えて、Web層、App層およびDB層の階層単位処理要求滞在数として取得できる。そして、ボトルネック検出処理部150は、このように階層単位で取得された処理要求滞在数テーブルに基づき上記ボトルネック検出処理を実行することで、ボトルネックとなっている階層を特定できる。
更に、このように階層単位でボトルネックを求めるのか、サーバ単位でボトルネックを求めるのかを管理者によって選択可能としてもよい。例えば、運用管理サーバ100は、そのためのGUIをモニタ11に表示させる。そして、管理者のキーボード12やマウス13を用いた選択操作の入力を受け付けることができる。
以下、ボトルネック検出処理の具体例として3つのパターンを示す。
第1のパターンは、単一のサーバでボトルネックが発生しているケースである。
第2のパターンは、下位の階層のサーバでボトルネックが発生しており、上位の階層のサーバにその影響が波及するパターンである。
第3のパターンは、最下位の階層のサーバでボトルネックが発生しており、上位の全ての階層のサーバにその影響が波及するパターンである。
まず、第1のパターンを説明する。
図16は、処理要求滞在数の時系列推移の第1のパターンを例示する図である。時系列推移510には、系列511,512,513が示されている。系列511は、Webサーバ200の処理要求滞在数の時間推移を示している。系列512は、Appサーバ300の処理要求滞在数の時間推移を示している。系列513は、DBサーバ400の処理要求滞在数の時間推移を示している。
時系列推移510では、Appサーバ300における処理の並列度が“15”に制限されていることによって、Appサーバ300にボトルネックが存在している場合を例示している。業務システムの利用予測を誤って、Appサーバ300における最大スレッド数を低く設定してしまったことが本ボトルネック発生の典型的な原因として考えられる。ここで、Webサーバ200およびDBサーバ400には処理の並列度に制限は存在しない、あるいは、処理の並列度の許容量に十分余裕があるものとする。
この場合、系列512に示すようにAppサーバ300における処理要求滞在数がほぼ“15”あるいは、それよりも小さい値をとって推移する。そして、そのうちの一定割合がDBサーバ400へアクセスするので、DBサーバ400における処理要求滞在数も特定の値をとることが多くなる。ただし、この場合はDBサーバ400の処理要求滞在数に制限は存在していない(あるいは、処理要求滞在数の許容量に十分余裕がある)。よって、系列513は最も高頻度の処理要求滞在数を挟む前後の値もとりながら推移する。
図17は、処理要求滞在数の頻度分布の第1のパターンを例示する図である。頻度分布610には、分布611,612,613が示されている。分布611は、Webサーバ200の処理要求滞在数の頻度分布を示している。分布611は、系列511に対応する。分布612は、Appサーバ300の処理要求滞在数の頻度分布を示している。分布612は、系列512に対応する。分布613は、DBサーバ400の処理要求滞在数の頻度分布を示している。分布613は、系列513に対応する。
Webサーバ200およびDBサーバ400では、処理要求滞在数が制限に達しておらず、分布611,613は正規分布(あるいは、それの複合)に近くなる。一方、Appサーバ300では、系列512で示したように処理要求滞在数がほぼ“15”で推移する。このため、分布612は処理要求滞在数“15”を最大値として頻度のピークをとり、“15”よりも小さい値に向かって減少する。なお、分布612において処理要求滞在数“16”以上の頻度は“0”である。
ボトルネック検出処理部150は、図15に示したボトルネック検出処理の手順によって分布611,612,613を解析し、ボトルネック候補を検出する。
具体的には、まず、解析対象とするサーバを選択し、そのサーバに対応する分布を取得する。取得した分布に含まれる処理要求滞在数の最大値近傍の集中度を算出する。そして、集中度が所定の閾値以上であるか、その分布が正規分布に従うかを判定する。集中度が所定の閾値以上で、かつ、その分布が正規分布に従う場合には、その分布に対応するサーバをボトルネック候補とする。そして、次のサーバを選択して上記の処理をサーバごとに繰り返す。
例えば、Webサーバ200は、分布611について集中度が所定の閾値以上とならないとして、ボトルネック候補にはならない。また、Appサーバ300は、分布612について集中度が所定の閾値以上となり、かつ、正規分布ではないとしてボトルネック候補となる。また、DBサーバ400は、分布613について集中度が所定の閾値以上となるが、正規分布に従うとして、ボトルネック候補にはならない。
このように、ボトルネック検出処理部150は、処理要求滞在数に制限が加えられていることによってボトルネックとなっているサーバを適切に検出できる。
上記第1のパターンでは、Appサーバ300にボトルネックが発生しているが、それが継続的なものではない場合を示した。すなわち、長期平均でみると業務システム全体としては、許容される応答時間で処理できる範囲での負荷の場合である。これに対し、端末装置21,22,23から送られてくるリクエストが長期に渡り継続して多量に送信され続けると、そのリクエストは上位のWebサーバ200に滞留する。この場合が第2のパターンである。
以下、第2のパターンを説明する。
図18は、処理要求滞在数の時系列推移の第2のパターンを例示する図である。時系列推移520には、系列521,522,523が示されている。系列521は、Webサーバ200の処理要求滞在数の時間推移を示している。系列522は、Appサーバ300の処理要求滞在数の時間推移を示している。系列513は、DBサーバ400の処理要求滞在数の時間推移を示している。
時系列推移520では、Appサーバ300における処理の並列度が“15”に制限されていることによって、Appサーバ300にボトルネックが存在している場合を例示している。ここで、Webサーバ200およびDBサーバ400には処理の並列度に制限は存在しない、あるいは、処理の並列度の許容量に十分余裕があるものとする。
この場合、系列522に示すようにAppサーバ300における処理要求滞在数がほぼ“15”あるいは、それよりも小さい値をとって推移する。そして、そのうちの一定割合がDBサーバ400へアクセスするので、DBサーバ400における処理要求滞在数も特定の値をとることが多くなる。ただし、この場合はDBサーバ400の処理要求滞在数に制限は存在していない(あるいは、処理要求滞在数の許容量に十分余裕がある)。よって、系列523は最も高頻度の処理要求滞在数を挟む前後の値もとりながら推移する。
また、Webサーバ200は端末装置21,22,23からHTTPリクエストを受信し続けている。このために、Webサーバ200がAppサーバ300に対して依頼する処理のIIOPリクエスト数がAppサーバ300の処理できる許容量(“15”)を平均して上回っている。この場合、Webサーバ200ではAppサーバ300にIIOPリクエストを送信したとしても、そのリクエストに対してAppサーバ300からIIOPレスポンスを受信できないといった状態が発生する。Webサーバ200は、例えば、そのようなIIOPリクエストにつきAppサーバ300からIIOPレスポンスを得られるまで所定の間隔で再送し続ける。したがって、Webサーバ200において、端末装置21,22,23に対して、HTTPレスポンスを送信できないものが蓄積される。その結果、Webサーバ200における処理要求滞在数が時間の経過とともに増加し続ける。
図19は、処理要求滞在数の頻度分布の第2のパターンを例示する図である。頻度分布620には、分布621,622,623が示されている。分布621は、Webサーバ200の処理要求滞在数の頻度分布を示している。分布621は、系列521に対応する。分布622は、Appサーバ300の処理要求滞在数の頻度分布を示している。分布622は、系列522に対応する。分布623は、DBサーバ400の処理要求滞在数の頻度分布を示している。分布623は、系列523に対応する。
Webサーバ200およびDBサーバ400では、処理要求滞在数が制限に達しておらず、分布621,623は正規分布(あるいは、それの複合)に近くなる。一方、Appサーバ300では、系列522で示したように処理要求滞在数がほぼ“15”で推移する。このため、分布622は処理要求滞在数“15”を最大値として頻度のピークをとり、“15”よりも小さい値に向かって減少する。なお、分布622において処理要求滞在数“16”以上の頻度は“0”である。
また、Webサーバ200では、系列521で示したように処理要求滞在数が時間の経過とともに増加し続ける。このため、分布621では、分布611で示したよりも大きな値の処理要求滞在数が測定される。
ボトルネック検出処理部150は、図15に示したボトルネック検出処理の手順によって分布621,622,623を解析し、ボトルネック候補を検出する。
例えば、Webサーバ200は、分布621について集中度が所定の閾値以上とならないとして、ボトルネック候補にはならない。また、Appサーバ300は、分布622について集中度が所定の閾値以上となり、かつ、正規分布ではないとしてボトルネック候補となる。また、DBサーバ400は、分布623について集中度が所定の閾値以上となるが、正規分布に従うとして、ボトルネック候補にはならない。
このように、ボトルネック検出処理部150は、ボトルネックとなっているサーバの影響が波及して、処理要求滞在数が大きく増加した上位のサーバが存在する場合でも、適切にボトルネックとなっているサーバを検出できる。
次に、第3のパターンを説明する。第3のパターンでは、Appサーバ300およびDBサーバ400に処理要求滞在数の制限がある場合である。
図20は、処理要求滞在数の時系列推移の第3のパターンを例示する図である。時系列推移530には、系列531,532,533が示されている。系列531は、Webサーバ200の処理要求滞在数の時間推移を示している。系列532は、Appサーバ300の処理要求滞在数の時間推移を示している。系列533は、DBサーバ400の処理要求滞在数の時間推移を示している。
時系列推移530では、Appサーバ300における処理の並列度が“25”に制限され、かつ、DBサーバ400における処理の並列度が“6”に制限されている場合を例示している。ここで、Webサーバ200には処理の並列度に制限は存在しない、あるいは、処理要求滞在数の許容量に十分余裕があるものとする。
この場合、系列533に示すようにDBサーバ400における処理要求滞在数がほぼ“6”あるいは、それよりも小さい値をとって推移している。一方で、系列531で示すように、Webサーバ200は端末装置21,22,23からのリクエストを受信し続けている。そして、系列532に示すようにAppサーバ300はWebサーバ200から受信するリクエストに応答しきれずに、処理要求滞在数が増加する(時刻“1:58:20〜27”の範囲)。更に、それ以降では系列532に示すようにAppサーバ300における処理要求滞在数がほぼ“25”あるいは、それよりも小さい値をとって推移する。
図21は、処理要求滞在数の頻度分布の第3のパターンを例示する図である。頻度分布630には、分布631,632,633が示されている。分布631は、Webサーバ200の処理要求滞在数の頻度分布を示している。分布631は、系列531に対応する。分布632は、Appサーバ300の処理要求滞在数の頻度分布を示している。分布632は、系列532に対応する。分布633は、DBサーバ400の処理要求滞在数の頻度分布を示している。分布633は、系列533に対応する。
Webサーバ200では、処理要求滞在数が制限に達しておらず、分布631は正規分布(あるいは、それの複合)に近くなる。また、Webサーバ200では、系列531に示したように処理要求滞在数が時間の経過とともに増加し続ける。
一方、DBサーバ400では、系列533で示したように処理要求滞在数がほぼ“6”で推移する。このため、分布633は処理要求滞在数“6”を最大値として頻度のピークをとり、“6”よりも小さい値に向かって減少する。なお、分布633において処理要求滞在数“7”以上の頻度は“0”である。
また、Appサーバ300では、系列532で示したように処理要求滞在数がほぼ“25”で推移する。このため、分布632は処理要求滞在数“25”を最大値として頻度のピークをとり、“25”よりも小さい値に向かって減少するような分布となる。なお、分布632において処理滞在数“26”以上の頻度は“0”である。
ボトルネック検出処理部150は、図15に示したボトルネック検出処理の手順によって分布631,632,633を解析し、ボトルネック候補を検出する。
例えば、Webサーバ200は、分布631について集中度が所定の閾値以上とならないとして、ボトルネック候補にはならない。また、Appサーバ300は、分布632について集中度が所定の閾値以上となり、かつ、正規分布ではないとしてボトルネック候補となる。また、DBサーバ400は、分布633について集中度が所定の閾値以上となり、かつ、正規分布ではないとしてボトルネック候補となる。
ここで、ボトルネック検出処理部150は、ボトルネック候補としてAppサーバ300およびDBサーバ400を検出する。このような場合には、ボトルネック検出処理部150は、より下位の階層のサーバをボトルネックと特定する。
すなわち、複数のボトルネック候補が存在する場合には、上位の階層における処理要求滞在数の増加は、下位の階層の処理要求滞在数の増加の影響によって、二次的に引き起こされたと考える。これにより、複数の階層のサーバでボトルネック候補を検出した場合にも、適切にボトルネックを特定することができる。
[第3の実施の形態]
以下、第3の実施の形態について説明する。前述の第2の実施の形態との相違点を中心に説明し、同様の事項については説明を省略する。
第3の実施の形態では、業務システムにおける個々の処理単位にボトルネック候補を検出可能とする。以下、そのための構成について詳細に説明する。
なお、第3の実施の形態の業務システムの全体構成は、図2で示した第2の実施の形態の業務システムの全体構成と同様であるため説明を省略する。ただし、運用管理サーバ100に代えて運用管理サーバ100aを設ける。
また、第3の実施の形態の業務システムに含まれる各装置のハードウェア構成は、図3で示した第2の実施の形態の運用管理サーバ100のハードウェア構成と同様であるため説明を省略する。
図22は、第3の実施の形態の運用管理サーバの機能構成を示す図である。運用管理サーバ100aは、パケット記憶部110、計数情報記憶部120a、パケット受信部130、計数部140a、ボトルネック検出処理部150a、報知部160および業務モデル記憶部170を有する。これらの機能は、所定のプログラムをCPU101が実行することで実現される。なお、これらの機能の少なくとも一部または全部を専用のハードウェアにより実現してもよい。
ここで、パケット記憶部110、パケット受信部130および報知部160は、図4で示した第2の実施の形態の運用管理サーバ100で同一の符号を付して説明した構成と同一であるため説明を省略する。
計数情報記憶部120aは、計数情報を記憶する。ここで、第2の実施の形態では計数情報をサーバごとに取得した。これに対し、第3の実施の形態では、計数情報を処理単位で取得する。処理単位とは、業務システムにおいて実行される処理の単位を示すものである。例えば、端末装置21,22,23から受け付けたHTTPリクエストに対してHTTPレスポンスを応答するまでに各サーバで実行される一連の処理を1単位に定義することができる。なお、以下では、この処理単位を業務モデルと呼ぶこととする。
計数部140aは、パケット記憶部110に記憶されたパケット情報に基づいて、各サーバの間で送受信されるメッセージを復元する。計数部140aは、業務モデル記憶部170に記憶された業務モデル定義情報を参照して、復元したメッセージを業務モデルに対応付ける。計数部140aは、各業務モデルのメッセージに基づいて、業務モデルごとの各サーバの処理要求滞在数を計数し、計数情報を生成する。計数部140aは、生成した計数情報を計数情報記憶部120aに格納する。
ボトルネック検出処理部150aは、計数情報記憶部120aに記憶された計数情報に基づいて、業務モデルごとの各サーバの処理要求滞在数の頻度分布を解析し、頻度分布が所定の条件を満たすサーバをボトルネック候補として検出する。この条件は、ボトルネック検出処理部150が用いる条件1,2と同一である。
ボトルネック検出処理部150aは、検出したボトルネック候補からボトルネックとなり得るサーバを特定して、特定結果を報知部160に出力する。
業務モデル記憶部170は、業務システムで実行され得る複数の業務モデルを定義した業務モデル定義情報を記憶する。
図23は、第3の実施の形態の業務モデル定義ファイル群を例示する図である。業務モデル定義ファイル群171は、業務モデル記憶部170に格納される。業務モデル定義ファイル群171は、業務モデルを定義するための情報の集合である。業務モデル定義ファイル群171には、メッセージパターン定義ファイル171aおよびエイリアス定義ファイル171bが含まれる。
メッセージパターン定義ファイル171aは、メッセージの内容と業務モデルとを対応付けるための情報を含む。メッセージパターン定義ファイル171aの内容は、例えばXML(Extensible Markup Language)を用いて記述できる。以下、メッセージパターン定義ファイル171aに便宜的に付した行番号を示して説明する。
メッセージパターン定義ファイル171aには、例えばモデルIDが“Model−3”の業務モデルに関する定義情報が含まれる。メッセージパターン定義ファイル171aによれば、モデルID“Model−3”の業務モデルでは、以下のメッセージを順に取得することが分かる。
(1)Webサーバ200は、HTTPのPOSTメソッドで“POST /CGI−BIN/AXXPF3943?_ZID=AXXG13130”というURL(Uniform Resource Locator)を含むHTTPリクエストを受信する。Webサーバ200は、このHTTPリクエストに対するHTTPレスポンスにステータスコード“200”を含めてリクエスト元に送信する。この内容は、3〜6行目に対応する。
(2)Appサーバ300は、“AXXG13130/INF/H01”というオブジェクトの取得要求を含むIIOPリクエストをWebサーバ200から受信する。Appサーバ300は、このIIOPリクエストに対するIIOPレスポンスにステータスを示すコード“0”を含めてWebサーバ200に送信する。この内容は、7〜10行目に対応する。
(3)DBサーバ400は、クエリとしてエイリアスの識別番号“5,7,10,13”で示されるSQL文を含むDBリクエストを順番にAppサーバ300から受信する。この内容は、11〜14行目に対応する。
ここで、計数部140aは、エイリアスの識別番号で指定されるSQL文の記述内容を、エイリアス定義ファイル171bを参照することで取得できる。
エイリアス定義ファイル171bは、メッセージパターン定義ファイル171aで使用される文字列に対するエイリアスを定義したファイルである。例えば、メッセージパターン定義ファイル171aにおいて、12行目の“[5,7,10,13]”は、それぞれエイリアス定義ファイル171bの1〜4行目に示されたSQL文で置換した内容に読み替えることができる。
なお、メッセージパターン定義ファイル171aやエイリアス定義ファイル171bには、業務モデルとメッセージとの対応付けを行う上で必要となる最低限の判定用文字列(例えば、URLやSQL文の一部)が定義されていればよい。
図24は、第3の実施の形態の業務メッセージ解析データを例示する図である。業務メッセージ解析データ172は、計数部140aにより、復元メッセージ111と業務モデル定義ファイル群171とに基づいて生成され、業務モデル記憶部170に格納される。業務メッセージ解析データ172は、計数部140aがパケット記憶部110に記憶されたパケット情報から復元した復元メッセージ111を業務モデルと対応付けたデータである。
業務メッセージ解析データ172には、マッチング結果フィールド172a,172b,172cが含まれる。マッチング結果フィールド172a,172b,172cは、業務モデル定義ファイル群171に含まれる判定用文字列で復元メッセージ111に含まれるメッセージをマッチングし、マッチングに適合したメッセージを抽出して設定するフィールドである。
マッチング結果フィールド172aには、例えばHTTPリクエストとHTTPレスポンスとの組の抽出結果が設定される。マッチング結果フィールド172bには、例えばIIOPリクエストとIIOPレスポンスとの組の抽出結果が設定される。マッチング結果フィールド172cには、例えばDBリクエストとDBレスポンスとの組の抽出結果が設定される。
計数部140aは、このように業務モデル定義ファイル群171に含まれる判定用文字列が復元メッセージ111に所定の順番で含まれるか否かによって、該当の業務モデルで定義づけられた処理が行われたか否かを検出することができる。
計数部140aは、業務メッセージ解析データ172に基づいて、業務モデルごとのメッセージ管理テーブルを生成し、計数情報記憶部120aに格納する。
図25は、第3の実施の形態のメッセージ管理テーブルのデータ構造例を示す図である。メッセージ管理テーブル121a,121b,121c,・・・は、計数部140aによって業務メッセージ解析データ172に基づいて生成され、計数情報記憶部120aに格納される。メッセージ管理テーブル121a,121b,121c,・・・は、計数部140aが計数処理を効率的に実行するためのデータである。メッセージ管理テーブル121a,121b,121c,・・・は、各業務モデルに対応付けて生成され得る。例えば、メッセージ管理テーブル121aは、モデルID“Model−3”に対応するものである。
なお、メッセージ管理テーブル121a,121b,121c,・・・の構成は、図8で示した第2の実施の形態のメッセージ管理テーブル121の構成と同様である。
図26は、第3の実施の形態のカウンタテーブルのデータ構造例を示す図である。カウンタテーブル122a,122b,122c,・・・は、計数部140aによってメッセージ管理テーブル121a,121b,121c,・・・に基づいて生成され、計数情報記憶部120aに格納される。カウンタテーブル122a,122b,122c,・・・は、各業務モデルに対応付けて生成される。例えば、カウンタテーブル122aは、モデルID“Model−3”に対応するものである。
なお、カウンタテーブル122a,122b,122c,・・・の構成は、図9で示した第2の実施の形態のカウンタテーブル122の構成と同様である。また、カウンタテーブル122a,122b,122c,・・・の生成手順は、図9の説明において示した手順1〜3と同様である。
図27は、第3の実施の形態のカウンタテーブルの変形例を示す図である。カウンタテーブル124a,124b,124c,・・・は、計数部140aによってメッセージ管理テーブル121a,121b,121c,・・・に基づいて生成され、計数情報記憶部120aに格納される。カウンタテーブル124a,124b,124c,・・・は、各業務モデルに対応付けて生成される。例えば、カウンタテーブル124aは、モデルID“Model−3”に対応するものである。
なお、カウンタテーブル124a,124b,124c,・・・の構成は、図9で示した第2の実施の形態のカウンタテーブル122の構成と同様である。ただし、カウンタテーブル124a,124b,124c,・・・の生成手順は、図9の説明において示した手順3につき以下の点で異なる。
すなわち、計数部140aは、上位の階層のサーバと下位の階層のサーバとの間のリクエスト/レスポンスの送受信の後に、同じサーバ間で同じセッション番号を用いて複数回リクエスト/レスポンスの送受信がなされている一連のメッセージフローを抽出する。図24に示す業務メッセージ解析データ172では、例えばマッチング結果フィールド172cの一連のメッセージフロー(セッション番号“131268”を使用)が対応する。そして、その一連のメッセージフローの送受信については、メッセージフローの最初のリクエストの送信タイミングで処理要求滞在数を1加算し、メッセージフローの最後のレスポンスの送信タイミングで処理要求滞在数を1減算する。すなわち、1つのメッセージフローの間は、そのメッセージフローに基づく処理要求が下位側のサーバに常に滞在しているとする。
その結果、カウンタテーブル124aに示すように、計数部140aは例えば時刻“01:58:21.000”の時点のWebサーバ200、Appサーバ300およびDBサーバ400における処理要求滞在数として“1”、“1”、“1”を取得する。
この結果をカウンタテーブル122aの場合と比較する。カウンタテーブル122aの場合では、計数部140aは時刻“01:58:21.000”の時点のWebサーバ200、Appサーバ300およびDBサーバ400における処理要求滞在数として“1”、“1”、“0”を取得する。
カウンタテーブル122aのように計数を行う場合、例えば、一連の連続したメッセージ送受信の間中に継続して占有され続けるリソース(例えば、DBサーバ400に対するコネクションやDBサーバ400において利用されるDBカーソルなど)が関わる処理要求滞在数を適切にカウントできない可能性がある。すなわち、サンプリングのタイミングによっては、そのようなリソースの占有を伴う処理を反映した処理要求滞在数が欠落してしまう。これに対し、リソースが占有され続けている間は、該当のサーバにおいてその処理要求が滞在し続けているとした方が、実際の処理要求滞在数により適合する場合もある。
そのような場合には、上述した方法によって、同一セッションで送受信される一連のメッセージフローを検出することで、サンプリングのタイミングによる処理要求滞在数の欠落を防止できる。
図28は、第3の実施の形態の処理要求滞在数テーブルのデータ構造例を示す図である。処理要求滞在数テーブル123a,123b,123cは、計数部140aによってカウンタテーブル122a,122b,122c,・・・に基づいて生成され、計数情報記憶部120aに格納される。処理要求滞在数テーブル123aは、Webサーバ200に対応する。処理要求滞在数テーブル123bは、Appサーバ300に対応する。処理要求滞在数テーブル123cは、DBサーバ400に対応する。以下では、処理要求滞在数テーブル123aの構成に関して説明するが、処理要求滞在数テーブル123b,123cに関しても同様の構成である。
処理要求滞在数テーブル123aには、モデルIDを示す項目、処理要求滞在数を示す項目および平均を示す項目が設けられている。各項目の横方向に並べられた情報同士が互いに関連付けられて、1つの業務モデルの各時刻における処理要求滞在数を示す。
モデルIDを示す項目には、モデルIDが設定される。処理要求滞在数を示す項目には、各時刻における処理要求滞在数が設定される。平均を示す項目には、ボトルネック解析周期の間の処理要求滞在数の平均値が設定される。
処理要求滞在数テーブル123aには、例えばモデルIDが“Model−1”、処理要求滞在数が時刻“1:58:20”に“5”、時刻“1:58:21”に“6”、・・・、平均が“5.81”という情報が設定される。このレコードに含まれる処理要求滞在数の値は、カウンタテーブル122a,122b,122c,・・・の“Model−1”のテーブルから対応する時刻に設定されたWebサーバ200用のカウンタ値(処理要求滞在数)を取得して得たものである。
次に、以上のような構成を備える運用管理サーバ100aの処理手順を詳細に説明する。ここで、パケットキャプチャ処理に関しては、図13で示した第2の実施の形態のパケットキャプチャ処理と同一であるため説明を省略する。また、監視処理に関しては、図14で示した第2の実施の形態の監視処理と同一であるため説明を省略する。
図29は、第3の実施の形態のボトルネック検出処理を示すフローチャートである。以下、図29に示す処理をステップ番号に沿って説明する。
[ステップS51]ボトルネック検出処理部150aは、業務システムの階層単位に以降のステップS60までの処理を繰り返し実行する。なお、本実施の形態では、各階層にサーバは1台ずつであるので、サーバごとに順次実行すればよい。
[ステップS52]ボトルネック検出処理部150aは、業務モデルごとに以降のステップS59までの処理を繰り返し実行する。
[ステップS53]ボトルネック検出処理部150aは、計数情報記憶部120aに記憶された処理要求滞在数テーブル123a,123b,123cに基づいて、処理対象の業務モデルにつき対象サーバの処理要求滞在数の頻度分布を取得する。
[ステップS54]ボトルネック検出処理部150aは、取得した頻度分布における処理要求滞在数の最大値を特定する。
[ステップS55]ボトルネック検出処理部150aは、頻度分布における処理要求滞在数の最大値近傍の集中度を算出する。
[ステップS56]ボトルネック検出処理部150aは、集中度が閾値以上であるか否かを判定する。閾値以上である場合、処理をステップS57に進める。閾値よりも小さい場合、処理をステップS59に進める。
[ステップS57]ボトルネック検出処理部150aは、頻度分布が正規分布であるか否かを判定する。正規分布でない場合、処理をステップS58に進める。正規分布である場合、処理をステップS59に進める。
[ステップS58]ボトルネック検出処理部150aは、処理対象の業務モデルにつき対象サーバをボトルネック候補として追加する。
[ステップS59]ボトルネック検出処理部150aは、全業務モデルについて処理済みであれば、処理をステップS60に進める。未処理の業務モデルが存在する場合、処理をステップS52に進める。
[ステップS60]ボトルネック検出処理部150aは、全階層(サーバ)について処理済みであれば、処理をステップS61に進める。未処理の階層(サーバ)が存在する場合、処理をステップS51に進める。
[ステップS61]ボトルネック検出処理部150aは、ステップS51〜S60の処理でボトルネック候補を検出しているか否かを判定する。検出している場合、処理をステップS62に進める。検出していない場合、処理を完了する。
[ステップS62]ボトルネック検出処理部150aは、業務モデルごとにボトルネック候補が複数検出されたか否かを判定する。複数ボトルネックが存在する業務モデルがある場合、処理をステップS63に進める。複数ボトルネックが存在する業務モデルがない場合、処理をステップS64に進める。
[ステップS63]ボトルネック検出処理部150aは、業務モデルごとに複数のボトルネック候補のうち、最下位の階層のサーバをボトルネックと特定する。例えば、業務モデル“Model−3”についてボトルネック候補としてAppサーバ300およびDBサーバ400が検出されている場合、DBサーバ400を業務モデル“Model−3”のボトルネックと特定する。ボトルネック検出処理部150aは、特定したボトルネックのサーバを示す情報を業務モデルに対応付けて報知部160に出力する。
[ステップS64]報知部160は、ボトルネック検出処理部150aから取得したボトルネックのサーバを示す情報を業務モデルごとに管理者に報知する。
このようにして、ボトルネック検出処理部150aはボトルネックのサーバを業務モデルごとに検出する。なお、各階層に複数のサーバが設けられている場合には、第2の実施の形態と同様に、何れの階層がボトルネックとなっているかを検出することができる。例えば、Web層にWebサーバが複数台設けられている場合には、計数部140aは各Webサーバの処理要求滞在数の総和をWeb層における処理要求滞在数として求めることができる。これにより、処理要求滞在数テーブル123a,123b,123cの処理要求滞在数を示す項目の値をWebサーバ、AppサーバおよびDBサーバ単位での値に代えて、Web層、App層およびDB層の階層単位の値として取得できる。そして、ボトルネック検出処理部150aは、このように階層単位に取得された処理要求滞在数テーブルに基づき上記ボトルネック検出処理を実行することで、ボトルネックとなっている階層を特定できる。
更に、報知部160は、業務モデル単位にボトルネック検出処理部150aが検出したボトルネックを報知することができる。
例えば、処理要求滞在数の制限は業務モデルごとに設定される場合が考えられる。その場合、報知部160はボトルネックとして検出されたサーバの識別情報を業務モデルごとに対応付けて報知する。例えば、ボトルネック検出処理部150aにより、“Model−1”、“Model−5”についてAppサーバ300がボトルネックとして検出され、“Model−3”についてDBサーバ400がボトルネックとして検出された場合を考える。この場合、報知部160は、“Model−1”のボトルネック検出結果として、Appサーバ300を報知する。また、“Model−5”のボトルネック検出結果として、Appサーバ300を報知する。更に、“Model−3”のボトルネック検出結果として、DBサーバ400を報知する。
また、例えば、処理要求滞在数の制限は複数の業務モデルの合計として設定される場合が考えられる。その場合、報知部160は平均に設定された値が大きな業務モデルを優先して報知することができる。例えば、“Model−1”〜“Model−7”の合計の処理要求滞在数が制限されている場合、その中でも平均の処理要求滞在数が大きいものを優先して報知する。具体的には、処理要求滞在数テーブル123aの例では、“Model−6”の処理要求滞在数の平均が最大である。したがって、報知部160は、これらの業務モデルでWebサーバ200にボトルネックを検出した場合、“Model−6”に対する注意を特に促すように管理者に報知することができる。
これにより、第2の実施の形態の運用管理サーバ100よりも対象を絞ったボトルネック検出が可能となる。すなわち、問題の特定を一層容易にすることができる。その結果、管理者は問題に対する対策をより効率的に行うことができる。
[第4の実施の形態]
以下、第4の実施の形態について説明する。前述の第2,3の実施の形態との相違点を中心に説明し、同様の事項については説明を省略する。
第4の実施の形態では、複数の業務モデルに対するリクエストの組合せに関連して発生するボトルネックの検出を可能とする。例えば、Appサーバ300において、複数の業務モデルが共通して使用するプログラムが存在する場合、当プログラムが複数のリクエストに適切に対応できない設計であればボトルネックとなり得る。また、例えば、複数の業務モデルが発行するDBサーバ400に対するクエリに問題があってボトルネックが発生することも考えられる。このように、複数の業務モデルとボトルネックとを関連付けて検出可能とすることで、共通するあるいは関連の深い問題点を抱えると想定される複数の業務モデルを一度に特定できる。以下、そのための構成について詳細に説明する。
なお、第4の実施の形態の業務システムの全体構成は、図2で示した第2の実施の形態の業務システムの全体構成と同様であるため説明を省略する。ただし、運用管理サーバ100に代えて運用管理サーバ100bを設ける。
また、第4の実施の形態の業務システムに含まれる各装置のハードウェア構成は、図3で示した第2の実施の形態の運用管理サーバ100のハードウェア構成と同様であるため説明を省略する。
図30は、第4の実施の形態の運用管理サーバの機能構成を示す図である。運用管理サーバ100bは、パケット記憶部110、計数情報記憶部120b、パケット受信部130、計数部140a、ボトルネック検出処理部150b、報知部160、業務モデル記憶部170および検査モデル選択処理部180を有する。これらの機能は、所定のプログラムをCPU101が実行することで実現される。なお、これらの機能の少なくとも一部または全部を専用のハードウェアにより実現してもよい。
ここで、パケット記憶部110、パケット受信部130および報知部160は、図4で示した第2の実施の形態の運用管理サーバ100で同一の符号を付して説明した構成と同一であるため説明を省略する。また、計数部140aおよび業務モデル記憶部170は、図22で示した第3の実施の形態の運用管理サーバ100aで同一の符号を付して説明した構成と同一であるため説明を省略する。
計数情報記憶部120bは、業務モデルごとの計数情報を記憶する。業務モデルごとの計数情報とは、前述の第3の実施の形態の計数情報記憶部120aが記憶する情報と同一である。また、計数情報記憶部120bは、複数の業務モデルの関連を示す情報を記憶する。
ボトルネック検出処理部150bは、検査モデル選択処理部180が選択した業務モデルの組合せを取得する。ボトルネック検出処理部150bは、計数情報記憶部120bに記憶された計数情報を参照し、取得した業務モデルの組合せに基づいて、ボトルネックの検出処理を行う。具体的には、ボトルネック検出処理部150bは、業務モデルの組合せごとの各サーバの処理要求滞在数の頻度分布を解析し、頻度分布が所定の条件を満たすサーバをボトルネック候補として検出する。この条件は、第2の実施の形態のボトルネック検出処理部150が用いる条件1,2と同一である。なお、業務モデルの組合せごとの処理要求滞在数は、例えば、組合せに含まれる業務モデルごとの処理要求滞在数の合計によって求めることができる。
ボトルネック検出処理部150bは、検出したボトルネック候補からボトルネックとなり得るサーバを特定して、特定結果を報知部160に出力する。
検査モデル選択処理部180は、計数情報記憶部120bに記憶された計数情報に基づいて、ボトルネック検出処理部150bが検出処理を行うべき業務モデルの組合せを選択する。
ここで、業務モデルが複数存在する場合に、業務モデルの組合せを多数作ることができる。しかし、全ての組合せについてボトルネック検出処理を行うことは、処理量の観点からは妥当ではない。よって、検査モデル選択処理部180により、ボトルネック検出処理部150bが処理対象とする組合せを予め絞り込むことで、処理負荷を軽減しておくことが好ましい。
ただし、検査モデル選択処理部180の機能を用いずに、全ての業務モデルの組合せをボトルネック検出処理部150bの処理対象としてもよい。
ここで、検査モデル選択処理部180は、例えば、業務モデルの組合せの中で、同じプログラムを利用している等の共通項を知識情報として予め取得する。そして、これらをボトルネック検出処理の対象としてボトルネック検出処理部150bに出力することが考えられる。
また、検査モデル選択処理部180にそのような知識情報を設定することなく、得られた処理要求滞在数の時系列推移から業務モデル間の関連を抽出することもできる。具体的には、検査モデル選択処理部180は、ボトルネック検出処理部150bの前処理として、計数情報記憶部120bに記憶された処理要求滞在数テーブル123a,123b,123cに基づく業務モデルごとの時系列推移をフーリエ解析する。検査モデル選択処理部180は、フーリエ解析の結果として得られた業務モデルごとの各周期(周波数)成分に基づいて業務モデル間の関連性を抽出できる。検査モデル選択処理部180は、その結果に基づいてボトルネック検出処理部150bが処理対象とすべき業務モデルの組合せを絞り込むことができる。
以下では、このようにフーリエ解析によって業務モデルの組合せを選択する際に、検査モデル選択処理部180が生成するデータについて説明する。
図31は、業務モデルごとの処理要求滞在数の時系列推移を例示する図である。時系列推移540は、Webサーバ200の業務モデルごとの時系列推移を示している。時系列推移540には、系列541,542,543,544,545,546,547が示されている。系列541は、業務モデル“Model−1”に対応する。系列542は、業務モデル“Model−2”に対応する。系列543は、業務モデル“Model−3”に対応する。系列544は、業務モデル“Model−4”に対応する。系列545は、業務モデル“Model−5”に対応する。系列546は、業務モデル“Model−6”に対応する。系列547は、業務モデル“Model−7”に対応する。
検査モデル選択処理部180は、時系列推移540の系列541,542,543,544,545,546,547それぞれをフーリエ解析して、各系列に含まれる複数の周期成分を抽出する。
図32は、第4の実施の形態のフーリエ解析結果テーブルのデータ構造例を示す図である。フーリエ解析結果テーブル125a,125b,125cは、検査モデル選択処理部180によって生成され、計数情報記憶部120bに格納される。フーリエ解析結果テーブル125aは、Webサーバ200に対応する。フーリエ解析結果テーブル125bは、Appサーバ300に対応する。フーリエ解析結果テーブル125cは、DBサーバ400に対応する。以下では、フーリエ解析結果テーブル125aの構成に関して説明するが、フーリエ解析結果テーブル125b,125cに関しても同様の構成である。
フーリエ解析結果テーブル125aには、モデルIDを示す項目および周期成分を示す項目が設けられている。各項目の横方向に並べられた情報同士が関連付けられて、1つのモデルの各周期成分を示す。
モデルIDを示す項目には、業務モデルのモデルIDが設定される。周期成分を示す項目には、各周期の成分が設定される。
フーリエ解析結果テーブル125aには、例えば、フーリエ解析によって周期16,8,5.333,4の成分が求められる。なお、処理に用いる周期成分の数によっては、更に複数の周期成分を求めてもよい。
具体的には、フーリエ解析結果テーブル125aには、モデルIDが“Model−1”、周期16の成分が“−7.159+2.205i”、周期8の成分が“4.243+6.657i”、・・・という情報が設定される。
検査モデル選択処理部180は、フーリエ解析結果テーブル125aで求めた業務モデルごとの各周期成分を用いて、業務モデルの組合せごとに各周期成分の合計振幅を求める。例えば、2つの業務モデルの組合せをボトルネックの検出対象とする場合には、2つの業務モデルについて、同じ周期成分同士の合成振幅を求める。具体的には、“Model−1”と“Model−2”との周期16の成分同士の合成振幅を求める。また、“Model−1”と“Model−2”との周期8の成分同士の合成振幅を求める。このようにして、業務モデルの全ての組合せについて同一周期成分同士の合成振幅を求める。
図33は、第4の実施の形態の合成振幅テーブルを例示する第1の図である。合成振幅テーブル126a,126b,126cは、2つの業務モデルの組合せごとに周期16の成分の合成振幅の算出結果を示している。合成振幅テーブル126aは、Webサーバ200に対応する。合成振幅テーブル126bは、Appサーバ300に対応する。合成振幅テーブル126cは、DBサーバ400に対応する。以下では、合成振幅テーブル126aの構成に関して説明するが、合成振幅テーブル126b,126cに関しても同様の構成である。
合成振幅テーブル126aには、モデルIDを示す項目および合成振幅を示す項目が設けられている。各項目の横方向に並べられた情報同士が互いに関連付けられて、1つの業務モデルの組合せにおける合成振幅を示す。
モデルIDを示す項目には、業務モデルのモデルIDが設定される。合成振幅を示す項目には、対応する業務モデル同士の周期16の成分の合成振幅が設定される。
合成振幅テーブル126aには、例えば、モデルID“Model−1”および“Model−2”の業務モデルの組合せに対して、周期16の成分の合成振幅が“1.556”という情報が設定される。この合成振幅は、具体的には、フーリエ解析結果テーブル125aに基づいて各周期成分の合成“(−7.159+8.217)+(2.205−1.064)i=1.058+1.141i”の振幅として求めることができる。
他の合成振幅に関しても同様である。
図34は、第4の実施の形態の合成振幅テーブルを例示する第2の図である。合成振幅テーブル127a,127b,127cは、2つの業務モデルの組合せごとに周期8の成分の合成振幅の算出結果を示している。合成振幅テーブル127aは、Webサーバ200に対応する。合成振幅テーブル127bは、Appサーバ300に対応する。合成振幅テーブル127cは、DBサーバ400に対応する。
なお、合成振幅テーブル127a,127b,127cの構成は、合成振幅テーブル126aの構成と同一であるため説明を省略する。
検査モデル選択処理部180は、各合成振幅テーブルから合成振幅の値が所定の閾値以上となっていない組合せを特定する。閾値は、検査モデル選択処理部180に予め設定されていてもよいし、処理要求滞在数の測定結果から適宜求めてもよい。例えば、複数の業務モデルのうち、処理要求滞在数の平均値が大きいものから組合せの数(例えば、業務モデルを2つ組み合わせる場合には2つ)だけ合計した数に所定の閾値率を乗算して、このような閾値を求めることができる。
そして、所定の閾値以上となっていない組合せとして特定した組合せをボトルネックの検出処理の対象として選択する。例えば、合成振幅テーブル126a〜127cでは、閾値が“3”であれば、周期16の合成振幅および周期8の合成振幅の何れもが3より小さい“Model−1”と“Model−2”との組合せを選択する。
このように、検査モデル選択処理部180は、業務モデルごとの時系列推移をフーリエ解析し、業務モデルの組合せごとの合成振幅を比較する。このような比較を行う理由は、ボトルネック検出処理部150bがボトルネックとして検出する場合、処理要求滞在数の時系列推移がほぼ一定となっているものが検出されるためである。時系列推移がほぼ一定となる場合には、フーリエ解析した周期成分の振幅は小さくなると考えられる。よって、業務モデルごとに求めた周期成分を合成して、周期成分の振幅が小さいものが得られれば、その業務モデルの組合せでボトルネックが発生し得ると考えることができる。
これにより、処理要求滞在数が一定値前後に集中することが予想される業務モデルの組合せを低コストで選択することができる。
なお、2つ組み合わせる場合を例示したが、3つ以上の業務モデルの組合せで選択する場合も、それらの業務モデルの同一周期成分の和に基づいて選択することができる。
また、周期16および周期8の成分の合成振幅によって判定を行う場合を例示したが、更に複数の周期成分の合成振幅を求めて判定に用いることもできる。
次に、以上のような構成を備える運用管理サーバ100bの処理手順を詳細に説明する。ここで、パケットキャプチャ処理に関しては、図13で示した第2の実施の形態のパケットキャプチャ処理と同一であるため説明を省略する。
図35は、第4の実施の形態の監視処理を示すフローチャートである。以下、図35に示す処理をステップ番号に沿って説明する。
[ステップS71]計数部140aは、パケット受信部130がパケット記憶部110にファイルを出力したかの監視を開始する。なお、計数部140aが開始コマンドおよび停止コマンドを受け付けるタイミングは、図14のステップS21の場合と同様である。
[ステップS72]計数部140aは、パケット記憶部110に新たなファイルが出力されると、そのファイルを読み取る。
[ステップS73]計数部140aは、読み取ったファイルに基づいて各サーバで送受信されたメッセージを復元する。
[ステップS74]計数部140aは、復元したメッセージに基づいて業務モデルごとのメッセージ管理テーブル121a,121b,121c,・・・を生成し、計数情報記憶部120bに格納する。計数部140aは、メッセージ管理テーブル121a,121b,121c,・・・に基づいてカウンタテーブル122a,122b,122c,・・・を生成し、計数情報記憶部120bに格納する。計数部140aは、カウンタテーブル122a,122b,122c,・・・に基づいて、処理要求滞在数テーブル123a,123b,123cを生成して、計数情報記憶部120bに格納する。
[ステップS75]検査モデル選択処理部180は、計数情報記憶部120bに記憶された処理要求滞在数テーブル123a,123b,123cに基づいて、ボトルネック検出処理部150bが処理すべき業務モデルの組合せを選択する。検査モデル選択処理部180は、業務モデルの組合せの選択結果をボトルネック検出処理部150bに出力する。
[ステップS76]ボトルネック検出処理部150bは、処理要求滞在数テーブル123a,123b,123cと検査モデル選択処理部180による業務モデルの組合せの選択結果とに基づいて、各サーバにおける業務モデルの組合せごとの処理要求滞在数の頻度分布を求める。そして、ボトルネック検出処理部150bは、各サーバの業務モデルごとに求めた分布が所定の条件を満たしているかを判定して、条件を満たすサーバをその業務モデルにおけるボトルネック候補として検出する。ボトルネック検出処理部150bは、ボトルネック候補からボトルネックとなり得るサーバを特定して、特定結果を報知部160に出力する。報知部160は、ボトルネック検出処理部150bから取得したサーバを示す情報を業務システムの管理者に報知する。
[ステップS77]計数部140aは、停止コマンドを受け付けるとファイル出力の監視を停止する。これにより、ボトルネック発生の有無の監視処理が完了する。
このように、計数部140aは、パケット受信部130のパケットキャプチャによって、パケット記憶部110に新たなファイルが出力されると、計数処理を実行する。そして、ボトルネック検出処理部150bは、計数部140aによって計数情報記憶部120bに出力された処理要求滞在数テーブル123a,123b,123cと検査モデル選択処理部180による業務モデルの組合せの選択結果とに基づいて、ボトルネック検出処理を実行する。
次に、ステップS75のボトルネック検出対象選択処理を詳細に説明する。
図36は、第4の実施の形態のボトルネック検出対象選択処理を示すフローチャートである。以下、図36に示す処理をステップ番号に沿って説明する。
[ステップS81]検査モデル選択処理部180は、業務システムの階層単位に以降のステップS98までの処理を繰り返し実行する。なお、本実施の形態では、各階層にサーバは1台ずつであるので、サーバごとに順次実行すればよい。
[ステップS82]検査モデル選択処理部180は、業務モデルごとに以降のステップS85までの処理を繰り返し実行する。
[ステップS83]検査モデル選択処理部180は、対象の業務モデルにつき処理対象のサーバのボトルネック解析周期の間の処理要求滞在数の平均値を取得する。例えば、検査モデル選択処理部180は、処理要求滞在数テーブル123a,123b,123cを参照して、この平均値を取得できる。
[ステップS84]検査モデル選択処理部180は、対象の業務モデルにつき処理対象のサーバの処理要求滞在数の時系列推移をフーリエ解析する。その結果、検査モデル選択処理部180は、時系列推移の系列に含まれる複数の周期成分を示すフーリエ解析結果テーブル125a,125b,125cを生成し、計数情報記憶部120bに格納する。
[ステップS85]検査モデル選択処理部180は、全業務モデルについて処理済みであれば、処理をステップS86に進める。未処理の業務モデルが存在する場合、処理をステップS82に進める。
[ステップS86]検査モデル選択処理部180は、業務モデルを組み合わせる組合せ数ごとに以降のステップS97までの処理を繰り返し実行する。なお、業務モデルの組合せ数は、検査モデル選択処理部180に予め設定される。例えば、2つの業務モデルの組合せによって発生するボトルネックを検出したい場合、組合せ数“2”が設定される。また、例えば、3つの業務モデルの組合せによって発生するボトルネックを検出したい場合、組合せ数“3”が設定される。
[ステップS87]検査モデル選択処理部180は、業務モデルの組合せ数mを取得する。検証する組合せ数が複数存在する場合、複数の値のうち小さい方から処理を行ってもよいし、大きい方から処理を行ってもよい。
[ステップS88]検査モデル選択処理部180は、業務モデルのうち、処理要求滞在数の平均値の大きい方からm個の和Mを算出する。例えば、m=2とする。この場合、検査モデル選択処理部180は、例えば処理要求滞在数テーブル123aについて業務モデル“Model−5”と“Model−6”との平均の和としてM=13.88+20.00=33.88を算出する。
[ステップS89]検査モデル選択処理部180は、Mに所定の閾値率q(q<1)を乗じて、閾値E=qMを算出する。ここで、閾値率qは業務システムの処理に応じて決定する。閾値率qとして、例えば0.1が予め設定される。M=33.88が算出されている場合、検査モデル選択処理部180はE=0.1×33.88=3.89を算出する。
[ステップS90]検査モデル選択処理部180は、複数の業務モデルにつき組合せ数mである組合せごとに以降のステップS96までの処理を繰り返し実行する。
[ステップS91]検査モデル選択処理部180は、処理対象とする組合せのうち、最長周期の成分を合成し、合成振幅A1を算出する。例えば、Webサーバ200について、m=2で“Model−1”と“Model−2”との組合せが処理対象となっている場合を考える。この場合、検査モデル選択処理部180は、計数情報記憶部120bに記憶されたフーリエ解析結果テーブル125aを参照し、“Model−1”と“Model−2”との周期16の成分の合成振幅A1=1.556を求める。
[ステップS92]検査モデル選択処理部180は、合成振幅A1が閾値Eよりも小さいか否かを判定する。A1がEよりも小さい場合、処理をステップS93に進める。A1がE以上である場合、処理をステップS96に進める。
[ステップS93]検査モデル選択処理部180は、処理対象とする組合せのうち、2番目に長い周期の成分を合成し、合成振幅A2を算出する。例えば、Webサーバ200について、m=2で“Model−1”と“Model−2”との組合せが処理対象となっている場合を考える。この場合、検査モデル選択処理部180は、計数情報記憶部120bに記憶されたフーリエ解析結果テーブル125aを参照し、“Model−1”と“Model−2”との周期8の成分の合成振幅A2=2.084を求める。
[ステップS94]検査モデル選択処理部180は、合成振幅A2が閾値Eよりも小さいか否かを判定する。A2がEよりも小さい場合、処理をステップS95に進める。A2がE以上である場合、処理をステップS96に進める。
[ステップS95]検査モデル選択処理部180は、処理対象としている業務モデルの組合せを処理の対象としてボトルネック検出処理部150bに出力する。
[ステップS96]検査モデル選択処理部180は、業務モデルの全組合せについて処理済みであれば、処理をステップS97に進める。未処理の組合せが存在する場合、処理をステップS90に進める。
[ステップS97]検査モデル選択処理部180は、全組合せ数について処理済みであれば、処理をステップS98に進める。未処理の組合せ数が存在する場合、処理をステップS86に進める。
[ステップS98]検査モデル選択処理部180は、全階層(サーバ)について処理済みであれば、処理を完了する。未処理の階層(サーバ)が存在する場合、処理をステップS81に進める。
このように、検査モデル選択処理部180は、ボトルネック検出処理部150bが処理対象とすべき複数の業務モデルの組合せを予め選択する。ボトルネック検出処理部150bは予め選択された組合せについてボトルネック検出処理を行えばよい。よって、全ての組合せについてボトルネック検出処理を行う場合に比べて、処理コストを低減できる。
また、検査モデル選択処理部180は、業務モデルごとの処理要求滞在数の時系列推移をフーリエ解析し、各周期成分の合成振幅によりボトルネックとなり得る業務モデルの組合せを選択する。これにより、処理要求滞在数が一定値前後に集中することが予想される業務モデルの組合せを低コストで取得することができる。
なお、ステップS88,S89において、閾値Eを処理要求滞在数の平均値の上位m個の合計から求めている理由は、任意のm個の業務モデルについて、それらの処理要求滞在数の合計は、最大でも平均値の上位m個の合計数程度である場合が多いためである。
また、検査モデル選択処理部180はこの合計数の一定割合(閾値率q=0.1程度)を合計振幅の閾値としている。このとき、合成振幅が閾値以上となる組合せでは、合計の処理要求滞在数の時系列推移が閾値率(例えば、10%)の変動幅に収まっていないと考えられる。このため、ボトルネック検出処理部150bが処理対象としても、処理要求滞在数の最大値直前への集中度が大きくなる可能性が低い。よって、ボトルネック候補として検出される可能性が低いと判断できるので、ボトルネック検出処理の対象から除外できる。
一方、合成振幅が閾値よりも小さい組合せでは、合計の処理要求滞在数の時系列推移が閾値率の変動幅に収まることになる。このため、ボトルネック検出処理部150bの処理において、処理要求滞在数の最大値直前への集中度が大きくなる可能性が高く、ボトルネック候補として検出される可能性が高いと判断できる。よって、このような組合せをボトルネック検出処理の対象として選択できる。
図37は、第4の実施の形態のボトルネック検出処理を示すフローチャートである。以下、図37に示す処理をステップ番号に沿って説明する。
[ステップS101]ボトルネック検出処理部150bは、業務システムの階層単位に以降のステップS110までの処理を繰り返し実行する。なお、本実施の形態では、各階層にサーバは1台ずつであるので、サーバごとに順次実行すればよい。
[ステップS102]ボトルネック検出処理部150bは、検査モデル選択処理部180から取得した処理対象の業務モデルの組合せごとに以降のステップS109までの処理を繰り返し実行する。
[ステップS103]ボトルネック検出処理部150bは、計数情報記憶部120bに記憶された処理要求滞在数テーブル123a,123b,123cに基づいて、処理対象の業務モデルの組合せにつき対象サーバにおける処理要求滞在数の同一サンプリング時刻ごとの和をとった合成処理要求滞在数(以下、単に処理要求滞在数という)の頻度分布を取得する。
[ステップS104]ボトルネック検出処理部150bは、取得した頻度分布における処理要求滞在数の最大値を特定する。
[ステップS105]ボトルネック検出処理部150bは、頻度分布における処理要求滞在数の最大値近傍の集中度を算出する。
[ステップS106]ボトルネック検出処理部150bは、集中度が閾値以上であるか否かを判定する。閾値以上である場合、処理をステップS107に進める。閾値よりも小さい場合、処理をステップS109に進める。
[ステップS107]ボトルネック検出処理部150bは、頻度分布が正規分布であるか否かを判定する。正規分布でない場合、処理をステップS108に進める。正規分布である場合、処理をステップS109に進める。
[ステップS108]ボトルネック検出処理部150bは、処理対象の業務モデルの組合せにつき対象サーバをボトルネック候補として追加する。
[ステップS109]ボトルネック検出処理部150bは、検査モデル選択処理部180から取得した業務モデルの全組合せについて処理済みであれば、処理をステップS110に進める。未処理の業務モデルの組合せが存在する場合、処理をステップS102に進める。
[ステップS110]ボトルネック検出処理部150bは、全階層(サーバ)について処理済みであれば、処理をステップS111に進める。未処理の階層(サーバ)が存在する場合、処理をステップS101に進める。
[ステップS111]ボトルネック検出処理部150bは、ステップS101〜S110の処理でボトルネック候補を検出しているか否かを判定する。検出している場合、処理をステップS112に進める。検出していない場合、処理を完了する。
[ステップS112]ボトルネック検出処理部150bは、業務モデルの組合せごとにボトルネック候補が複数検出されたか否かを判定する。複数ボトルネックが存在する業務モデルの組合せがある場合、処理をステップS113に進める。複数ボトルネックが存在する業務モデルの組合せがない場合、処理をステップS114に進める。
[ステップS113]ボトルネック検出処理部150bは、業務モデルの組合せごとに複数のボトルネック候補のうち、最下位の階層のサーバをボトルネックと特定する。例えば、業務モデル“Model−1”と“Model−2”との組合せについてボトルネック候補としてAppサーバ300およびDBサーバ400が検出されている場合が考えられる。この場合には、下位の階層のサーバであるDBサーバ400を業務モデル“Model−1”と“Model−2”との組合せのボトルネックと特定する。ボトルネック検出処理部150bは、特定したボトルネックのサーバを示す情報を業務モデルの組合せに対応付けて報知部160に出力する。
[ステップS114]報知部160は、ボトルネック検出処理部150bから取得したボトルネックのサーバを示す情報を業務モデルの組合せごとに管理者に報知する。
このようにして、ボトルネック検出処理部150bはボトルネックのサーバを業務モデルの組合せごとに検出する。
これにより、複数の業務モデルに対するリクエストの組合せに関連して発生するボトルネックを管理者に対して適切に通知できる。例えば、Appサーバ300において、複数の業務モデルが共通して使用するプログラムが存在する場合、当プログラムが複数のリクエストに適切に対応できない設計であればボトルネックとなり得る。また、例えば、複数の業務モデルが発行するDBサーバ400に対するクエリに問題があってボトルネックが発生することも考えられる。このように、複数の業務モデルとボトルネックとを関連付けて検出可能とすることで、共通するあるいは関連の深い問題点を抱えると考えられる複数の業務モデルを一度に特定できる。よって、管理者は、このような問題点を効率的に把握することが可能となる。その結果、このような問題点に対して効率的に対処することが可能となる。
なお、各階層に複数のサーバが設けられている場合には、第2,3の実施の形態と同様に階層単位で何れの階層がボトルネックとなっているかを検出することもできる。
[第5の実施の形態]
以下、第5の実施の形態について説明する。前述の第2〜4の実施の形態との相違点を主に説明し、同様の事項に関しては説明を省略する。
第2〜4の実施の形態において、計数部140が処理要求滞在数テーブル123あるいは処理要求滞在数テーブル123a,123b,123cを生成する際のサンプリング周期は、これらのテーブルに設定される処理要求滞在数の精度に影響する。すなわち、サンプリング周期を大きくとると、サンプリング周期の期間内にリクエスト/レスポンスが送受信された処理に関する情報を取得できない。このような情報の欠落は、短期間にリクエスト/レスポンスが送受信される処理が多いほど顕著となる。一方、サンプリング周期を小さくとると、解析するデータ量の増加に伴い処理負荷が増大する。このため、サンプリング周期を適切に調整して、処理要求滞在数の取得精度と解析処理の負荷とのバランスを図れることが望ましい。
そこで、第5の実施の形態では、動的にサンプリング周期を変更する機能を提供する。以下では、そのための構成について詳細に説明する。
なお、第5の実施の形態の業務システムの全体構成は、図2で示した第2の実施の形態の業務システムの全体構成と同様であるため説明を省略する。ただし、運用管理サーバ100に代えて運用管理サーバ100cを設ける。
また、第5の実施の形態の業務システムに含まれる各装置のハードウェア構成は、図3で示した第2の実施の形態の運用管理サーバ100のハードウェア構成と同様であるため説明を省略する。
図38は、第5の実施の形態の運用管理サーバの機能構成を示す図である。運用管理サーバ100cは、パケット記憶部110、計数情報記憶部120、パケット受信部130、計数部140c、ボトルネック検出処理部150、報知部160およびサンプリング周期変更部190を有する。これらの機能は、所定のプログラムをCPU101が実行することで実現される。なお、これらの機能の少なくとも一部または全部を専用のハードウェアにより実現してもよい。
ここで、パケット記憶部110、計数情報記憶部120、パケット受信部130、ボトルネック検出処理部150および報知部160は、図4で示した第2の実施の形態の運用管理サーバ100で同一の符号を付して説明した構成と同一であるため説明を省略する。
計数部140cは、パケット記憶部110に記憶されたパケット情報に基づいて、各サーバの間で送受信されるメッセージを復元する。計数部140cは、復元したメッセージに基づいて各サーバにおける処理要求滞在数を計数し、計数情報を生成する。計数部140cは、生成した計数情報を計数情報記憶部120に格納する。ここで、計数部140cは、サンプリング周期変更部190から指示されたサンプリング周期によって、処理要求滞在数を求める。
サンプリング周期変更部190は、計数情報記憶部120に記憶された処理要求滞在数テーブル123を参照して、処理要求滞在数の最大値が周期変更閾値よりも小さいサーバについては、計数部140cのサンプリング周期を短い周期に変更する。
サンプリング周期変更部190は、サンプリング周期を変更した場合、変更後のサンプリング周期を計数部140cに指示する。
次に、以上のような構成を備える運用管理サーバ100cの処理手順を詳細に説明する。ここで、パケットキャプチャ処理に関しては、図13で示した第2の実施の形態のパケットキャプチャ処理と同一であるため説明を省略する。
図39は、第5の実施の形態の監視処理を示すフローチャートである。以下、図39に示す処理をステップ番号に沿って説明する。
[ステップS121]計数部140cは、パケット受信部130がパケット記憶部110にファイルを出力したかの監視を開始する。なお、計数部140cが開始コマンドおよび停止コマンドを受け付けるタイミングは、図14のステップS21の場合と同様である。
[ステップS122]計数部140cは、パケット記憶部110に新たなファイルが出力されると、そのファイルを読み取る。
[ステップS123]計数部140cは、読み取ったファイルに基づいて各サーバで送受信されたメッセージを復元する。
[ステップS124]計数部140cは、復元したメッセージに基づいてメッセージ管理テーブルを生成し、計数情報記憶部120に格納する。計数部140cは、メッセージ管理テーブルに基づいてカウンタテーブルを生成し、計数情報記憶部120に格納する。計数部140cは、カウンタテーブルに基づいて処理要求滞在数テーブル123を生成して、計数情報記憶部120に格納する。
[ステップS125]ボトルネック検出処理部150は、処理要求滞在数テーブル123に基づいて、各サーバにおける処理要求滞在数の頻度分布を求める。そして、ボトルネック検出処理部150は、各サーバで求めた分布が所定の条件を満たしているかを判定して、条件を満たすサーバをボトルネック候補として検出する。ボトルネック検出処理部150は、ボトルネック候補からボトルネックとなり得るサーバを特定して、特定結果を報知部160に出力する。報知部160は、ボトルネック検出処理部150から取得したサーバを示す情報を業務システムの管理者に報知する。
[ステップS126]サンプリング周期変更部190は、処理要求滞在数テーブル123に基づいて、計数部140cが処理要求滞在数の頻度分布を解析するためのサンプリング周期を変更する。これにより、次回計数部140cが処理要求滞在数テーブル123を生成する際のサンプリング周期が変更される。
[ステップS127]計数部140cは、停止コマンドを受け付けるとファイル出力の監視を停止する。これにより、ボトルネック発生の有無の監視処理が完了する。
このように、計数部140cは、パケット受信部130のパケットキャプチャによって、パケット記憶部110に新たなファイルが出力されると、計数処理を実行する。そして、ボトルネック検出処理部150は、計数部140cによって計数情報記憶部120に出力された処理要求滞在数テーブル123に基づいて、ボトルネック検出処理を実行する。
また、計数部140cは、サンプリング周期変更部190からサンプリング周期変更の指示を受け付けると、変更後のサンプリング周期で次回の処理要求滞在数テーブル123の生成を行う。
ただし、ステップS126をステップS124の直後に行ってもよい。また、ステップS126を実行した後に同一ボトルネック解析周期で再度ステップS125を実行して、解析結果の精度を向上させることもできる。
次に、ステップS126のサンプリング周期変更処理を詳細に説明する。
図40は、第5の実施の形態のサンプリング周期変更処理を示すフローチャートである。以下、図40に示す処理をステップ番号に沿って説明する。
[ステップS131]サンプリング周期変更部190は、処理要求滞在数の周期変更閾値Dを取得する。例えば、周期変更閾値Dは、サンプリング周期変更部190に予め与えられる。
[ステップS132]サンプリング周期変更部190は、計数情報記憶部120に記憶された処理要求滞在数テーブル123を参照して、処理要求滞在数の最大値が周期変更閾値Dよりも小さいサーバ(階層単位で処理要求最大数を取得している場合は階層。以下同じ)が存在するか否かを判定する。処理要求滞在数の最大値がDよりも小さいサーバが存在する場合、処理をステップS133に進める。処理要求滞在数の最大値がDよりも小さいサーバが存在しない場合、処理をステップS135に進める。
[ステップS133]サンプリング周期変更部190は、処理要求滞在数の最大値がDよりも小さいサーバの処理要求滞在数の最大値Nを取得する。なお、処理要求滞在数の最大値がDよりも小さいサーバが複数存在する場合には、そのうち、より小さい方の値を最大値とするサーバについてその最大値Nを取得する。
[ステップS134]サンプリング周期変更部190は、サンプリング周期をN/D倍に変更する。サンプリング周期変更部190は、変更後のサンプリング周期をボトルネック検出処理部150に通知する。そして、処理を完了する。
[ステップS135]サンプリング周期変更部190は、サンプリング周期がデフォルト値から変更されているか否かを判定する。デフォルト値は、例えばサンプリング周期変更部190に予め与えられる。変更されている場合、処理をステップS136に進める。変更されていない場合、処理を完了する。
[ステップS136]サンプリング周期変更部190は、サンプリング周期をデフォルト値に変更し、その旨を計数部140cに通知する。そして、処理を完了する。
このようにして、サンプリング周期変更部190は計数部140cが処理要求滞在数テーブルを求めるためのサンプリング周期を変更する。
なお、全てのサーバについてサンプリング周期を変更する場合を例示したが、処理要求滞在数の最大値がDよりも小さいサーバについて、該当サーバそれぞれの処理要求滞在数の最大値に応じて、該当サーバそれぞれでサンプリング周期を変更してもよい。
サンプリング周期変更処理後に実行されるボトルネック検出処理(図39のステップS125)は、図15に示した第2の実施の形態のボトルネック検出処理と同様であるため説明を省略する。
このようにサンプリング周期を変更することで、処理要求滞在数の最大値が小さいサーバについてもより精度良く頻度分布を取得できる。具体的には以下の通りである。
図41は、サンプリング周期変更による頻度分布の変化を例示する図である。頻度分布640には、分布641,642,643が示されている。分布641,642,643は、サンプリング周期T1で取得された処理要求滞在数の頻度分布である。分布641,642,643は処理要求滞在数の最大値が“1”の場合の頻度分布の3つのパターンを例示したものである。ここで、周期変更閾値DはD>1とする。
分布641では、処理要求滞在数“0”の頻度がほぼ“0”であり、処理要求滞在数“1”の頻度がほぼ“1.0”を示している。分布642では、処理要求滞在数“0”、“1”の頻度が共に“0.5”を示している。分布643では、処理要求滞在数“0”の頻度がほぼ“1.0”であり、処理要求滞在数“1”の頻度がほぼ“0”を示している。
このようにサンプリング周期T1では、その周期内にリクエスト/レスポンスが複数回送受信される処理要求について処理要求滞在数“0”、“1”の頻度が、“0”あるいは“1.0”に大きく偏ってしまい、解析精度が低減することが考えられる。
そこで、サンプリング周期変更部190は、このような場合にサンプリング周期をより短い周期T2(<T1)に変更する。具体的には、T2=(N/D)×T1=T1/Dである。ここで、Nは処理要求滞在数の最大値であるのでN=1を代入している。その結果、計数部140cは処理要求滞在数テーブルを短いサンプリング周期で取得する。そして、ボトルネック検出処理部150は、頻度分布650を得る。
頻度分布650には、分布651,652,653が示されている。分布651,652,653は、例えば分布641,642,643を取得したボトルネック解析周期と同じ期間の計数情報からサンプリング周期T2で取得された処理要求滞在数の頻度分布である。なお、分布651,652,653についても処理要求滞在数の最大値が“1”となる3つのパターンを例示している。
ここで、分布651は分布641に対応する。分布652は分布642に対応する。分布653は分布643に対応する。
分布651では、処理要求滞在数“0”の頻度が“0.3”であり、処理要求滞在数“1”の頻度が“0.7”を示している。分布652では、処理要求滞在数“0”の頻度が“0.4”であり、処理要求滞在数“1”の頻度が“0.6”を示している。分布653では、処理要求滞在数“0”の頻度が“0.7”であり、処理要求滞在数“1”の頻度が“0.3”を示している。
このように、サンプリング周期T2(<T1)とすることで、サンプリング周期T1では取得できなかった処理の滞在を検出することができ、頻度分布を精度良く取得することができる。その結果、ボトルネック検出処理部150による解析の精度を向上することができる。
なお、上述の例では、処理要求滞在数の最大値によってサンプリング周期の変更を行うか否かを判定するものとしたがその他の方法を用いてもよい。例えば、ステップS122において、サンプリング周期変更部190は、ボトルネック解析周期における処理要求滞在数の平均値を算出し、その平均値が周期変更閾値よりも大きいか否かを判定することができる。そして、平均値が周期変更閾値よりも小さい場合に、ステップS123に進める。また、平均値が周期変更閾値以上である場合には、ステップS125に進める。
これにより、処理要求滞在数の最大値によりサンプリング周期の変更を行う場合と同様の効果を得ることができる。
[第6の実施の形態]
以下、第6の実施の形態について説明する。前述の第2〜5の実施の形態との相違点を中心に説明し、同様の事項に関しては説明を省略する。
第5の実施の形態では、各サーバで処理要求滞在数が周期変更閾値Dよりも小さい場合に頻度分布を解析するためのサンプリング周期を変更することとした。これに対し、第6の実施の形態では、第5の実施の形態の変形例として、ボトルネック候補の有無に応じてサンプリング周期の変更を行う機能を提供する。
なお、第6の実施の形態の業務システムの全体構成は、図2で示した第2の実施の形態の業務システムの全体構成と同様であるため説明を省略する。ただし、運用管理サーバ100に代えて、運用管理サーバ100dを設ける。
また、第6の実施の形態の業務システムに含まれる各装置のハードウェア構成は、図3で示した第2の実施の形態の運用管理サーバ100のハードウェア構成と同様であるため説明を省略する。
図42は、第6の実施の形態の運用管理サーバの機能構成を示す図である。運用管理サーバ100dは、パケット記憶部110、計数情報記憶部120、パケット受信部130、計数部140c、ボトルネック検出処理部150d、報知部160およびサンプリング周期変更部190dを有する。これらの機能は、所定のプログラムをCPU101が実行することで実現される。なお、これらの機能の少なくとも一部または全部を専用のハードウェアにより実現してもよい。
ここで、パケット記憶部110、計数情報記憶部120、パケット受信部130、報知部160は、図4で示した第2の実施の形態の運用管理サーバ100で同一の符号を付して説明した構成と同一であるため説明を省略する。また、計数部140cは、図38で示した第5の実施の形態の運用管理サーバ100cで同一の符号を付して説明した構成と同様であるため説明を省略する。
ボトルネック検出処理部150dは、計数情報記憶部120に記憶された計数情報に基づいて、各サーバの処理要求滞在数の頻度分布を解析し、頻度分布が所定の条件を満たすサーバをボトルネック候補として検出する。この条件は、ボトルネック検出処理部150が用いる条件1,2と同一である。
ボトルネック検出処理部150dは、ボトルネック候補の検出結果をサンプリング周期変更部190dに出力する。また、検出したボトルネック候補からボトルネックとなり得るサーバを特定して、特定結果を報知部160に出力する。
サンプリング周期変更部190dは、ボトルネック検出処理部150dによるボトルネック候補の検出結果に基づいて、計数部140cが処理要求滞在数を取得する際のサンプリング周期を変更する。
次に、以上のような構成を備える運用管理サーバ100dの処理手順を詳細に説明する。ここで、パケットキャプチャ処理に関しては、図13で示した第2の実施の形態のパケットキャプチャ処理と同一であるため説明を省略する。また、監視処理に関しては、図14で示した第2の実施の形態の監視処理と同一であるため説明を省略する。ただし、ステップS25のボトルネック検出処理が異なる。
図43は、第6の実施の形態のボトルネック検出処理を示すフローチャートである。以下、図43に示す処理をステップ番号に沿って説明する。
[ステップS141]サンプリング周期変更部190dは、ボトルネック検出処理部150dによる一回目のボトルネック検出処理であるか否かを検出する。一回目のボトルネック検出処理である場合、処理をステップS142に進める。一回目でない、すなわち、二回目のボトルネック検出処理である場合、処理をステップS143に進める。なお、サンプリング周期変更部190dは、ボトルネック検出処理が一回目であるか、二回目であるかを例えば所定の記憶部に設けられた所定のフラグによって判定できる。具体的には、ボトルネック検出処理部150dは、後述のステップS143において、そのフラグに次回の処理が二回目である旨を示す情報を設定することができる。運用管理サーバ100dには、そのためのフラグを記憶する記憶部が予め設けられる。
[ステップS142]サンプリング周期変更部190dは、サンプリング周期をT1に変更し、その旨を計数部140cに通知する。そして、処理をステップS145に進める。
[ステップS143]サンプリング周期変更部190dは、サンプリング周期をT2(T2<T1)に変更し、その旨を計数部140cに通知する。
[ステップS144]計数部140cは、サンプリング周期変更部190dから通知されたサンプリング周期と計数情報記憶部120に記憶されたカウンタテーブルとに基づいて処理要求滞在数テーブル123を再生成して、計数情報記憶部120に格納する。そして、処理をステップS145に進める。
[ステップS145]ボトルネック検出処理部150dは、業務システムの階層単位に以降のステップS152までの処理を繰り返し実行する。なお、本実施の形態では、各階層にサーバは1台ずつであるので、サーバごとに順次実行すればよい。
[ステップS146]ボトルネック検出処理部150dは、計数情報記憶部120に記憶された処理要求滞在数テーブル123に基づいて、処理対象のサーバの処理要求滞在数の頻度分布を取得する。
[ステップS147]ボトルネック検出処理部150dは、取得した頻度分布における処理要求滞在数の最大値を特定する。
[ステップS148]ボトルネック検出処理部150dは、頻度分布における処理要求滞在数の最大値近傍の集中度を算出する。
[ステップS149]ボトルネック検出処理部150dは、集中度が閾値以上であるか否かを判定する。閾値以上である場合、処理をステップS150に進める。閾値よりも小さい場合、処理をステップS152に進める。
[ステップS150]ボトルネック検出処理部150dは、頻度分布が正規分布であるか否かを判定する。正規分布でない場合、処理をステップS151に進める。正規分布である場合、処理をステップS152に進める。
[ステップS151]ボトルネック検出処理部150dは、処理対象のサーバをボトルネック候補として追加する。
[ステップS152]ボトルネック検出処理部150dは、全階層(サーバ)について処理済みであれば、処理をステップS153に進める。未処理の階層(サーバ)が存在する場合、処理をステップS145に進める。
[ステップS153]ボトルネック検出処理部150dは、ステップS145〜S152の処理でボトルネック候補を検出しているか否かを判定する。検出している場合、処理をステップS154に進める。検出していない場合、処理を完了する。
[ステップS154]ボトルネック検出処理部150dは、今回のボトルネック候補の検出が二回目の検出であるか否かを判定する。二回目の検出である場合、処理をステップS155に進める。二回目の検出でない、すなわち、一回目の検出である場合、処理をステップS141に進める。なお、ボトルネック検出処理部150dは、ステップS141でのサンプリング周期変更部190dによる判定処理のために、例えば、運用管理サーバ100dが有する所定の記憶部に設けられた所定のフラグに次回の処理が二回目である旨を示す情報を設定する。
[ステップS155]ボトルネック検出処理部150dは、ボトルネック候補が複数検出されたか否かを判定する。複数ある場合、処理をステップS156に進める。複数でない、すなわち、1つだけ検出されている場合、処理をステップS157に進める。
[ステップS156]ボトルネック検出処理部150dは、複数のボトルネック候補のうち、最下位の階層のサーバをボトルネックと特定する。例えば、ボトルネック候補としてAppサーバ300およびDBサーバ400が検出されている場合、DBサーバ400をボトルネックと特定する。ボトルネック検出処理部150dは、特定したボトルネックのサーバを示す情報を報知部160に出力する。
[ステップS157]報知部160は、ボトルネック検出処理部150dから取得したボトルネックのサーバを示す情報を管理者に報知する。
このようにして、サンプリング周期変更部190dは計数部140cが処理要求滞在数テーブルを求めるためのサンプリング周期を変更する。
これにより、第5の実施の形態と同様の効果を得ることができる。また、第5の実施の形態よりも効率的にサンプリング周期を変更できる。具体的には次の通りである。
サンプリング周期を短縮すると、解析データが増大する。このため、計算処理コストが増大する可能性がある。一方、サンプリング周期の短縮を行わないとボトルネック検出の精度が低減する可能性がある。よって、これらの両立を図れることが望ましい。
ここで、現実の運用環境では、ボトルネックが発生していない場合、処理要求滞在数の値はピーク値前後に分布しており、集中度が閾値以上とならない場合がほとんどである。このような場合には、サンプリング周期の短縮の対象としなくても解析精度への影響は小さいと考えられる。
そこで、第6の実施の形態では、一回目は所定のサンプリング周期でボトルネック検出処理を行い、ボトルネック候補が検出されたら二回目は一回目よりも短いサンプリング周期で再度ボトルネック検出処理を行う。これにより、ボトルネック候補が検出される可能性の高い場合にサンプリング周期が短縮される。
その結果、解析処理に要する処理コストを低減しつつ、解析精度の向上を図ることが可能となる。
なお、上述の例では、ボトルネック検出処理につき一回目と二回目とで集中度の閾値を同じ値とした。しかし、一回目と二回目とで集中度の閾値を変更してもよい。具体的には、ボトルネック検出処理部150dは一回目では二回目に用いる集中度の閾値よりも小さい閾値とする。そして、一回目でボトルネック候補として仮検出したサーバに対して、再度一回目よりも大きな集中度の閾値でボトルネック検出処理を行う。
このようにすると、一回目において、サンプリング周期が長いために集中度の計算の精度が低減したとしても、ボトルネック候補をより確実に仮検出できる。このため、ボトルネック候補の検出漏れを抑制できる。
また、各階層に複数のサーバが設けられている場合には、第2〜5の実施の形態と同様に階層単位で何れの階層がボトルネックとなっているかを検出することもできる。
なお、第2〜6の実施の形態ではWeb3階層システムを例示して説明したが、このようなシステム構成に限らない。例えば、WebサーバとAppサーバとを同一のサーバ上に設け、Web/App層とDB層とで構成される2階層システムであってもよい。あるいは、AppサーバとDBサーバとを同一のサーバ上に設け、Web層とApp/DB層とで構成される2階層システムであってもよい。また、4以上の階層を有した情報処理システムに適用することもできる。
また、各サーバ間で送受信されるメッセージに基づいて処理要求滞在数の頻度分布を求めることとしたが、このような方法に限られない。例えば、各サーバでアプリケーションの実行履歴を記録したOSやアプリケーションのログを取得し、取得したログを解析して処理要求滞在数を求めてもよい。ただし、そのような場合には、各サーバにおいて正確に時刻を同期させることが望ましい。時刻の同期は、例えばNTP(Network Time Protocol)を用いてスイッチ装置10やネットワーク20に接続されたNTPサーバの時刻と同期することで行うことができる。なお、NTPによって各サーバの時刻を精度よく(例えば、マイクロ秒単位で)同期させるのは難しい。このため、短い時間(例えば、マイクロ秒単位)での処理要求滞在数を取得したい場合には、第2〜6の実施の形態で示したように、通信パケットから取得したメッセージを用いる方法がより適している。なぜなら、通信パケットをキャプチャした運用管理サーバ100,100a,100b,100c,100dの時刻で各メッセージの送信タイミングを検出できるからである。また、各サーバにログの取得、通知等の役割を与えると、各サーバでそのためのプロセスを別個に実行する必要がある。このため、余計な処理負荷を与えず、各サーバ本来の処理への影響を低減するという観点からも通信パケットを利用した方法を採ることが好ましい。
第2〜6の実施の形態で説明したように、運用管理サーバ100,100a,100b,100c,100dは、多階層システムにおいてアプリケーションの動作上の制限等による処理要求滞在数の飽和が原因で生じたボトルネックを適切に検出することができる。なお、ボトルネックの検出対象としてはコンピュータ単位とすることもできるし、多階層システムにおける階層単位とすることもできる。
以上、本発明の運用管理プログラム、運用管理装置および運用管理方法を図示の実施の形態に基づいて説明したが、これらに限定されるものではなく、各部の構成は同様の機能を有する任意の構成のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。更に、前述した実施の形態のうちの任意の2以上の構成(特徴)を組み合わせたものであってもよい。
以上の第1〜第6の実施の形態を含む実施の形態に関し、更に以下の付記を開示する。
(付記1) コンピュータを、
情報処理装置から取得した、所定の時間間隔で得られたN(Nは1≦Nの整数)個のサンプリングタイミングから、各サンプリングタイミング時に該情報処理装置が処理中の処理要求の数を示す値Xi(iは1≦i≦Nの整数)を得る計数手段、
該Xiの総和に対する、該Xiの最大値との差分が所定範囲内にあるXiの総和の割合を求める処理を、複数の該情報処理装置について行い、求めた該割合が所定値以上の情報処理処置を検出する処理手段、
として機能させることを特徴とする運用管理プログラム。
(付記2) 前記処理手段は、更に、処理要求滞在数ごとの前記サンプリングタイミングの数を示す頻度分布を前記情報処理装置ごとに生成し、前記頻度分布に含まれるピークのうち、最も大きな処理要求滞在数に対応するピークが正規分布に従うか否かを判定し、前記正規分布に従わないと判定した前記情報処理装置を検出することを特徴とする付記1記載の運用管理プログラム。
(付記3) 前記処理手段は、前記正規分布に従うか否かの判定の際に、前記頻度分布に含まれる前記処理要求滞在数の出現頻度の最も大きな値から前記処理要求滞在数の最大値までの範囲で前記頻度分布が単調減少となっているか否かを判定し、単調減少となっている場合には前記正規分布に従っているとみなし、単調減少となっていない場合には前記正規分布に従っていないとみなす、ことを特徴とする付記2記載の運用管理プログラム。
(付記4) 前記処理手段は、前記頻度分布を示す分布関数と頻度0の直線とで囲まれる領域の第1の面積と、前記分布関数と前記頻度0を示す直線と前記処理要求滞在数の前記所定範囲の境界値のうち前記最大値よりも小さい方の境界値を示す直線とで囲まれる領域の第2の面積と、を算出し、前記第2の面積と前記第1の面積との商を前記割合として算出することを特徴とする付記2または3の何れか一項に記載の運用管理プログラム。
(付記5) 前記コンピュータを、更に、
複数の情報処理装置間で前記処理要求を送受信した際に、各情報処理装置間で利用されたセッションを示す情報を前記処理要求に対応付けて記録した履歴情報を記憶する履歴情報記憶手段、
として機能させ、
前記計数手段は、前記履歴情報記憶手段に記憶された前記履歴情報を参照して、同一セッションで送受信されている複数の前記処理要求のうち、リクエストである最初の処理要求と前記リクエストに対するレスポンスである最後の処理要求とに基づいて、前記処理要求滞在数を計数する、
ことを特徴とする付記1乃至4の何れか一項に記載の運用管理プログラム。
(付記6) 前記コンピュータを、更に、
複数の情報処理装置間で送受信される複数の処理要求の内容を業務処理に対応付けた業務モデルを記憶する業務モデル記憶手段、
として機能させ、
前記計数手段は、前記業務モデル記憶手段に記憶された前記業務モデルごとに前記各情報処理装置の前記処理要求滞在数を求め、
前記処理手段は、前記頻度分布を前記計数手段が求めた前記業務モデルごとの前記各情報処理装置の前記処理要求滞在数に基づいて、前記業務モデルごとに前記情報処理装置の検出を行う、
ことを特徴とする付記1乃至5の何れか一項に記載の運用管理プログラム。
(付記7) 前記コンピュータを、更に、
前記計数手段が計数した前記業務モデルごとの前記各情報処理装置の前記処理要求滞在数に基づいて、関連のある複数の業務モデルを、前記処理手段による処理の対象とすべき組合せとして選択し、当該組合せを前記処理手段に通知する検査モデル選択処理手段、
として機能させ、
前記処理手段は、前記検査モデル選択処理手段から通知された前記組合せに含まれる業務モデルごとの前記各情報処理装置の前記処理要求滞在数の和、である合成処理要求滞在数に基づいて、前記情報処理装置の検出を行う、
ことを特徴とする付記6記載の運用管理プログラム。
(付記8) 前記検査モデル選択処理手段は、前記計数手段が計数した前記業務モデルごとの前記各情報処理装置の前記処理要求滞在数の時系列推移をフーリエ解析し、当該フーリエ解析の結果に基づいて、前記組合せを選択することを特徴とする付記7記載の運用管理プログラム。
(付記9) 前記計数手段は、第1のサンプリング周期で処理要求滞在数を取得し、前記第1のサンプリング周期で取得した処理要求滞在数のうち、所定の周期変更閾値以上のものが存在しない場合、前記第1のサンプリング周期よりも短い第2のサンプリング周期で処理要求滞在数を取得することを特徴とする付記1乃至8の何れか一項に記載の運用管理プログラム。
(付記10) 前記計数手段は、前記処理手段が前記第1のサンプリング周期で取得された処理要求滞在数に基づいて前記情報処理装置を検出すると、前記第1のサンプリング周期よりも短い第2のサンプリング周期で処理要求滞在数を取得し、
前記処理手段は、前記計数手段が前記第2のサンプリング周期で取得した処理要求滞在数に基づいて再検出を行う、
ことを特徴とする付記1乃至8の何れか一項に記載の運用管理プログラム。
(付記11) 前記処理手段は、前記情報処理装置の検出の結果、複数の情報処理装置を検出した場合、前記複数の情報処理装置の間に定義された階層関係に基づいて、最も下位の階層に設けられた情報処理装置を検出することを特徴とする付記1乃至10の何れか一項に記載の運用管理プログラム。
(付記12) 前記コンピュータを、更に、
前記処理手段が検出した前記情報処理装置を示す情報を報知する報知手段、
として機能させることを特徴とする付記1乃至11の何れか一項に記載の運用管理プログラム。
(付記13) 前記計数手段は、前記各情報処理装置が多階層システムの何れかの階層に対応付けられている場合、同一の前記階層に対応付けられた情報処理装置について求めた同一の前記サンプリングタイミングごとの前記処理要求滞在数を合計して前記各階層の前記所定期間ごとの階層単位処理要求滞在数を算出し、
前記処理手段は、前記階層ごとに計数対象となった前記サンプリングタイミングの総数に対する前記階層単位処理要求滞在数の最大値から所定範囲内の値の階層単位処理要求滞在数となる前記サンプリングタイミングの数を占める割合を前記階層ごとの集中度とし、前記集中度が所定値以上である階層を検出する、
ことを特徴とする付記1乃至付記12の何れか一項に記載の運用管理プログラム。
(付記14) 情報処理装置から取得した、所定の時間間隔で得られたN(Nは1≦Nの整数)個のサンプリングタイミングから、各サンプリングタイミング時に該情報処理装置が処理中の処理要求の数を示す値Xi(iは1≦i≦Nの整数)を得る計数部と、
該Xiの総和に対する、該Xiの最大値との差分が所定範囲内にあるXiの総和の割合を求める処理を、複数の該情報処理装置について行い、求めた該割合が所定値以上の情報処理処置を検出する処理部と、
を有することを特徴とする運用管理装置。
(付記15) 運用管理装置の運用管理方法であって、
計数部が、情報処理装置から取得した、所定の時間間隔で得られたN(Nは1≦Nの整数)個のサンプリングタイミングから、各サンプリングタイミング時に該情報処理装置が処理中の処理要求の数を示す値Xi(iは1≦i≦Nの整数)を取得し、
処理部が、該Xiの総和に対する、該Xiの最大値との差分が所定範囲内にあるXiの総和の割合を求める処理を、複数の該情報処理装置について行い、求めた該割合が所定値以上の情報処理処置を検出する、
ことを特徴とする運用管理方法。