説明

システム分析支援プログラム、システム分析支援装置、およびシステム分析支援方法

【課題】バッチ処理にかかるメッセージを判別すること。
【解決手段】システム分析支援装置は、DBサーバ104との通信で使用されるプロトコルのメッセージのオブジェクト(データベースに対する操作を表す命令文の一部または全部)ごとに、該オブジェクトの集計期間T内のメッセージのうち親が存在するメッセージの出現率を求める。そして、システム分析支援装置は、集計期間Tに対する直上層のプロトコルの占有期間の占有率と、オブジェクトごとの出現率とに基づいて、バッチ処理のオブジェクトを判断する。このように、システム分析支援装置は、直上層のプロトコルの占有率の増加に伴って親が存在する割合が増加するというバッチ処理のオブジェクトの特徴を利用して、バッチ処理のメッセージを判別するための情報を作成する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ネットワークシステムの分析を支援するシステム分析支援プログラム、システム分析支援装置、およびシステム分析支援方法に関する。
【背景技術】
【0002】
近年、大規模化、複雑化するネットワークシステムの運用状況や性能問題などを的確に把握することが難しくなっている。例えば、複数のアプリケーションが連携して動作するネットワークシステムでは、性能劣化や障害の原因を突き止めるために、各サーバの挙動だけでなくシステム全体の性能を観測、分析するため、運用状況や性能問題を把握することが難しい。
【0003】
関連する先行技術としては、例えば、複数のプロセッサから構成される並列データベースシステムの動作解析を行う技術がある。従来の動作解析方法は、複数のプロセッサの各々についてデータベースアクセス処理の開始時刻と終了時刻の履歴情報を収集し、同一プロセッサについてデータベースアクセス処理の開始時刻と終了時刻とを対応付ける。そして、動作解析方法は、各プロセッサについて対応付けた終了時刻と開始時刻から処理時間を計算し、該処理時間が規定時間を超えているかどうかを判定する。
【0004】
また、先行技術として、データベースに対する操作履歴を管理する技術がある。従来の管理装置は、バッチ処理の実行中を除き、データベースの操作を行うごとに操作内容を示す操作履歴をログ記憶手段に格納する。また、管理装置は、バッチ処理要求に応じてバッチ処理が実行されたときには、バッチ処理実行中の操作履歴を格納することなく、バッチ処理の実行を示すチェックポイントログをログ記憶手段に格納する。
【0005】
また、先行技術として、システムの稼働状況を分析する技術がある。従来のシステム分析装置は、モデル生成指示が入力されると、処理間の呼出関係の確からしさに基づく選択基準に従って選択されたメッセージ集合に基づきサーバ間の呼出の制約条件を満たすトランザクションモデルを生成する。また、システム分析装置は、分析指示が入力されると、トランザクションモデルに合致するプロトコルログによりトランザクションの処理状態を分析する。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開平8−339381号公報
【特許文献2】特許第4166056号公報
【特許文献3】特開2006−11683号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
しかしながら、従来技術は、ネットワークシステムにおいてオンライン処理とバッチ処理が混在して行われる場合、システム内のサーバ間で送受信されるメッセージがオンライン処理またはバッチ処理のいずれのものかを判別することが難しいという問題がある。この結果、例えば、オンライン処理にかかる各サーバの処理時間を正確に求めることが難しくなり、ネットワークシステムの分析精度の低下を招くという問題がある。
【0008】
1つの側面では、本発明は、バッチ処理にかかるメッセージを判別することができるシステム分析支援プログラム、システム分析支援装置、およびシステム分析支援方法を提供することを目的とする。
【課題を解決するための手段】
【0009】
1つの態様では、プロトコルの階層構造が定義されたシステム内で受け渡されたメッセージ群の中から、前記システム内のデータベースを操作するためのプロトコルの直上層のプロトコルのリクエストとレスポンスのペアを検出し、前記メッセージ群の中から、所定期間内に送信された、前記データベースに対する所定の操作に関するメッセージの集合を選択し、選択されたメッセージの集合のうち、検出された1以上のペアのリクエスト時刻とレスポンス時刻の間に送信されたメッセージの割合を表す第1の指標値を算出し、前記所定期間のうち、前記1以上のペアのリクエスト時刻からレスポンス時刻までの期間が占める割合を表す第2の指標値を算出し、算出された第1および第2の指標値に基づいて、前記所定の操作がバッチ処理の操作か否かを判定し、判定された判定結果を出力する。
【発明の効果】
【0010】
1態様によれば、バッチ処理にかかるメッセージを判別することができるという効果を奏する。
【図面の簡単な説明】
【0011】
【図1】図1は、実施の形態にかかるネットワークシステムの一実施例を示すシステム構成図である。
【図2】図2は、ネットワークシステム内のメッセージ群の一例を示す説明図(その1)である。
【図3】図3は、ネットワークシステム内のメッセージ群の一例を示す説明図(その2)である。
【図4】図4は、実施の形態にかかるシステム分析支援装置のハードウェア構成の一例を示すブロック図である。
【図5】図5は、メッセージDBの記憶内容の一例を示す説明図である。
【図6】図6は、階層構造定義情報の具体例を示す説明図である。
【図7】図7は、実施の形態にかかるシステム分析支援装置の機能的構成の一例を示すブロック図である。
【図8】図8は、ペア情報テーブルの記憶内容の一例を示す説明図である。
【図9】図9は、出現率/占有率テーブルの記憶内容の一例を示す説明図である。
【図10】図10は、オブジェクトリストの具体例を示す説明図である。
【図11】図11は、レスポンスメッセージのオブジェクトの特定例を示す説明図である。
【図12】図12は、ネットワークシステム内のメッセージ群の一例を示す説明図(その3)である。
【図13】図13は、中間テーブルの記憶内容の一例を示す説明図である。
【図14】図14は、ネットワークシステム内のメッセージ群の一例を示す説明図(その4)である。
【図15】図15は、多重度テーブルの記憶内容の一例を示す説明図である。
【図16】図16は、バッチ処理のオブジェクトの判定例を示す説明図(その1)である。
【図17】図17は、バッチ処理のオブジェクトの判定例を示す説明図(その2)である。
【図18】図18は、処理対象テーブルの記憶内容の一例を示す説明図である。
【図19】図19は、実施の形態にかかるシステム分析支援装置のシステム分析支援処理手順の一例を示すフローチャートである。
【図20】図20は、ステップS1905の出現率算出処理の具体的な処理手順の一例を示すフローチャートである。
【図21】図21は、ステップS1906の占有率算出処理の具体的な処理手順の一例を示すフローチャートである。
【図22】図22は、ステップS1909の判定処理の具体的な処理手順の一例を示すフローチャート(その1)である。
【図23】図23は、ステップS1909の判定処理の具体的な処理手順の一例を示すフローチャート(その2)である。
【図24】図24は、メッセージ削除処理の具体的な処理手順の一例を示すフローチャートである。
【発明を実施するための形態】
【0012】
以下に添付図面を参照して、この発明にかかるシステム分析支援プログラム、システム分析支援装置、およびシステム分析支援方法の好適な実施の形態を詳細に説明する。
【0013】
(ネットワークシステムのシステム構成)
図1は、実施の形態にかかるネットワークシステムの一実施例を示すシステム構成図である。図1において、ネットワークシステム100は、システム分析支援装置101と、Webサーバ102と、AP(アプリケーション)サーバ103と、DB(データベース)サーバ104と、クライアント端末105と、を含む構成である。
【0014】
ネットワークシステム100において、Webサーバ102、APサーバ103、DBサーバ104およびクライアント端末105は、インターネット、LAN(Local Area Network)、WAN(Wide Area Network)などのネットワーク110を介して相互に通信可能に接続されている。
【0015】
ここで、ネットワークシステム100は、プロトコルの階層構造が定義されたシステムである。プロトコルとは、ネットワーク110を介してコンピュータ(Webサーバ102、APサーバ103、DBサーバ104)同士が通信を行う際の通信規約である。ここでは、最上位の第1階層には、HTTP(HyperText Transfer Protocol)が定義されている。このHTTPは、クライアント端末105とWebサーバ102との通信に用いられるプロトコルである。
【0016】
第2階層には、IIOP(Internet Inter−ORB Protocol)が定義されている。このIIOPは、Webサーバ102とAPサーバ103との通信に用いられるプロトコルである。最下位の第3階層には、SQL(Structured Query Language)が定義されている。このSQLは、APサーバ103とDBサーバ104との通信に用いられるプロトコルである。
【0017】
また、ネットワークシステム100は、オンライン処理とバッチ処理が混在するシステムである。オンライン処理は、クライアント端末105からの要求に応じて処理を行う処理方式である。バッチ処理は、例えば、一定期間収集したデータを一括処理、または、複数の手順からなる処理を予め決められた手順に従って連続処理する処理方式である。
【0018】
システム分析支援装置101は、ネットワークシステム100のシステム分析を支援するコンピュータである。Webサーバ102は、クライアント端末105に搭載されたブラウザからの要求に応じて、HTML(HyperText Markup Language)文書を送信するコンピュータである。
【0019】
APサーバ103は、Webサーバ102とDBサーバ104との橋渡しをおこない、データベース120に対する処理(例えば、検索処理、更新処理、削除処理など)を制御するコンピュータである。DBサーバ104は、データ群を格納するデータベース120を備え、データベース120に対する処理を実行するコンピュータである。
【0020】
クライアント端末105は、ブラウザを備え、Webサーバ102と通信するコンピュータである。クライアント端末105は、例えば、パーソナル・コンピュータ、スマートフォン、携帯電話端末などである。
【0021】
ここで、ネットワークシステム100内で受け渡されたメッセージ群の一例について説明する。メッセージとは、HTTP、IIOP、SQLのいずれかのプロトコルを用いて、ネットワークシステム100内のコンピュータ間で送受信される電文である。
【0022】
図2は、ネットワークシステム内のメッセージ群の一例を示す説明図(その1)である。図2において、ネットワークシステム100内のコンピュータ(Webサーバ102、APサーバ103、DBサーバ104)間で送受信されたメッセージM1〜M16が時系列に示されている。図2中、右向矢印はリクエストメッセージを表し、左向矢印はレスポンスメッセージを表している。
【0023】
メッセージM1〜M10は、クライアント端末105からの要求に応じて、各コンピュータ間で送受信されたメッセージの集合である。具体的には、メッセージM1〜M10は、クライアント端末105のブラウザにより「URL1」が指定されたことで発生したオンライン処理のトランザクションを示している。
【0024】
また、メッセージM11〜M16は、APサーバ103からの要求に応じて、APサーバ103とDBサーバ104との間で送受信されたメッセージの集合である。具体的には、メッセージM11〜M16は、バッチ処理のメッセージの集合である。すなわち、オンライン処理のメッセージM1〜M10が、バッチ処理のメッセージM11〜M16と混在している。
【0025】
例えば、メッセージ群M1〜M16を解析して、オンライン処理にかかる各コンピュータの処理時間を計算する場合、メッセージ群M1〜M16の中からバッチ処理のメッセージM11〜M16を除外する必要がある。ところが、各メッセージM1〜M16には、オンライン処理またはバッチ処理のいずれの処理のものかを判別するための情報が含まれていない。
【0026】
そこで、本実施の形態にかかるシステム分析支援装置101は、バッチ処理のメッセージが有する特徴を利用して、ネットワークシステム100内で受け渡されるメッセージ群の中からバッチ処理のメッセージを判別するための情報を作成する。つぎに、図3を用いて、バッチ処理のメッセージが有する特徴について説明する。
【0027】
なお、以下の説明において、本明細書では、上位階層のプロトコル(例えば、IIOP)のリクエストメッセージの送信時刻とレスポンスメッセージの送信時刻との間に送信された下位階層のプロトコル(例えば、SQL)のメッセージを「親が存在するメッセージ」という。一方、上位階層のプロトコルのリクエストメッセージの送信時刻とレスポンスメッセージの送信時刻との間に送信されたものではない下位階層のプロトコルのメッセージを「親が存在しないメッセージ」という。
【0028】
図3は、ネットワークシステム内のメッセージ群の一例を示す説明図(その2)である。図3において、メッセージM11〜M16は、APサーバ103とDBサーバ104との間で送受信されるバッチ処理のメッセージである。バッチ処理のメッセージM11〜M16は、プロトコル「SQL」のメッセージである。
【0029】
ここで、バッチ処理のメッセージM11〜M16は、直上層のプロトコル「IIOP」のメッセージと親子関係を有さない。親子関係とは、上位階層のプロトコルのコンピュータへの処理要求に伴って、下位階層のプロトコルのコンピュータへの処理要求が発生する呼出関係を表している。
【0030】
バッチ処理のメッセージは直上層のプロトコルのメッセージと親子関係を有さないため、第3階層のプロトコル「SQL」のメッセージうち、親が存在しないメッセージはバッチ処理のメッセージであるといえる。ところが、オンライン処理のメッセージとバッチ処理のメッセージとが混在すると、バッチ処理のメッセージであっても親が存在する場合がある。
【0031】
図3の例では、バッチ処理のメッセージM11〜M16のうちメッセージM11,M12,M16は、親が存在するメッセージである。このため、オンライン処理とバッチ処理とが混在するネットワークシステム100では、親子関係の有無だけを判断して、バッチ処理のメッセージを判別することは難しい。
【0032】
ここで、バッチ処理のメッセージに親が存在する傾向は、集計期間Tに対する、直上層のプロトコルのリクエストメッセージの送信時刻とレスポンスメッセージの送信時刻との間の期間(以下、「占有期間」という)が占める割合が増加するに伴って顕著になる。
【0033】
図3の例では、集計期間Tにおいて、直上層のプロトコル「IIOP」のリクエストメッセージM2の送信時刻とレスポンスメッセージM9との間の占有期間は、『t1』である。また、集計期間Tにおいて、直上層のプロトコル「IIOP」のリクエストメッセージM17の送信時刻とレスポンスメッセージ(不図示)との間の占有期間は、『t2』である。
【0034】
換言すれば、集計期間Tに対する占有期間(例えば、『t1+t2』)が占める割合(以下、「占有率」という)の増加に伴って、親が存在する割合が増加するメッセージは、バッチ処理のメッセージであるといえる。
【0035】
そこで、システム分析支援装置101は、直上層のプロトコルの占有率の増加に伴って親が存在する割合が増加するという特徴を利用して、バッチ処理のメッセージを判別するための情報を作成する。具体的には、例えば、システム分析支援装置101は、第3階層のプロトコル「SQL」のメッセージをオブジェクト単位で分類する。
【0036】
オブジェクトとは、メッセージを分類するためのものである。第3階層のプロトコル「SQL」のメッセージの場合、該メッセージに含まれるデータベース120に対する操作を表す命令文の一部または全部によって表現される。なお、オブジェクトの具体例については後述する。
【0037】
つぎに、システム分析支援装置101は、プロトコル「SQL」のメッセージのオブジェクトごとに、該オブジェクトの集計期間T内のメッセージのうち親が存在するメッセージの出現率を求める。そして、システム分析支援装置101は、集計期間Tに対する直上層のプロトコル「IIOP」の占有期間の占有率と、オブジェクトごとの出現率とに基づいて、バッチ処理のオブジェクトを判断する。
【0038】
これにより、システム分析時に、処理対象となるネットワークシステム100内のメッセージデータ群の中からバッチ処理のオブジェクトのメッセージを判別して除去することができ、分析精度の向上を図ることができる。
【0039】
(システム分析支援装置101のハードウェア構成)
図4は、実施の形態にかかるシステム分析支援装置のハードウェア構成の一例を示すブロック図である。図4において、システム分析支援装置101は、CPU(Central Processing Unit)401と、ROM(Read‐Only Memory)402と、RAM(Random Access Memory)403と、磁気ディスクドライブ404と、磁気ディスク405と、光ディスクドライブ406と、光ディスク407と、ディスプレイ408と、I/F(Interface)409と、キーボード410と、マウス411と、スキャナ412と、プリンタ413と、を備えている。また、各構成部はバス400によってそれぞれ接続されている。
【0040】
ここで、CPU401は、システム分析支援装置101の全体の制御を司る。ROM402は、ブートプログラムなどのプログラムを記憶している。RAM403は、CPU401のワークエリアとして使用される。磁気ディスクドライブ404は、CPU401の制御にしたがって磁気ディスク405に対するデータのリード/ライトを制御する。磁気ディスク405は、磁気ディスクドライブ404の制御で書き込まれたデータを記憶する。
【0041】
光ディスクドライブ406は、CPU401の制御にしたがって光ディスク407に対するデータのリード/ライトを制御する。光ディスク407は、光ディスクドライブ406の制御で書き込まれたデータを記憶したり、光ディスク407に記憶されたデータをコンピュータに読み取らせたりする。
【0042】
ディスプレイ408は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。このディスプレイ408は、例えば、CRT、TFT液晶ディスプレイ、プラズマディスプレイなどを採用することができる。
【0043】
I/F409は、通信回線を通じてLAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどのネットワーク110に接続され、このネットワーク110を介して他のコンピュータに接続される。そして、I/F409は、ネットワーク110と内部のインターフェースを司り、外部のコンピュータからのデータの入出力を制御する。I/F409には、例えば、モデムやLANアダプタなどを採用することができる。
【0044】
キーボード410は、文字、数字、各種指示などの入力のためのキーを備え、データの入力をおこなう。また、タッチパネル式の入力パッドやテンキーなどであってもよい。マウス411は、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などをおこなう。ポインティングデバイスとして同様に機能を備えるものであれば、トラックボールやジョイスティックなどであってもよい。
【0045】
スキャナ412は、画像を光学的に読み取り、システム分析支援装置101内に画像データを取り込む。なお、スキャナ412は、OCR(Optical Character Reader)機能を持たせてもよい。また、プリンタ413は、画像データや文書データを印刷する。プリンタ413には、例えば、レーザプリンタやインクジェットプリンタを採用することができる。
【0046】
なお、図1に示したWebサーバ102、APサーバ103、DBサーバ104およびクライアント端末105についても、上述したシステム分析支援装置101と同様のハードウェア構成によって実現することができる。
【0047】
(メッセージDB500の記憶内容)
つぎに、図5を用いて、システム分析支援装置101が用いるメッセージDB500について説明する。メッセージDB500は、例えば、図4に示したRAM403、磁気ディスク405、光ディスク407などの記憶装置により実現される。
【0048】
図5は、メッセージDBの記憶内容の一例を示す説明図である。図5において、メッセージDB500は、メッセージID、タイムスタンプ、プロトコル、メッセージ種別およびオブジェクトのフィールドを有する。各フィールドに情報を設定することで、メッセージのメッセージデータ(例えば、メッセージデータ500−1〜500−12)がレコードとして記憶されている。
【0049】
メッセージIDは、ネットワークシステム100内で送受信されたメッセージの識別子である。ペアとなる一対のメッセージには、同一のメッセージIDが付与される。タイムスタンプは、メッセージの送信時刻である。なお、各メッセージデータは、送信時刻の早い順にソートされてメッセージDB500に記憶されている。プロトコルは、メッセージのプロトコルである。
【0050】
メッセージ種別は、リクエストメッセージまたはレスポンスメッセージを示す情報である。以下、リクエストメッセージはメッセージ種別「リクエスト」のメッセージを示し、レスポンスメッセージはメッセージ種別「レスポンス」のメッセージを示す。オブジェクトは、各メッセージを分類するための識別子である。図5の例では、第3階層のプロトコル「SQL」のリクエストメッセージについてのオブジェクトのみ表記されている。
【0051】
ここで、第3階層のプロトコル「SQL」のリクエストメッセージについてのオブジェクトについて説明する。例えば、オブジェクトSQL1は、リクエストメッセージS1に含まれるDB120に対する操作を表す命令文から抽出された文字列である。
【0052】
より具体的には、例えば、リクエストメッセージS1に含まれるDB120に対する操作を表す命令文を「SELECT ID, Name FROM Customer WHERE ID=100」とする。この命令文は、DB120内の「Customer」テーブルの中から、「ID=100」の「ID」および「Name」を取得するためのものである。この場合、例えば、命令文に含まれる「SELECT … FROM Customer WHERE …」をオブジェクト「SQL1」とすることができる。なお、オブジェクト「SQL1」に含まれる「…」は任意の文字列を示している。
【0053】
また、命令文を「DELETE FROM Customer WHERE ID=100」とする。この命令文は、DB120内の「Customer」テーブルの中から、「ID=100」のレコードを削除するためのものである。この場合、例えば、命令文に含まれる「DELETE FROM Customer WHERE …」をオブジェクト「SQL1」とすることができる。
【0054】
また、命令文を「UPDATE Customer SET ID=100」とする。この命令文は、DB120内の「Customer」テーブルの中から、「ID=100」のレコードを更新するためのものである。この場合、例えば、命令文に含まれる「UPDATE Customer SET …」をオブジェクト「SQL1」とすることができる。
【0055】
このように、オブジェクトは、リクエストメッセージに含まれる命令文の一つ以上の句や文節の組合せによって表現することができる。プロトコル「HTTP」のリクエストメッセージの場合、オブジェクトとして、例えば、URL(Uniform Resource Locator)を用いることができる。また、プロトコル「IIOP」のリクエストメッセージの場合、オブジェクトとして、例えば、ある機能を実現するためのプログラムの名称を用いることができる。
【0056】
ここで、メッセージデータ500−4を例に挙げると、送信時刻「00:00:00.003」にプロトコル「SQL」のリクエストメッセージS1が、APサーバ103からDBサーバ104に送信されたことを認識できる。また、リクエストメッセージS1のオブジェクト「SQL1」を認識することができる。
【0057】
メッセージの送信元および送信先のコンピュータは、プロトコルとメッセージ種別から特定することができる。例えば、プロトコル「HTTP」、メッセージ種別「リクエスト」の場合、送信元のコンピュータはクライアント端末105であり、送信先のコンピュータはWebサーバ102である。なお、上述した説明では、タイムスタンプをメッセージの送信時刻と定義したが、タイムスタンプをメッセージの受信時刻と定義してもよい。
【0058】
(階層構造定義情報600の具体例)
つぎに、ネットワークシステム100のプロトコルの階層構造を定義する階層構造定義情報の具体例について説明する。
【0059】
図6は、階層構造定義情報の具体例を示す説明図である。図6において、階層構造定義情報600には、ネットワークシステム100の3階層のプロトコルが定義されている。具体的には、階層構造定義情報600には、最上位の第1階層にHTTPが定義され、第2階層にIIOPが定義され、最下位の第3階層にSQLが定義されている。
【0060】
(分析支援装置101の機能的構成)
図7は、実施の形態にかかるシステム分析支援装置の機能的構成の一例を示すブロック図である。図7において、システム分析支援装置101は、取得部701と、検出部702と、特定部703と、選択部704と、第1の算出部705と、第2の算出部706と、判定部707と、出力部708と、削除部709と、を含む構成である。各機能部(取得部701〜削除部709)は、具体的には、例えば、図4に示したROM402、RAM403、磁気ディスク405、光ディスク407などの記憶装置に記憶されたプログラムをCPU401に実行させることにより、または、I/F409により、その機能を実現する。また、各機能部の処理結果は、特に指定する場合を除いて、RAM403、磁気ディスク405、光ディスク407などの記憶装置に記憶される。
【0061】
取得部701は、ネットワークシステム100のプロトコルの階層構造が定義された階層構造定義情報600(図6参照)を取得する機能を有する。具体的には、例えば、取得部701が、階層構造定義情報600を、図4に示したキーボード410やマウス411を用いたユーザの操作入力により取得してもよく、また、外部のコンピュータから階層構造定義情報600を受信してもよい。階層構造定義情報600によれば、ネットワークシステム100のプロトコルの階層構造を認識することができる。
【0062】
また、取得部701は、ネットワークシステム100内で受け渡されたメッセージ群を取得する機能を有する。メッセージは、例えば、メッセージID、タイムスタンプ、プロトコルおよびメッセージ種別を含む電文である。また、リクエストメッセージには、オブジェクトが含まれている。
【0063】
具体的には、例えば、取得部701が、ネットワークシステム100内に設けられたスイッチ(不図示)を介して、ネットワークシステム100内のコンピュータ間で送受信されるパケットをキャプチャする。そして、システム分析支援装置101において、キャプチャしたパケット群をメッセージ解析して各メッセージを再構成することにより、メッセージ群を取得する。
【0064】
また、取得部701が、例えば、メッセージ群を、キーボード410やマウス411を用いたユーザの操作入力により取得してもよく、さらに、外部のコンピュータからメッセージ群を受信してもよい。取得されたメッセージのメッセージID、タイムスタンプ、プロトコルおよびメッセージ種別は、例えば、図5に示したメッセージDB500に記憶される。
【0065】
検出部702は、取得されたメッセージ群の中から、ネットワークシステム100内のデータベース120を操作するためのプロトコルの直上層のプロトコルのリクエストメッセージとレスポンスメッセージのペアを検出する機能を有する。
【0066】
ここで、データベース120を操作するためのプロトコルは、ネットワークシステム100の第3階層に定義されている「SQL」である。また、プロトコル「SQL」の直上層のプロトコルは、ネットワークシステム100の第2階層に定義されている「IIOP」である。
【0067】
具体的には、例えば、まず、検出部702が、メッセージDB500の中から、プロトコル「IIOP」の任意のメッセージデータを検出する。つぎに、検出部702が、メッセージDB500の中から、選択したメッセージデータとメッセージIDが同一かつプロトコル「IIOP」のメッセージデータを検出する。これにより、プロトコル「IIOP」のリクエストメッセージとレスポンスメッセージのペアを検出することができる。
【0068】
一例として、検出部702が、メッセージDB500の中からメッセージデータ500−3を検出した場合を想定する。この場合、検出部702が、メッセージDB500の中からメッセージID「I1」かつプロトコル「IIOP」のメッセージデータ500−7を検出する。これにより、プロトコル「IIOP」のリクエストメッセージI1とレスポンスメッセージI1とのペアを検出することができる。
【0069】
検出部702は、例えば、メッセージDB500の中から検出されていないプロトコル「IIOP」のメッセージデータがなくなるまで、ペアを検出する処理を繰り返し行う。これにより、メッセージDB500の中からプロトコル「IIOP」のリクエストメッセージとレスポンスメッセージのすべてのペアを検出することができる。
【0070】
また、検出部702は、検出したペアごとに、該ペアのリクエストメッセージの送信時刻をリクエスト時刻として特定し、該ペアのレスポンスメッセージの送信時刻をレスポンス時刻として特定する。一例として、プロトコル「IIOP」かつメッセージID「I1」のペアが検出された場合を想定する。この場合、メッセージデータ500−3のタイムスタンプ「00:00:00.002」をリクエスト時刻とし、メッセージデータ500−7のタイムスタンプ「00:00:00.006」をレスポンス時刻として特定する。
【0071】
検出された検出結果は、例えば、図8に示すペア情報テーブル800に記憶される。ペア情報テーブル800は、例えば、RAM403、磁気ディスク405、光ディスク407などの記憶装置により実現される。ここで、ペア情報テーブル800について説明する。
【0072】
図8は、ペア情報テーブルの記憶内容の一例を示す説明図である。図8において、ペア情報テーブル800は、ペアID、メッセージID、リクエスト時刻およびレスポンス時刻のフィールドを有する。各フィールドに情報を設定することで、検出されたペアごとのペア情報(例えば、ペア情報800−1,800−2)がレコードとして記憶されている。
【0073】
ここで、ペアIDは、プロトコル「IIOP」のリクエストメッセージとレスポンスメッセージとのペアの識別子である。メッセージIDは、ペアのメッセージIDである。リクエスト時刻は、ペアのリクエストメッセージの送信時刻である。レスポンス時刻は、ペアのレスポンスメッセージの送信時刻である。
【0074】
例えば、ペア情報800−1によれば、リクエスト時刻「00:00:00.002」にペアP1のリクエストメッセージI1が送信され、レスポンス時刻「00:00:00.006」にペアP1のレスポンスメッセージI1が送信されたことを認識できる。
【0075】
図7の説明に戻り、特定部703は、取得されたメッセージ群のうち、ネットワークシステム100内のデータベース120を操作するためのプロトコルのメッセージのオブジェクトを特定する機能を有する。
【0076】
具体的には、例えば、まず、特定部703が、プロトコル「SQL」のリクエストメッセージのオブジェクトを特定する。より具体的には、例えば、特定部703が、取得されたプロトコル「SQL」のリクエストメッセージの中から、予め規定された抽出ルールに従って命令文の一部または全部を抽出することによりオブジェクトを特定する。
【0077】
例えば、取得されたリクエストメッセージS1に含まれる命令文を「SELECT ID, Name FROM Customer WHERE ID=100」とする。この場合、例えば、特定部703が、リクエストメッセージS1の中から、「SELECT … FROM Customer WHERE …」を抽出することにより、オブジェクト「SQL1」を特定する。
【0078】
特定されたリクエストメッセージのオブジェクトは、メッセージDB500内の該当するメッセージデータのオブジェクトフィールドに設定される。例えば、特定されたリクエストメッセージS1のオブジェクト「SQL1」は、メッセージDB500内のメッセージデータ500−4のオブジェクトフィールドに設定される。
【0079】
つぎに、特定部703が、プロトコル「SQL」のレスポンスメッセージのオブジェクトを特定する。具体的には、例えば、まず、特定部703が、メッセージDB500の中から、プロトコル「SQL」かつメッセージ種別「リクエスト」のメッセージデータを選択する。そして、特定部703が、選択したメッセージデータのオブジェクトを特定する。
【0080】
このあと、特定部703が、メッセージDB500の中から、選択したメッセージデータとメッセージIDが同一かつプロトコル「SQL」のメッセージデータを検索する。ここで、メッセージデータが検索された場合、特定部703が、メッセージDB500内の該メッセージデータのオブジェクトフィールドに、特定したオブジェクトを設定する。
【0081】
これにより、プロトコル「SQL」のレスポンスメッセージのオブジェクトを特定することができる。なお、プロトコル「SQL」のレスポンスメッセージのオブジェクトの特定例については、図11を用いて後述する。
【0082】
選択部704は、取得されたメッセージ群の中から、所定期間T内に送信された、データベース120に対する所定の操作に関するメッセージの集合を選択する機能を有する。データベース120に対する所定の操作に関するメッセージとは、データベース120に対する所定の操作を表す命令文を含むリクエストメッセージおよび該リクエストメッセージと同一メッセージIDのレスポンスメッセージである。
【0083】
すなわち、所定の操作に関するメッセージの集合は、プロトコル「SQL」の同一オブジェクトのメッセージの集合である。具体的には、例えば、選択部704が、メッセージDB500のオブジェクトフィールドを参照して、プロトコル「SQL」のオブジェクトごとに、所定期間T内に送信された同一オブジェクトのメッセージの集合を抽出する。
【0084】
一例として、所定期間Tを「00:00:00.000〜00:00:00.011」とする。この場合、選択部704が、例えば、メッセージDB500のオブジェクトフィールドを参照して、所定期間T内に送信されたオブジェクト「SQL1」のリクエストメッセージS1およびレスポンスメッセージS1を選択する。
【0085】
なお、所定期間Tは、任意に設定可能であり、例えば、RAM403、磁気ディスク405、光ディスク407などの記憶装置に記憶されている。具体的には、例えば、所定期間Tは、例えば、10分単位や1時間単位の期間である。
【0086】
第1の算出部705は、選択されたメッセージの集合のうち、検出部702によって検出された1以上のペアのリクエスト時刻とレスポンス時刻の間に送信されたメッセージの割合を表す指標値を算出する機能を有する。
【0087】
ここで、選択されたメッセージは、プロトコル「SQL」のメッセージである。検出されたペアは、プロトコル「IIOP」のメッセージのペアである。すなわち、検出された1つ以上のペアのリクエスト時刻とレスポンス時刻の間に送信されたメッセージとは、親が存在するメッセージである。
【0088】
具体的には、例えば、第1の算出部705が、プロトコル「SQL」のオブジェクトごとに、選択された該オブジェクトのメッセージの集合のうち、親が存在するメッセージの割合を表す指標値(以下、「出現率」という)を算出する。なお、第1の算出部705の具体的な処理内容については、図12を用いて後述する。
【0089】
以下説明のため、プロトコル「SQL」の任意のオブジェクトを「オブジェクトSQLi」と表記する。
【0090】
第2の算出部706は、所定期間Tのうち、検出された1以上のペアのリクエスト時刻からレスポンス時刻までの期間(以下、「占有期間」という)が占める割合を表す指標値(以下、「占有率」という)を算出する機能を有する。ここで、占有期間とは、所定期間Tのうち多重度が1以上の期間の合計である。多重度とは、データベース120を操作するためのプロトコルの直上層のプロトコルのペアのリクエスト時刻からレスポンス時刻までの期間が重なっている数である。
【0091】
具体的には、例えば、第2の算出部706が、所定期間Tのうち、多重度が1以上の期間の合計を表すプロトコル「IIOP」の占有期間を算出する。そして、第2の算出部706が、所定期間Tのうち、プロトコル「IIOP」の占有期間が占める割合を表す占有率を算出する。なお、第2の算出部706の具体的な処理内容は、図13を用いて後述する。
【0092】
判定部707は、算出された出現率および占有率に基づいて、データベース120に対する所定の操作がバッチ処理の操作か否かを判定する。具体的には、例えば、判定部707が、プロトコル「SQL」のオブジェクトSQLiの出現率(以下、「出現率Ai」という)および所定期間Tの占有率(以下、「占有率P」という)に基づいて、オブジェクトSQLiがバッチ処理のオブジェクトか否かを判定する。
【0093】
より具体的には、例えば、判定部707が、オブジェクトSQLiの出現率Aiが閾値α以下かつ所定期間Tの占有率Pが閾値β以下の場合、オブジェクトSQLiがバッチ処理のオブジェクトであると判定する。閾値α、βは、予め設定されてROM402、RAM403、磁気ディスク405、光ディスク407などの記憶装置に記憶されている。
【0094】
ここで、オブジェクトSQLiの出現率Aiが低ければ低いほど、オブジェクトSQLiがバッチ処理のオブジェクトである可能性が高くなる。また、所定期間Tの占有率Pが低ければ低いほど、オブジェクトSQLiがバッチ処理のオブジェクトである可能性が高くなる。
【0095】
すなわち、上記閾値α、βを小さい値に設定するほど、バッチ処理のオブジェクトを正確に判定することができる。一方、上記閾値α、βの値が小さすぎると、バッチ処理のオブジェクトであると判定される基準が厳しくなり、オブジェクトSQLiがバッチ処理のオブジェクトであっても判定されない場合がある。
【0096】
このため、閾値αは、シミュレーションを行うなどして、オブジェクトSQLiの出現率Aiが閾値α以下の場合、オブジェクトSQLiがバッチ処理のオブジェクトである可能性が高くなる適切な値(例えば、10[%])に設定される。同様に、閾値βは、シミュレーションを行うなどして、所定期間Tの占有率Pが閾値β以下の場合、オブジェクトSQLiがバッチ処理のオブジェクトである可能性が高くなる適切な値(例えば、10[%])に設定される。
【0097】
また、選択部704は、複数の所定期間の各々の所定期間ごとに、メッセージ群の中から、各々の所定期間内に送信された、オブジェクトSQLiのメッセージの集合を選択することにしてもよい。ここで、複数の所定期間は、例えば、メッセージ群の集計期間全体を所定期間Tで区切って分割された期間の集合である。
【0098】
以下説明のため、複数の所定期間を「集計期間T1〜Tm」と表記し、集計期間T1〜Tmのうち任意の集計期間を「集計期間Tj」と表記する(j=1,2,…,m)。
【0099】
また、第1の算出部705は、集計期間Tjごとに、集計期間Tjごとに選択されたオブジェクトSQLiのメッセージの集合のうち、親が存在するメッセージの割合を表す出現率Aiを算出することにしてもよい。また、第2の算出部706は、集計期間Tjごとに、集計期間Tjのうち占有期間が占める割合を表す占有率Pを算出することにしてもよい。
【0100】
以下説明のため、集計期間TjにおけるオブジェクトSQLiの出現率Aiを「出現率Aji」と表記する。また、集計期間Tjのうち占有期間が占める割合を表す占有率Pを「占有率Pj」と表記する。
【0101】
算出された集計期間TjにおけるオブジェクトSQLiの出現率Ajiおよび占有率Pjは、例えば、図9に示す出現率/占有率テーブル900に記憶される。出現率/占有率テーブル900は、例えば、RAM403、磁気ディスク405、光ディスク407などの記憶装置により実現される。ここで、出現率/占有率テーブル900について説明する。
【0102】
図9は、出現率/占有率テーブルの記憶内容の一例を示す説明図である。図9において、出現率/占有率テーブル900は、集計期間ID、オブジェクトID、出現率および占有率のフィールドを有する。各フィールドに情報を設定することで、集計期間Tjごとの出現率/占有率情報(例えば、出現率/占有率情報900−1,900−2)がレコードとして記憶されている。
【0103】
集計期間IDは、集計期間Tjの識別子である。オブジェクトIDは、プロトコル「SQL」のオブジェクトの識別子である。出現率は、集計期間TjにおけるオブジェクトSQLiの出現率Ajiである。占有率は、集計期間Tjのうち占有期間が占める割合を表す占有率Pjである。
【0104】
一例として出現率/占有率情報900−1を例に挙げると、集計期間T1におけるオブジェクトSQL1の出現率A11、オブジェクトSQL2の出現率A12、オブジェクトSQL3の出現率A13、および集計期間T1の占有率P1が設定されている。
【0105】
図7の説明に戻り、また、判定部707は、集計期間Tjごとに算出されたオブジェクトSQLiの出現率Ajiおよび占有率Pjに基づいて、オブジェクトSQLiがバッチ処理のオブジェクトか否かを判定することにしてもよい。なお、判定部707の具体的な処理内容については、図16および図17を用いて後述する。
【0106】
出力部708は、判定された判定結果を出力する機能を有する。具体的には、例えば、出力部708が、後述の図10に示すような、バッチ処理のオブジェクトSQLiをリスト化して示すオブジェクトリスト1000を出力することにしてもよい。
【0107】
出力形式としては、例えば、ディスプレイ408への表示、プリンタ413への印刷出力、I/F409による外部装置への送信がある。また、RAM403、磁気ディスク405、光ディスク407などの記憶領域に記憶することとしてもよい。ここで、オブジェクトリスト1000の具体例について説明する。
【0108】
図10は、オブジェクトリストの具体例を示す説明図である。図10において、オブジェクトリスト1000は、バッチ処理のオブジェクトSQL3,SQL4,SQL6をリスト化して示す情報である。オブジェクトリスト1000によれば、プロトコル「SQL」のオブジェクトのうち、バッチ処理のオブジェクトであると判定されたオブジェクトSQL3,SQL4,SQL6を判別することができる。
【0109】
図7の説明に戻り、削除部709は、オブジェクトSQLiがバッチ処理のオブジェクトであると判定された場合、ネットワークシステム100内で受け渡されたメッセージ群の中から、オブジェクトSQLiのメッセージを削除する機能を有する。
【0110】
具体的には、例えば、削除部709が、メッセージ群の中から、オブジェクトSQLiを表す文字列を含むリクエストメッセージを特定する。つぎに、削除部709が、メッセージ群の中から、特定したリクエストメッセージと同一メッセージIDのレスポンスメッセージを検索する。
【0111】
そして、削除部709が、メッセージ群の中から、特定したリクエストメッセージおよびレスポンスメッセージを削除する。これにより、ネットワークシステム100内で受け渡されたメッセージ群の中から、バッチ処理のオブジェクトSQLiのメッセージを削除することができる。なお、メッセージの削除例については、図18を用いて後述する。
【0112】
また、出力部708は、ネットワークシステム100内で受け渡されたメッセージ群の中から、バッチ処理のオブジェクトSQLiのメッセージが削除された削除後のメッセージ群を出力することにしてもよい。これにより、バッチ処理のオブジェクトSQLiのメッセージを除く残余のメッセージ群を用いて、ネットワークシステム100内の各コンピュータの処理時間を求めることが可能となり、システム分析の分析精度を向上させることができる。
【0113】
なお、上述した説明では、HTTP、IIOPおよびSQLの3階層のネットワークシステム100を例に挙げて説明したが、これに限らない。例えば、ネットワークシステム100内のデータベース120を操作するためのプロトコルを含む多階層システム(例えば、2階層、4階層など)であればよい。
【0114】
(レスポンスメッセージのオブジェクトの特定例)
つぎに、図11を用いて、プロトコル「SQL」のレスポンスメッセージのオブジェクトSQLiの特定例について説明する。
【0115】
図11は、レスポンスメッセージのオブジェクトの特定例を示す説明図である。図11の(11−1)において、メッセージDB500には、プロトコル「SQL」のリクエストメッセージS1,S2,S3のオブジェクトSQL1,SQL2,SQL3が設定されている。
【0116】
以下、リクエストメッセージS1,S2,S3と同一メッセージIDのレスポンスメッセージS1〜S3のオブジェクトSQLiを特定する場合を例に挙げて説明する。
【0117】
・レスポンスメッセージS1のオブジェクトSQLi
まず、特定部703が、メッセージDB500の中から、プロトコル「SQL」かつメッセージ種別「リクエスト」のメッセージデータ500−4を選択する。そして、特定部703が、メッセージデータ500−4のオブジェクトSQL1を特定する。つぎに、特定部703が、メッセージDB500の中から、メッセージデータ500−4とメッセージIDが同一かつプロトコル「SQL」のメッセージデータを検索する。
【0118】
ここでは、メッセージデータ500−6が検索される。そして、特定部703が、メッセージDB500内のメッセージデータ500−6のオブジェクトフィールドに、特定したオブジェクトSQL1を設定する(図11中、(11−2)参照)。これにより、レスポンスメッセージS1のオブジェクトSQL1を特定することができる。
【0119】
・レスポンスメッセージS2のオブジェクトSQLi
まず、特定部703が、メッセージDB500の中から、プロトコル「SQL」かつメッセージ種別「リクエスト」のメッセージデータ500−8を選択する。そして、特定部703が、メッセージデータ500−8のオブジェクトSQL2を特定する。つぎに、特定部703が、メッセージDB500の中から、メッセージデータ500−8とメッセージIDが同一かつプロトコル「SQL」のメッセージデータを検索する。
【0120】
ここでは、メッセージデータ500−9が検索される。そして、特定部703が、メッセージDB500内のメッセージデータ500−9のオブジェクトフィールドに、特定したオブジェクトSQL2を設定する(図11中、(11−2)参照)。これにより、レスポンスメッセージS2のオブジェクトSQL2を特定することができる。
【0121】
・レスポンスメッセージS3のオブジェクトSQLi
まず、特定部703が、メッセージDB500の中から、プロトコル「SQL」かつメッセージ種別「リクエスト」のメッセージデータ500−11を選択する。そして、特定部703が、メッセージデータ500−11のオブジェクトSQL3を特定する。つぎに、特定部703が、メッセージDB500の中から、メッセージデータ500−11とメッセージIDが同一かつプロトコル「SQL」のメッセージデータを検索する。
【0122】
ここでは、メッセージデータ500−12が検索される。そして、特定部703が、メッセージDB500内のメッセージデータ500−12のオブジェクトフィールドに、特定したオブジェクトSQL3を設定する(図11中、(11−2)参照)。これにより、レスポンスメッセージS3のオブジェクトSQL3を特定することができる。
【0123】
(第1の算出部705の具体的な処理内容)
つぎに、図12を用いて、集計期間TjにおけるオブジェクトSQLiの出現率Ajiを算出する第1の算出部705の具体的な処理内容について説明する。
【0124】
第1の算出部705は、例えば、下記式(1)を用いて、集計期間TjにおけるオブジェクトSQLiの出現率Ajiを算出する。ただし、Ajiは、集計期間TjにおけるオブジェクトSQLiの出現率である。Yは、集計期間TjにおけるオブジェクトSQLiのメッセージの総数である。Xは、集計期間Tjにおける親が存在するオブジェクトSQLiのメッセージの総数である。
【0125】
ji=X/Y ・・・(1)
【0126】
図12は、ネットワークシステム内のメッセージ群の一例を示す説明図(その3)である。図12において、メッセージm1〜m3は、集計期間Txにおいて、Webサーバ102とAPサーバ103との間で送受信されたプロトコル「IIOP」のメッセージである。また、メッセージm4〜m17は、集計期間TxにおいてAPサーバ103とDBサーバ104との間で送受信されたプロトコル「SQL」のメッセージである。なお、集計期間Txは、集計期間T1〜Tmのいずれかの集計期間である。
【0127】
ここで、プロトコル「IIOP」のメッセージm1,m2は、メッセージIDが同一のペアp1である。時刻t1は、プロトコル「IIOP」のメッセージm1(リクエスト)の送信時刻である。時刻t2は、プロトコル「IIOP」のメッセージm2(レスポンス)の送信時刻である。
【0128】
また、プロトコル「IIOP」のメッセージm3,m18は、メッセージIDが同一のペアp2である。時刻t3は、プロトコル「IIOP」のメッセージm3(リクエスト)の送信時刻である。時刻t5は、プロトコル「IIOP」のメッセージm18(レスポンス)の送信時刻である。ただし、メッセージm18(レスポンス)の送信時刻は集計期間Tx外となっている。時刻t4は、集計期間Txの終期の時刻である。
【0129】
また、メッセージm4,m5,m8,m10,m16,m17は、オブジェクトSQL1のメッセージの集合である。メッセージm6,m7は、オブジェクトSQL2のメッセージの集合である。メッセージm9,m11,m12,m13,m14,m15は、オブジェクトSQL3のメッセージの集合である。
【0130】
・オブジェクトSQL1の出現率Ax
ここで、集計期間TxにおけるオブジェクトSQL1の出現率Ax1を算出する第1の算出部705の具体的な処理内容の一例について説明する。まず、第1の算出部705は、集計期間TxにおけるオブジェクトSQL1のメッセージm4,m5,m8,m10,m16,m17の総数Yを計数する。ここでは、総数Yは「Y=6」である。計数された総数Yは、例えば、後述の図13に示す中間テーブル1300に記憶される。
【0131】
つぎに、第1の算出部705は、集計期間Txにおけるプロトコル「IIOP」の1以上のペアのリクエスト時刻とレスポンス時刻の間に送信されたオブジェクトSQL1のメッセージの総数を計数する。すなわち、第1の算出部705が、集計期間Txにおける親が存在するオブジェクトSQL1のメッセージの総数Xを計数する。
【0132】
ここで、オブジェクトSQL1のメッセージm4,m5,m8,m10,m16,m17のうち、メッセージm4,m5,m8,m10は、プロトコル「IIOP」のペアp1のリクエスト時刻t1とレスポンス時刻t2の間に送信されたメッセージである。すなわち、メッセージm4,m5,m8,m10は、親が存在するメッセージである。
【0133】
また、オブジェクトSQL1のメッセージm4,m5,m8,m10,m16,m17のうち、メッセージm16,m17は、プロトコル「IIOP」のペアp2のリクエスト時刻t3と、レスポンス時刻t5前の時刻t4の間に送信されたメッセージである。すなわち、メッセージm16,m17は、親が存在するメッセージである。
【0134】
したがって、メッセージm4,m5,m8,m10,m16,m17は、すべて親が存在するメッセージである。このため、集計期間Txにおける親が存在するオブジェクトSQL1のメッセージの総数Xは「X=6」となる。計数された総数Xは、例えば、後述の図13に示す中間テーブル1300に記憶される。
【0135】
この場合、第1の算出部705は、上記式(1)に「X=6」および「Y=6」を代入することにより、集計期間TxにおけるオブジェクトSQL1の出現率Ax1を算出する。ここでは、出現率Ax1は「Ax1=6/6=1」となる。
【0136】
・オブジェクトSQL2の出現率Ax
つぎに、集計期間TxにおけるオブジェクトSQL2の出現率Ax2を算出する第1の算出部705の具体的な処理内容の一例について説明する。まず、第1の算出部705は、集計期間TxにおけるオブジェクトSQL2のメッセージm6,m7の総数Yを計数する。ここでは、総数Yは「Y=2」である。
【0137】
つぎに、第1の算出部705は、集計期間Txにおける親が存在するオブジェクトSQL2のメッセージの総数Xを計数する。ここで、メッセージm6,m7は、プロトコル「IIOP」のペアp1のリクエスト時刻t1とレスポンス時刻t2の間に送信されたメッセージである。
【0138】
すなわち、オブジェクトSQL2のメッセージm6,m7は、すべて親が存在するメッセージである。このため、集計期間Txにおける親が存在するオブジェクトSQL2のメッセージの総数Xは「X=2」となる。この場合、第1の算出部705は、上記式(1)に「X=2」および「Y=2」を代入することにより、集計期間TxにおけるオブジェクトSQL2の出現率Ax2を算出する。ここでは、出現率Ax2は「Ax2=2/2=1」となる。
【0139】
・オブジェクトSQL3の出現率Ax
つぎに、集計期間TxにおけるオブジェクトSQL3の出現率Ax3を算出する第1の算出部705の具体的な処理内容の一例について説明する。まず、第1の算出部705は、集計期間TxにおけるオブジェクトSQL3のメッセージm9,m11,m12,m13,m14,m15の総数Yを計数する。ここでは、総数Yは「Y=6」である。
【0140】
つぎに、第1の算出部705は、集計期間Txにおける親が存在するオブジェクトSQL3のメッセージの総数Xを計数する。ここで、オブジェクトSQL3のメッセージm9,m11,m12,m13,m14,m15のうち、メッセージm9,m11は、プロトコル「IIOP」のペアp1のリクエスト時刻t1とレスポンス時刻t2の間に送信されたメッセージである。すなわち、メッセージm9,m11は、親が存在するメッセージである。
【0141】
また、オブジェクトSQL3のメッセージm9,m11,m12,m13,m14,15のうち、メッセージm15は、プロトコル「IIOP」のペアp2のリクエスト時刻t3と、レスポンス時刻t5前の時刻t4の間に送信されたメッセージである。すなわち、メッセージm15は、親が存在するメッセージである。
【0142】
一方、オブジェクトSQL3のメッセージm9,m11,m12,m13,m14,m15のうち、メッセージm12,m13,m14は、プロトコル「IIOP」のペアp1,p2のいずれのペアのリクエスト時刻とレスポンス時刻の間に送信されていないメッセージである。すなわち、メッセージm12,m13,m14は、親が存在しないメッセージである。
【0143】
このため、集計期間Txにおける親が存在するオブジェクトSQL3のメッセージの総数Xは「X=3」となる。この場合、第1の算出部705は、上記式(1)に「X=3」および「Y=6」を代入することにより、集計期間TxにおけるオブジェクトSQL3の出現率Ax3を算出する。ここでは、出現率Ax3は「Ax3=3/6=0.5」となる。
【0144】
上述した第1の算出部705の一連の処理の途中で計数される集計期間TxにおけるオブジェクトSQL1のメッセージの総数Y、および親が存在するオブジェクトSQLiのメッセージの総数Xは、例えば、図13に示す中間テーブル1300に記憶される。中間テーブル1300は、例えば、RAM403、磁気ディスク405、光ディスク407などの記憶装置により実現される。ここで、中間テーブル1300について説明する。
【0145】
図13は、中間テーブルの記憶内容の一例を示す説明図である。図13において、中間テーブル1300は、集計期間ID、オブジェクトID、メッセージ数および親有メッセージ数のフィールドを有する。各フィールドに情報を設定することで、中間データ1300−1〜1300−3がレコードとして記憶されている。
【0146】
集計期間IDは、集計期間Tjの識別子である。オブジェクトIDは、プロトコル「SQL」のオブジェクトSQLiの識別子である。メッセージ数は、集計期間TjにおけるオブジェクトSQLiのメッセージの総数Yである。親有メッセージ数は、集計期間Tjにおける親が存在するオブジェクトSQLiのメッセージの総数Xである。
【0147】
中間データ1300−1を例に挙げると、集計期間TxにおけるオブジェクトSQL1のメッセージの総数「Y=6」、および集計期間Tjにおける親が存在するオブジェクトSQL1のメッセージの総数「X=6」が示されている。ここでは、集計期間Txを例に挙げて、中間テーブル1300の記憶内容について説明したが、中間テーブル1300は集計期間T1〜Tmごとに作成される。
【0148】
(第2の算出部706の具体的な処理内容)
つぎに、図14を用いて、集計期間Tjのうち占有期間が占める割合を表す占有率Pjを算出する第2の算出部706の具体的な処理内容について説明する。
【0149】
第2の算出部706は、例えば、下記式(2)を用いて、集計期間Tjのうち占有期間が占める割合を表す占有率Pjを算出する。ただし、Lは、集計期間Tjのうち、プロトコル「IIOP」の1以上のペアのリクエスト時刻からレスポンス時刻までの占有期間(時間長)である。Tjは、集計期間(時間長)である。Pjは、集計期間Tjのうち占有期間Lが占める割合を表す占有率である。
【0150】
Pj=L/Tj ・・・(2)
【0151】
図14は、ネットワークシステム内のメッセージ群の一例を示す説明図(その4)である。図14において、メッセージm19〜m23は、集計期間Tyにおいて、Webサーバ102とAPサーバ103との間で送受信されたプロトコル「IIOP」のメッセージである。また、メッセージm24〜m37は、集計期間TyにおいてAPサーバ103とDBサーバ104との間で送受信されたプロトコル「SQL」のメッセージである。なお、集計期間Tyは、集計期間T1〜Tmのいずれかの集計期間である。
【0152】
ここで、プロトコル「IIOP」のメッセージm19,m21は、メッセージIDが同一のペアp3である。時刻t6は、プロトコル「IIOP」のメッセージm19(リクエスト)の送信時刻である。時刻t8は、プロトコル「IIOP」のメッセージm21(レスポンス)の送信時刻である。
【0153】
また、プロトコル「IIOP」のメッセージm20,m22は、メッセージIDが同一のペアp4である。時刻t7は、プロトコル「IIOP」のメッセージm20(リクエスト)の送信時刻である。時刻t9は、プロトコル「IIOP」のメッセージm22(レスポンス)の送信時刻である。
【0154】
また、プロトコル「IIOP」のメッセージm23,m38は、メッセージIDが同一のペアp5である。時刻t10は、プロトコル「IIOP」のメッセージm23(リクエスト)の送信時刻である。時刻t12は、プロトコル「IIOP」のメッセージm38(レスポンス)の送信時刻である。ただし、メッセージm38(レスポンス)の送信時刻は集計期間Ty外となっている。時刻t11は、集計期間Tyの終期の時刻である。また、メッセージm24〜m37は、プロトコル「SQL」のメッセージである。
【0155】
まず、第2の算出部706は、集計期間Tyにおけるプロトコル「IIOP」の多重度を算出する。具体的には、例えば、第2の算出部706が、集計期間Tyに送信されたプロトコル「IIOP」のメッセージm19〜m23の送信時刻t6〜t10ごとの多重度を時系列に算出する。
【0156】
より具体的には、例えば、第2の算出部706が、集計期間Tyにおいて、リクエストメッセージが送信されるごとに多重度をインクリメントし、リクエストメッセージが送信されるごとに多重度をデクリメントする。ただし、多重度の初期値は「0」である。これにより、メッセージm19〜m23の送信時刻t6〜t10ごとの多重度を算出することができる。
【0157】
図14の例では、まず、第2の算出部706が、送信時刻t6において、リクエストメッセージm19が送信されたため、多重度をインクリメントする。この結果、送信時刻t6の多重度は「1」となる。つぎに、第2の算出部706が、送信時刻t7において、リクエストメッセージm20が送信されたため、多重度をインクリメントする。この結果、送信時刻t7の多重度は「2」となる。
【0158】
つぎに、第2の算出部706が、送信時刻t8において、レスポンスメッセージm21が送信されたため、多重度をデクリメントする。この結果、送信時刻t8の多重度は「1」となる。つぎに、第2の算出部706が、送信時刻t9において、レスポンスメッセージm22が送信されたため、多重度をデクリメントする。この結果、送信時刻t9の多重度は「0」となる。
【0159】
つぎに、第2の算出部706が、送信時刻t10において、リクエストメッセージm23が送信されたため、多重度をインクリメントする。この結果、送信時刻t10の多重度は「1」となる。
【0160】
算出された送信時刻t6〜t10ごとの多重度は、例えば、図15に示す多重度テーブル1500に記憶される。多重度テーブル1500は、例えば、RAM403、磁気ディスク405、光ディスク407などの記憶装置により実現される。ここで、多重度テーブル1500について説明する。
【0161】
図15は、多重度テーブルの記憶内容の一例を示す説明図である。図15において、多重度テーブル1500は、集計期間Tyにおける送信時刻t6〜t10ごとの多重度を記憶している。ここでは、集計期間Tyを例に挙げて、多重度テーブル1500の記憶内容について説明したが、多重度テーブル1500は集計期間T1〜Tmごとに作成される。
【0162】
このあと、第2の算出部706は、例えば、多重度テーブル1500を参照して、集計期間Tyのうち多重度が1以上の期間の合計を求めることにより占有期間Lを算出する。具体的には、例えば、まず、第2の算出部706が、集計期間Tyのうち多重度が1以上の期間L1,L2を算出する。
【0163】
期間L1は、送信時刻t6から送信時刻t9までの期間である。期間L2は、送信時刻t10から送信時刻t11までの期間である。つぎに、第2の算出部706が、集計期間Tyのうち多重度が1以上の期間L1,L2の合計を求めることにより占有期間L(=L1+L2)を算出する。
【0164】
そして、第2の算出部706は、上記式(2)に集計期間Ty(時間長)および占有期間L(時間長)を代入することにより、集計期間Tyのうち占有期間Lが占める割合を表す占有率Pyを算出する。
【0165】
なお、集計期間Tjの終期における多重度は、集計期間Tjに時系列に連続する集計期間(例えば、集計期間T(j+1))に持ち越すことにしてもよい。これにより、プロトコル「IIOP」のリクエストメッセージとレスポンスメッセージのペアが複数の集計期間に跨る場合にも、多重度を適切に算出することができる。
【0166】
(判定部707の具体的な処理内容)
つぎに、図16および図17を用いて、集計期間Tjごとに算出されたオブジェクトSQLiの出現率Ajiおよび占有率Pjに基づいて、オブジェクトSQLiがバッチ処理のオブジェクトか否かを判定する判定部707の具体的な処理内容について説明する。
【0167】
<判定例1>
図16は、バッチ処理のオブジェクトの判定例を示す説明図(その1)である。図16において、集計期間Tjの占有率Pjを表すX軸と、集計期間TjのオブジェクトSQLiの出現率Ajiを表すY軸とからなる座標系1600が示されている。座標系1600において、点f1〜f27は、集計期間Tjごとに算出された占有率PjおよびオブジェクトSQLiの出現率Ajiの組合せを示している。
【0168】
具体的には、点f1〜f9は、集計期間Tjごとに算出された占有率PjおよびオブジェクトSQL1の出現率Aj1の組合せを示している。点f10〜f18は、集計期間Tjごとに算出された占有率PjおよびオブジェクトSQL2の出現率Aj2の組合せを示している。点f19〜f27は、集計期間Tjごとに算出された占有率PjおよびオブジェクトSQL3の出現率Aj3の組合せを示している。
【0169】
より具体的には、例えば、点f1は、集計期間T1〜Tmのいずれかの集計期間Tzの占有率Pzと、集計期間TzのオブジェクトSQL1の出現率Az1の組合せを示している。すなわち、点f1の座標位置は、「(X,Y)=(Pz,Az1)」である。また、点f10は、集計期間Tzの占有率Pzと、集計期間TzのオブジェクトSQL2の出現率Az2の組合せを示している。すなわち、点f10の座標位置は、「(X,Y)=(Pz,Az2)」である。また、点f19は、集計期間Tzの占有率Pzと、集計期間TzのオブジェクトSQL3の出現率Az3の組合せを示している。すなわち、点f19の座標位置は、「(X,Y)=(Pz,Az3)」である。
【0170】
判定部707は、集計期間T1〜Tmのうち占有率が最小となる集計期間Tjの占有率Pjが閾値β以下、かつ、該集計期間TjのオブジェクトSQLiの出現率Ajiが閾値α以下の場合、オブジェクトSQLiがバッチ処理のオブジェクトであると判定する。
【0171】
具体的には、例えば、まず、判定部707が、集計期間T1〜Tmのうち占有率が最小となる集計期間Tjの占有率Pjを特定する。図16の例では、占有率が最小となる集計期間Tzの占有率Pzが特定される。つぎに、判定部707が、占有率が最小となる集計期間Tzの占有率Pzが閾値β以下となるか否かを判断する。
【0172】
ここで、占有率が最小となる集計期間Tzの占有率Pzが閾値βより大きい場合、判定部707が、オブジェクトSQL1,SQL2,SQL3がバッチ処理のオブジェクトではないと判定する。図16の例では、集計期間Tzの占有率Pzが閾値β以下のため、判定部707はつぎの処理に移行する。
【0173】
つぎに、判定部707が、オブジェクトSQLiごとに、集計期間TzのオブジェクトSQLiの出現率Aziが閾値α以下となるか否かを判断する。ここで、オブジェクトSQLiの出現率Aziが閾値α以下の場合、判定部707が、オブジェクトSQLiがバッチ処理のオブジェクトであると判定する。一方、オブジェクトSQLiの出現率Aziが閾値αより大きい場合、判定部707が、オブジェクトSQLiがバッチ処理のオブジェクトではないと判定する。
【0174】
図16の例では、集計期間TzのオブジェクトSQL1の出現率Az1は閾値αより大きい。このため、判定部707が、オブジェクトSQL1がバッチ処理のオブジェクトではないと判定する(点f1に相当)。また、集計期間TzのオブジェクトSQL2の出現率Az2は閾値αより大きい。このため、判定部707が、オブジェクトSQL2がバッチ処理のオブジェクトではないと判定する(点f10に相当)。
【0175】
一方、集計期間TzのオブジェクトSQL3の出現率Az3は閾値α以下である。このため、判定部707が、オブジェクトSQL3がバッチ処理のオブジェクトであると判定する。これにより、プロトコル「SQL」のオブジェクトSQL1,SQL2,SQL3のうち、オブジェクトSQL3がバッチ処理のオブジェクトであると判別することができる。
【0176】
なお、図16において、オブジェクトSQL1は、オンライン処理のみに用いられるオブジェクトである。オブジェクトSQL2は、オンライン処理およびバッチ処理の両方に用いられるオブジェクトである。オブジェクトSQL3は、バッチ処理のみに用いられるオブジェクトである。すなわち、上記判定によれば、オンライン処理およびバッチ処理のオブジェクトが混在するネットワークシステム100において、バッチ処理のみに用いられるオブジェクトSQL3を判別することができる。
【0177】
<判定例2>
図17は、バッチ処理のオブジェクトの判定例を示す説明図(その2)である。図17において、集計期間Tjの占有率Pjを表すX軸と、集計期間TjのオブジェクトSQLiの出現率Ajiを表すY軸とからなる座標系1700が示されている。座標系1700において、点f28〜f42は、集計期間Tjごとに算出された占有率PjおよびオブジェクトSQLiの出現率Ajiの組合せを示している。
【0178】
具体的には、点f28〜f32は、集計期間Tjごとに算出された占有率PjおよびオブジェクトSQL1の出現率Aj1の組合せを示している。点f33〜f37は、集計期間Tjごとに算出された占有率PjおよびオブジェクトSQL2の出現率Aj2の組合せを示している。点f38〜f42は、集計期間Tjごとに算出された占有率PjおよびオブジェクトSQL3の出現率Aj3の組合せを示している。
【0179】
判定部707は、集計期間Tjごとに算出されたオブジェクトSQLiの出現率Ajiおよび占有率Pjに基づいて、座標系1700におけるオブジェクトSQLiの回帰直線Diの傾きaiを算出する。具体的には、例えば、判定部707が、最小二乗法により、集計期間Tjごとに算出されたオブジェクトSQLiの出現率Ajiおよび占有率Pjに基づいて、回帰直線Diの傾きaiを求める。
【0180】
例えば、回帰直線D1を「Y=a1×X+b1」とする。ただし、a1は回帰直線D1の傾き、b1は回帰直線D1の切片である。この場合、判定部707が、最小二乗法により、座標系1700の各点28〜f32と回帰直線D1との距離の2乗を足し合わせた値が最小となる傾きa1および切片b1を算出する。
【0181】
そして、判定部707は、算出したオブジェクトSQLiの回帰直線Diの傾きaiが所定の閾値γ以上か否かを判断する。ここで、回帰直線Diの傾きaiが閾値γ以上の場合、判定部707は、オブジェクトSQLiがバッチ処理のオブジェクトであると判定する。
【0182】
一方、回帰直線Diの傾きaiが閾値γ未満の場合、判定部707は、オブジェクトSQLiがバッチ処理のオブジェクトではないと判定する。閾値γは、予め設定されてROM402、RAM403、磁気ディスク405、光ディスク407などの記憶装置に記憶されている。
【0183】
ここで、オブジェクトSQLiの出現率Ajiが低ければ低いほど、オブジェクトSQLiがバッチ処理のオブジェクトである可能性が高くなる。また、集計期間Tjの占有率Pjが低ければ低いほど、オブジェクトSQLiがバッチ処理のオブジェクトである可能性が高くなる。
【0184】
換言すれば、バッチ処理のオブジェクトSQLiは、占有率Pjが高くなると出現率Ajiが高くなる傾向が強い。このため、バッチ処理のオブジェクトSQLiの回帰直線Diは、オンライン処理のオブジェクトの回帰直線に比べて傾きaiが大きくなる。
【0185】
したがって、上記閾値γを大きい値に設定するほど、バッチ処理のオブジェクトを正確に判定することができる。一方、上記閾値γの値が大きすぎると、バッチ処理のオブジェクトであると判定される基準が厳しくなり、オブジェクトSQLiがバッチ処理のオブジェクトであっても判定されない場合がある。
【0186】
このため、閾値γは、シミュレーションを行うなどして、オブジェクトSQLiの回帰直線Diの傾きaiが閾値γ以上の場合、オブジェクトSQLiがバッチ処理のオブジェクトである可能性が高くなる適切な値(例えば、0.7)に設定される。
【0187】
図17において、回帰直線Dは、傾きが上記閾値γの直線である。図17の例では、オブジェクトSQL1の回帰直線D1の傾きa1は閾値γ未満である。また、オブジェクトSQL2の回帰直線D2の傾きa2は閾値γ未満である。このため、判定部707は、オブジェクトSQL1,SQL2がバッチ処理のオブジェクトではないと判定する。
【0188】
一方、オブジェクトSQL3の回帰直線D3の傾きa3は閾値γ以上である。このため、判定部707は、オブジェクトSQL3がバッチ処理のオブジェクトであると判定する。これにより、プロトコル「SQL」のオブジェクトSQL1,SQL2,SQL3のうち、オブジェクトSQL3がバッチ処理のオブジェクトであると判別することができる。
【0189】
(メッセージの削除例)
つぎに、図18を用いて、ネットワークシステム100内で受け渡されたメッセージ群の中から、バッチ処理のオブジェクトであると判定されたオブジェクトSQLiのメッセージを削除する削除部709の具体的な処理内容について説明する。
【0190】
まず、取得部701は、ネットワークシステム100内で受け渡された処理対象となるメッセージ群を取得する。取得された処理対象となるメッセージ群は、例えば、図18に示す処理対象テーブル1800に記憶される。処理対象テーブル1800は、例えば、RAM403、磁気ディスク405、光ディスク407などの記憶装置により実現される。ここで、処理対象テーブル1800について説明する。
【0191】
図18は、処理対象テーブルの記憶内容の一例を示す説明図である。図18において、処理対象テーブル1800は、メッセージID、タイムスタンプ、プロトコル、メッセージ種別および削除フラグのフィールドを有する。各フィールドに情報を設定することで、処理対象となるメッセージのメッセージデータ1800−1〜1800−12がレコードとして記憶されている。
【0192】
メッセージIDは、ネットワークシステム100内で送受信されたメッセージの識別子である。タイムスタンプは、メッセージの送信時刻である。メッセージ種別は、リクエストメッセージまたはレスポンスメッセージを示す情報である。削除フラグは、削除対象となるメッセージを示すフラグである。ここでは、削除フラグが「1」のメッセージが削除対象となる。削除フラグは、初期状態は「0」である。
【0193】
図18の(18−1)の処理対象テーブル1800において、取得された処理対象となるメッセージ群のメッセージデータ1800−1〜1800−12が記憶されている。なお、図示は省略するが、処理対象テーブル1800には、各メッセージデータ1800−1〜1800−12に対応するメッセージが関連付けられて記憶されている。
【0194】
以下、プロトコル「SQL」のオブジェクトSQL3がバッチ処理のオブジェクトであると判定された場合を例に挙げて説明する。
【0195】
まず、削除部709が、処理対象テーブル1800の中から、プロトコル「SQL」の任意のメッセージデータを選択する。つぎに、削除部709が、選択したメッセージデータのメッセージ種別フィールドに「リクエスト」が設定されているか否かを判断する。ここで、「リクエスト」が設定されている場合、削除部709が、選択したメッセージデータに対応するメッセージからオブジェクトSQLiを抽出する。
【0196】
そして、削除部709が、抽出したオブジェクトSQLiがオブジェクトSQL3か否かを判断する。ここで、オブジェクトSQLiがオブジェクトSQL3の場合、選択したメッセージデータの削除フラグに「1」を設定する。図18の(18−2)の例では、メッセージデータ1800−11の削除フラグに「1」が設定されている。
【0197】
また、選択したメッセージデータのメッセージ種別フィールドに「レスポンス」が設定されている場合、削除部709が、処理対象テーブル1800の中から、選択したメッセージデータと同一メッセージIDのメッセージデータを検索する。ここで、検索された場合、削除部709が、検索したメッセージデータに対応するメッセージからオブジェクトSQLiを抽出する。
【0198】
そして、削除部709が、抽出したオブジェクトSQLiがオブジェクトSQL3か否かを判断する。ここで、オブジェクトSQLiがオブジェクトSQL3の場合、選択したメッセージデータの削除フラグに「1」を設定する。図18の(18−2)の例では、メッセージデータ1800−12の削除フラグに「1」が設定されている。
【0199】
削除部709は、例えば、処理対象テーブル1800の中から選択されていない未選択のメッセージデータがなくなるまで、上述した一連の処理を繰り返す。最後に、削除部709が、処理対象テーブル1800の中から削除フラグに「1」が設定されているメッセージデータを削除する。
【0200】
図18の(18−3)の例では、処理対象テーブル1800の中からメッセージデータ1800−11,1800−12が削除されている。これにより、処理対象となるメッセージ群の中から、バッチ処理のオブジェクトSQLiのメッセージを除去することができる。
【0201】
なお、図18に示した例では、バッチ処理のオブジェクトSQLiのメッセージを削除する場合を例に挙げて説明したが、バッチ処理のオブジェクトSQLiのメッセージを除く残余のメッセージを削除することにしてもよい。これにより、処理対象となるメッセージ群の中からバッチ処理のオブジェクトSQLiのメッセージを抽出することができる。
【0202】
(システム分析支援装置101のシステム分析支援処理手順)
つぎに、実施の形態にかかるシステム分析支援装置101のシステム分析支援処理手順について説明する。
【0203】
図19は、実施の形態にかかるシステム分析支援装置のシステム分析支援処理手順の一例を示すフローチャートである。図19のフローチャートにおいて、まず、取得部701により、ネットワークシステム100内で受け渡されたメッセージ群を取得したか否かを判断する(ステップS1901)。
【0204】
ここで、取得部701により、メッセージ群を取得するのを待つ(ステップS1901:No)。そして、メッセージ群が取得された場合(ステップS1901:Yes)、検出部702により、取得されたメッセージ群の中から、プロトコル「IIOP」のリクエストメッセージとレスポンスメッセージのペアを検出する(ステップS1902)。
【0205】
つぎに、特定部703により、取得されたメッセージ群のうち、プロトコル「SQL」のメッセージのオブジェクトSQLiを特定する(ステップS1903)。このあと、選択部704により、集計期間Tjの「j」を「j=1」とする(ステップS1904)。
【0206】
そして、第1の算出部705により、集計期間TjにおけるオブジェクトSQLiの出現率Ajiを算出する出現率算出処理を実行する(ステップS1905)。つぎに、第2の算出部706により、集計期間Tjのうち占有期間Lが占める割合を表す占有率Pjを算出する占有率算出処理を実行する(ステップS1906)。
【0207】
このあと、選択部704により、集計期間Tjの「j」をインクリメントして(ステップS1907)、「j」が「m」より大きいか否かを判断する(ステップS1908)。ここで、「j」が「m」以下の場合(ステップS1908:No)、ステップS1905に戻る。
【0208】
一方、「j」が「m」より大きい場合(ステップS1908:Yes)、判定部707により、オブジェクトSQLiがバッチ処理のオブジェクトか否かを判定する判定処理を実行する(ステップS1909)。そして、出力部708により、バッチ処理のオブジェクトSQLiをリスト化して示すオブジェクトリスト1000を出力して(ステップS1910)、本フローチャートによる一連の処理を終了する。
【0209】
これにより、プロトコル「SQL」のオブジェクトのうち、バッチ処理のオブジェクトSQLiを判別することができる。
【0210】
<出現率算出処理の具体的な処理手順>
つぎに、図19に示したステップS1905の出現率算出処理の具体的な処理手順について説明する。
【0211】
図20は、ステップS1905の出現率算出処理の具体的な処理手順の一例を示すフローチャートである。図20のフローチャートにおいて、まず、選択部704により、図19に示したステップS1901において取得されたメッセージ群の中から、集計期間Tj内に送信された、オブジェクトSQLiのメッセージの集合を選択する(ステップS2001)。
【0212】
つぎに、第1の算出部705により、選択されたメッセージの集合のオブジェクトSQLiのオブジェクトIDを集計期間Tjの中間テーブル1300に登録する(ステップS2002)。このあと、第1の算出部705により、選択されたメッセージの集合の中から任意のメッセージを選択する(ステップS2003)。
【0213】
そして、第1の算出部705により、中間テーブル1300内のオブジェクトSQLiのメッセージ数をインクリメントする(ステップS2004)。なお、中間テーブル1300内のオブジェクトSQLiのメッセージ数の初期値は「0」である。
【0214】
つぎに、第1の算出部705により、選択されたメッセージに親が存在するか否かを判断する(ステップS2005)。ここで、親が存在しない場合(ステップS2005:No)、ステップS2007に移行する。
【0215】
一方、親が存在する場合(ステップS2005:Yes)、第1の算出部705により、中間テーブル1300内のオブジェクトSQLiの親有メッセージ数をインクリメントする(ステップS2006)。なお、中間テーブル1300内のオブジェクトSQLiの親有メッセージ数の初期値は「0」である。
【0216】
つぎに、第1の算出部705により、ステップS2001において選択されたメッセージの集合の中から選択されていない未選択のメッセージがあるか否かを判断する(ステップS2007)。ここで、未選択のメッセージがある場合(ステップS2007:Yes)、ステップS2003に戻る。
【0217】
一方、未選択のメッセージがない場合(ステップS2007:No)、選択部704により、メッセージ群の中から選択されていない未選択のオブジェクトSQLiのメッセージの集合があるか否かを判断する(ステップS2008)。ここで、未選択のメッセージの集合がある場合(ステップS2008:Yes)、ステップS2001に戻る。
【0218】
一方、未選択のメッセージの集合がない場合(ステップS2008:No)、第1の算出部705により、中間テーブル1300を参照して、オブジェクトSQLiごとの出現率Ajiを算出して(ステップS2009)、図19に示したステップS1906に移行する。なお、算出されたオブジェクトSQLiごとの出現率Ajiは、図9に示した出現率/占有率テーブル900に記憶される。
【0219】
これにより、集計期間TjにおけるオブジェクトSQLiごとの出現率Ajiを算出することができる。
【0220】
<占有率算出処理の具体的な処理手順>
つぎに、図19に示したステップS1906の占有率算出処理の具体的な処理手順について説明する。
【0221】
図21は、ステップS1906の占有率算出処理の具体的な処理手順の一例を示すフローチャートである。図21のフローチャートにおいて、まず、第2の算出部706により、図19に示したステップS1901において取得されたメッセージ群の中から、集計期間Tj内に送信された、プロトコル「IIOP」のメッセージの集合を抽出する(ステップS2101)。
【0222】
つぎに、第2の算出部706により、抽出したメッセージの集合の中から、送信時刻が最古の未選択のメッセージを選択する(ステップS2102)。そして、第2の算出部706により、選択したメッセージのメッセージ種別が「リクエスト」であるか否かを判断する(ステップS2103)。
【0223】
ここで、メッセージ種別が「リクエスト」の場合(ステップS2103:Yes)、第2の算出部706により、集計期間Tjの多重度をインクリメントして(ステップS2104)、ステップS2106に移行する。なお、集計期間Tjの多重度の初期値は「0」である。
【0224】
一方、メッセージ種別が「レスポンス」の場合(ステップS2103:No)、第2の算出部706により、集計期間Tjの多重度をデクリメントする(ステップS2105)。そして、第2の算出部706により、集計期間Tjの多重度、および、選択したメッセージの送信時刻を、集計期間Tjの多重度テーブル1500に登録する(ステップS2106)。
【0225】
このあと、第2の算出部706により、ステップS2101において抽出したメッセージの集合の中から選択されていない未選択のメッセージがあるか否かを判断する(ステップS2107)。ここで、未選択のメッセージがある場合(ステップS2107:Yes)、ステップS2102に戻る。
【0226】
一方、未選択のメッセージがない場合(ステップS2107:No)、第2の算出部706により、多重度テーブル1500を参照して、集計期間Tjのうち多重度が1以上の期間の合計を求めることにより占有期間Lを算出する(ステップS2108)。
【0227】
そして、第2の算出部706により、上記式(2)に集計期間Tjおよび占有期間Lを代入することで、集計期間Tjの占有率Pjを算出して(ステップS2109)、図19に示したステップS1907に移行する。
【0228】
これにより、集計期間Tjの占有率Pjを算出することができる。なお、上述した説明では、集計期間Tjの多重度の初期値を「0」としたが、集計期間T(j−1)の終期における多重度を集計期間Tjの多重度の初期値としてもよい。
【0229】
<判定処理の具体的な処理手順(その1)>
つぎに、図19に示したステップS1909の判定処理の具体的な処理手順について説明する。ここでは、まず、上述した<判定例1>に対応する判定処理の具体的な処理手順について説明する。
【0230】
図22は、ステップS1909の判定処理の具体的な処理手順の一例を示すフローチャート(その1)である。図22のフローチャートにおいて、まず、判定部707により、出現率/占有率テーブル900を参照して、集計期間T1〜Tmのうち占有率が最小となる集計期間Tjの占有率Pjを特定する(ステップS2201)。
【0231】
このあと、判定部707により、特定した集計期間Tjの占有率Pjが閾値β以下となるか否かを判断する(ステップS2202)。ここで、占有率Pjが閾値β以下の場合(ステップS2202:Yes)、判定部707により、出現率/占有率テーブル900を参照して、集計期間Tjの任意のオブジェクトSQLiを選択する(ステップS2203)。
【0232】
このあと、判定部707により、出現率/占有率テーブル900を参照して、選択したオブジェクトSQLiの出現率Aziが閾値α以下となるか否かを判断する(ステップS2204)。ここで、出現率Aziが閾値αより大きい場合(ステップS2204:No)、ステップS2207に移行する。
【0233】
一方、出現率Aziが閾値α以下の場合(ステップS2204:Yes)、判定部707により、選択したオブジェクトSQLiがバッチ処理のオブジェクトであると判定する(ステップS2205)。そして、判定部707により、オブジェクトリスト1000に、バッチ処理のオブジェクトであると判定されたオブジェクトSQLiのオブジェクトIDを登録する(ステップS2206)。
【0234】
このあと、判定部707により、出現率/占有率テーブル900を参照して、選択されていない未選択のオブジェクトSQLiがあるか否かを判断する(ステップS2207)。ここで、未選択のオブジェクトSQLiがある場合(ステップS2207:Yes)、ステップS2203に戻る。一方、未選択のオブジェクトSQLiがない場合(ステップS2207:No)、図19に示したステップS1910に移行する。
【0235】
また、ステップS2202において、占有率Pjが閾値βより大きい場合(ステップS2202:No)、判定部707により、すべてのオブジェクトSQLiがバッチ処理のオブジェクトではないと判定して(ステップS2208)、図19に示したステップS1910に移行する。
【0236】
これにより、閾値αおよび閾値βを、バッチ処理のオブジェクトである可能性が高くなる任意の値にそれぞれ設定して、バッチ処理のオブジェクトの判定を行うことができる。
【0237】
<判定処理の具体的な処理手順(その2)>
つぎに、上述した<判定例2>に対応する判定処理の具体的な処理手順について説明する。
【0238】
図23は、ステップS1909の判定処理の具体的な処理手順の一例を示すフローチャート(その2)である。図23のフローチャートにおいて、まず、判定部707により、出現率/占有率テーブル900を参照して、任意のオブジェクトSQLiを選択する(ステップS2301)。
【0239】
このあと、判定部707により、出現率/占有率テーブル900を参照して、選択したオブジェクトSQLiの回帰直線Diの傾きaiを算出する(ステップS2302)。そして、判定部707により、算出した回帰直線Diの傾きaiが閾値γ以上か否かを判断する(ステップS2303)。
【0240】
ここで、回帰直線Diの傾きaiが閾値γ以上の場合(ステップS2303:Yes)、判定部707により、オブジェクトSQLiがバッチ処理のオブジェクトであると判定する(ステップS2304)。そして、判定部707により、オブジェクトリスト1000に、バッチ処理のオブジェクトであると判定されたオブジェクトSQLiのオブジェクトIDを登録する(ステップS2305)。
【0241】
このあと、判定部707により、出現率/占有率テーブル900を参照して、選択されていない未選択のオブジェクトSQLiがあるか否かを判断する(ステップS2306)。ここで、未選択のオブジェクトSQLiがある場合(ステップS2306:Yes)、ステップS2301に戻る。一方、未選択のオブジェクトSQLiがない場合(ステップS2306:No)、図19に示したステップS1910に移行する。
【0242】
また、ステップS2303において、回帰直線Diの傾きaiが閾値γ未満の場合(ステップS2303:No)、判定部707により、オブジェクトSQLiがバッチ処理のオブジェクトではないと判定して(ステップS2307)、ステップS2306に移行する。
【0243】
これにより、プロトコル「SQL」のオブジェクトのうち、集計期間Tjの占有率Pjの増加に伴って出現率Ajiが増加する傾向が大きいオブジェクトSQLiをバッチ処理のオブジェクトとして判定することができる。
【0244】
<メッセージ削除処理手順>
つぎに、バッチ処理のオブジェクトであると判定されたオブジェクトSQLiのメッセージを削除する削除処理の具体的な処理手順について説明する。
【0245】
図24は、メッセージ削除処理の具体的な処理手順の一例を示すフローチャートである。図24のフローチャートにおいて、まず、取得部701により、ネットワークシステム100内で受け渡された処理対象となるメッセージ群を取得したか否かを判断する(ステップS2401)。
【0246】
ここで、処理対象となるメッセージ群を取得するのを待って(ステップS2401:No)、取得した場合(ステップS2401:Yes)、取得部701により、取得したメッセージ群を処理対象テーブル1800に登録する(ステップS2402)。
【0247】
つぎに、削除部709により、処理対象テーブル1800の中から、プロトコル「SQL」の任意のメッセージデータを選択する(ステップS2403)。そして、削除部709により、選択したメッセージデータのメッセージ種別フィールドに「リクエスト」が設定されているか否かを判断する(ステップS2404)。
【0248】
ここで、メッセージ種別フィールドに「レスポンス」が設定されている場合(ステップS2404:No)、削除部709により、処理対象テーブル1800の中から、選択したメッセージデータと同一メッセージIDのメッセージデータを検索する(ステップS2405)。
【0249】
ここで、メッセージデータが検索された場合(ステップS2406:Yes)、削除部709により、検索したメッセージデータに対応するメッセージからオブジェクトSQLiを抽出する(ステップS2407)。一方、メッセージデータが検索されなかった場合(ステップS2406:No)、ステップS2410に移行する。
【0250】
また、ステップS2404において、メッセージ種別フィールドに「リクエスト」が設定されている場合(ステップS2404:Yes)、削除部709により、ステップS2403において選択したメッセージデータに対応するメッセージからオブジェクトSQLiを抽出する(ステップS2407)。
【0251】
このあと、削除部709により、抽出したオブジェクトSQLiのオブジェクトIDがオブジェクトリスト1000に含まれるか否かを判断する(ステップS2408)。ここで、オブジェクトリスト1000に含まれない場合(ステップS2408:No)、ステップS2410に移行する。
【0252】
一方、オブジェクトリスト1000に含まれる場合(ステップS2408:Yes)、削除部709により、ステップS2403において選択したメッセージデータの処理対象テーブル1800内の削除フラグを「0」から「1」に変更する(ステップS2409)。そして、削除部709により、処理対象テーブル1800の中から選択されていない未選択のプロトコル「SQL」のメッセージデータがあるか否かを判断する(ステップS2410)。
【0253】
ここで、未選択のメッセージデータがある場合(ステップS2410:Yes)、ステップS2403に戻る。一方、未選択のメッセージデータがない場合(ステップS2410:No)、削除部709により、処理対象となるメッセージ群の中から、処理対象テーブル1800内の削除フラグが「1」のメッセージデータに対応するメッセージを削除する(ステップS2411)。
【0254】
そして、出力部708により、処理対象となるメッセージ群の中から削除フラグが「1」のメッセージデータに対応するメッセージが削除された削除後のメッセージ群を出力して(ステップS2412)、本フローチャートによる一連の処理を終了する。
【0255】
これにより、ネットワークシステム100のシステム分析を行う際に、処理対象となるメッセージ群の中からバッチ処理のオブジェクトSQLiのメッセージを除去することができる。
【0256】
以上説明したように、本実施の形態にかかるシステム分析支援装置101によれば、集計期間TjにおけるオブジェクトSQLiの出現率Ajiおよび占有率Pjに基づいて、オブジェクトSQLiがバッチ処理のオブジェクトか否かを判定することができる。これにより、ネットワークシステム100内で受け渡されたメッセージ群の中から、バッチ処理のオブジェクトSQLiのメッセージを判別することができる。
【0257】
また、システム分析支援装置101によれば、集計期間TjにおけるオブジェクトSQLiの出現率Ajiが閾値α以下かつ占有率Pjが閾値β以下の場合、オブジェクトSQLiがバッチ処理のオブジェクトであると判定することができる。これにより、閾値αおよび閾値βを、バッチ処理のオブジェクトである可能性が高くなる任意の値にそれぞれ設定して、バッチ処理のオブジェクトの判定を行うことができる。
【0258】
また、システム分析支援装置101によれば、集計期間Tjごとに算出されたオブジェクトSQLiの出現率Ajiおよび占有率Pjに基づいて、オブジェクトSQLiがバッチ処理のオブジェクトか否かを判定することができる。これにより、オブジェクトSQLiがバッチ処理のオブジェクトか否かの判定を統計的に行って、判定精度を向上させることができる。
【0259】
また、システム分析支援装置101によれば、集計期間T1〜Tmのうち占有率が最小となる集計期間Tjの占有率Pjが閾値β以下、かつ、オブジェクトSQLiの出現率Ajiが閾値α以下の場合、オブジェクトSQLiがバッチ処理のオブジェクトであると判定することができる。
【0260】
また、システム分析支援装置101によれば、集計期間TjごとのオブジェクトSQLiの出現率Ajiおよび占有率Pjに基づく回帰直線Diの傾きaiに基づいて、オブジェクトSQLiがバッチ処理のオブジェクトか否かを判定することができる。これにより、プロトコル「SQL」のオブジェクトのうち、集計期間Tjの占有率Pjの増加に伴って出現率Ajiが増加する傾向が大きいオブジェクトSQLiをバッチ処理のオブジェクトとして判定することができる。
【0261】
また、システム分析支援装置101によれば、ネットワークシステム100内で受け渡されたメッセージ群の中から、バッチ処理のオブジェクトであると判定されたオブジェクトSQLiのメッセージを削除することができる。これにより、ネットワークシステム100のシステム分析を行う際に、処理対象となるメッセージ群の中からバッチ処理のオブジェクトSQLiのメッセージを除去することができる。この結果、ネットワークシステム100内の各コンピュータの処理時間を精度よく求めることができ、システム分析の分析精度を向上させることができる。
【0262】
なお、本実施の形態で説明したシステム分析支援方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本システム分析支援プログラムは、ハードディスク、フレキシブルディスク、CD−ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、本システム分析支援プログラムは、インターネット等のネットワークを介して配布してもよい。
【符号の説明】
【0263】
100 ネットワークシステム
101 システム分析支援装置
102 Webサーバ
103 APサーバ
104 DBサーバ
500 メッセージDB
701 取得部
702 検出部
703 特定部
704 選択部
705 第1の算出部
706 第2の算出部
707 判定部
708 出力部
709 削除部
800 ペア情報テーブル
900 出現率/占有率テーブル
1000 オブジェクトリスト
1300 中間テーブル
1500 多重度テーブル
1800 処理対象テーブル

【特許請求の範囲】
【請求項1】
プロトコルの階層構造が定義されたシステム内で受け渡されたメッセージ群の中から、前記システム内のデータベースを操作するためのプロトコルの直上層のプロトコルのリクエストとレスポンスのペアを検出する検出工程と、
前記メッセージ群の中から、所定期間内に送信された、前記データベースに対する所定の操作に関するメッセージの集合を選択する選択工程と、
前記選択工程によって選択されたメッセージの集合のうち、前記検出工程によって検出された1以上のペアのリクエスト時刻とレスポンス時刻の間に送信されたメッセージの割合を表す第1の指標値を算出する第1の算出工程と、
前記所定期間のうち、前記1以上のペアのリクエスト時刻からレスポンス時刻までの期間が占める割合を表す第2の指標値を算出する第2の算出工程と、
前記第1および第2の算出工程によって算出された第1および第2の指標値に基づいて、前記所定の操作がバッチ処理の操作か否かを判定する判定工程と、
前記判定工程によって判定された判定結果を出力する出力工程と、
をコンピュータに実行させることを特徴とするシステム分析支援プログラム。
【請求項2】
前記判定工程は、
前記第1の指標値が第1の閾値以下かつ前記第2の指標値が第2の閾値以下の場合、前記所定の操作がバッチ処理の操作であると判定することを特徴とする請求項1に記載のシステム分析支援プログラム。
【請求項3】
前記選択工程は、
複数の所定期間の各々の所定期間ごとに、前記メッセージ群の中から、前記各々の所定期間内に送信された、前記データベースに対する所定の操作に関するメッセージの集合を選択し、
前記第1の算出工程は、
前記各々の所定期間ごとに、前記各々の所定期間ごとに選択された前記メッセージの集合のうち、前記1以上のペアのリクエスト時刻とレスポンス時刻の間に送信されたメッセージの割合を表す第1の指標値を算出し、
前記第2の算出工程は、
前記各々の所定期間ごとに、前記各々の所定期間のうち、前記1以上のペアのリクエスト時刻からレスポンス時刻までの期間が占める割合を表す第2の指標値を算出し、
前記判定工程は、
前記各々の所定期間ごとに算出された第1および第2の指標値に基づいて、前記所定の操作がバッチ処理の操作か否かを判定することを特徴とする請求項1または2に記載のシステム分析支援プログラム。
【請求項4】
前記判定工程は、
前記複数の所定期間のうち前記第2の指標値が最小となる所定期間の前記第2の指標値が前記第2の閾値以下、かつ、前記第2の指標値が最小となる所定期間の前記第1の指標値が前記第1の閾値以下の場合、前記所定の操作がバッチ処理の操作であると判定することを特徴とする請求項3に記載のシステム分析支援プログラム。
【請求項5】
前記コンピュータに、
前記各々の所定期間ごとに算出された第1および第2の指標値に基づいて、前記第1の指標値を表す軸と前記第2の指標値を表す軸とからなる座標系における回帰直線の傾きを算出する第3の算出工程を実行させ、
前記判定工程は、
前記第3の算出工程によって算出された前記回帰直線の傾きが第3の閾値以上の場合、前記所定の操作がバッチ処理の操作であると判定することを特徴とする請求項3に記載のシステム分析支援プログラム。
【請求項6】
前記コンピュータに、
前記判定工程によって前記所定の操作がバッチ処理の操作であると判定された場合、前記メッセージ群の中から、前記所定の操作に関するメッセージを削除する削除工程と、
前記削除工程によって前記所定の操作に関するメッセージが削除された削除後の前記メッセージ群を出力するメッセージ出力工程と、
を実行させることを特徴とする請求項1〜5のいずれか一つに記載のシステム分析支援プログラム。
【請求項7】
プロトコルの階層構造が定義されたシステム内で受け渡されたメッセージ群の中から、前記システム内のデータベースを操作するためのプロトコルの直上層のプロトコルのリクエストとレスポンスのペアを検出する検出部と、
前記メッセージ群の中から、所定期間内に送信された、前記データベースに対する所定の操作に関するメッセージの集合を選択する選択部と、
前記選択部によって選択されたメッセージの集合のうち、前記検出部によって検出された1以上のペアのリクエスト時刻とレスポンス時刻の間に送信されたメッセージの割合を表す第1の指標値を算出する第1の算出部と、
前記所定期間のうち、前記1以上のペアのリクエスト時刻からレスポンス時刻までの期間が占める割合を表す第2の指標値を算出する第2の算出部と、
前記第1および第2の算出部によって算出された第1および第2の指標値に基づいて、前記所定の操作がバッチ処理の操作か否かを判定する判定部と、
前記判定部によって判定された判定結果を出力する出力部と、
を備えることを特徴とするシステム分析支援装置。
【請求項8】
コンピュータが、
プロトコルの階層構造が定義されたシステム内で受け渡されたメッセージ群の中から、前記システム内のデータベースを操作するためのプロトコルの直上層のプロトコルのリクエストとレスポンスのペアを検出し、
前記メッセージ群の中から、所定期間内に送信された、前記データベースに対する所定の操作に関するメッセージの集合を選択し、
選択したメッセージの集合のうち、検出した1以上のペアのリクエスト時刻とレスポンス時刻の間に送信されたメッセージの割合を表す第1の指標値を算出し、
前記所定期間のうち、前記1以上のペアのリクエスト時刻からレスポンス時刻までの期間が占める割合を表す第2の指標値を算出し、
算出した第1および第2の指標値に基づいて、前記所定の操作がバッチ処理の操作か否かを判定し、
判定した判定結果を出力する、
処理を実行することを特徴とするシステム分析支援方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24】
image rotate