(57)【要約】【課題】リクエストの頻度と多重度との関係が正しい負荷を用いて監視システムの性能を測定する。【解決手段】事前処理の後（Ｓ１）、情報システムから監視システムへと流れ込むメッセージを時間ΔＴバッファリングした結果から、リクエストの平均実行時間、第１の頻度及び第１の多重度（現状負荷）を確認する（Ｓ２）。また、バッファリングしたメッセージを監視システムに送出したときの第２の頻度を測定する（Ｓ３）。そして、現状負荷から規定される関係を参照して第２の頻度に対応する第２の多重度を求め、第１の多重度に対する第２の多重度の比率で規定される回数、メッセージを時間ΔＴだけバッファリングしたものをインターリーブして負荷の多重度を調整する（Ｓ４）。その後、負荷を監視システムに送出したときの頻度に対応する多重度が収束するまで、ステップ３及び４の処理を繰り返す。【選択図】図５
2010277333.tif 000002
【特許請求の範囲】
【請求項１】
リクエストの実行に伴って複数のメッセージを発行する情報システムと、該情報システムで発行されたメッセージをオンラインで処理する監視システムと、の間に介在するコンピュータに、
前記情報システムから監視システムへと流れ込むメッセージをバッファに所定時間バッファリングし、該メッセージのバッファリング結果からリクエストの平均実行時間，第１の頻度及び第１の多重度の間にある相互関係を求めるステップと、
前記バッファリングしたメッセージを監視システムに送出した送出時間及びリクエスト数に基づいて第２の頻度を求め、前記相互関係に基づいて第２の頻度に対応する第２の多重度を求めるステップと、
前記第１の多重度と第２の多重度との差分が所定値以下となるまで、前記第１の多重度に対する第２の多重度の比率で規定されるバッファリング回数だけ、前記情報システムから監視システムへと流れ込むメッセージをバッファに所定時間バッファリングし、該バッファリングした各メッセージ群をインターリーブした負荷を生成すると共に、前記第１の多重度に第２の多重度を代入する一方、前記負荷を監視システムに送出した送出時間及びリクエスト数に基づいて第２の頻度を更新し、前記相互関係に基づいて第２の頻度に対応する第２の多重度を更新する処理を繰り返すステップと、
を実現させるための監視システムの性能測定プログラム。
【請求項２】
前記第１の多重度と第２の多重度との差分が所定値以下となるまで処理を繰り返すステップは、前記バッファリング回数が実数のとき、該実数以上の最小整数をバッファリング回数としてメッセージをバッファリングすると共に、乱数を利用して前記負荷から間引くリクエストを決定し、前記負荷に含まれるリクエストのうち間引き対象となるリクエスト以外のリクエストに関するメッセージを監視システムに送出することを特徴とする請求項１記載の監視システムの性能測定プログラム。
【請求項３】
前記間引き対象となったリクエストに関するメッセージは、前記第２の多重度が更新された後、前記監視システムに送出されることを特徴とする請求項２記載の監視システムの性能測定プログラム。
【請求項４】
リクエストの実行に伴って複数のメッセージを発行する情報システムと、該情報システムで発行されたメッセージをオンラインで処理する監視システムと、の間に介在するコンピュータが、
前記情報システムから監視システムへと流れ込むメッセージをバッファに所定時間バッファリングし、該メッセージのバッファリング結果からリクエストの平均実行時間，第１の頻度及び第１の多重度の間にある相互関係を求めるステップと、
前記バッファリングしたメッセージを監視システムに送出した送出時間及びリクエスト数に基づいて第２の頻度を求め、前記相互関係に基づいて第２の頻度に対応する第２の多重度を求めるステップと、
前記第１の多重度と第２の多重度との差分が所定値以下となるまで、前記第１の多重度に対する第２の多重度の比率で規定されるバッファリング回数だけ、前記情報システムから監視システムへと流れ込むメッセージをバッファに所定時間バッファリングし、該バッファリングした各メッセージ群をインターリーブした負荷を生成すると共に、前記第１の多重度に第２の多重度を代入する一方、前記負荷を監視システムに送出した送出時間及びリクエスト数に基づいて第２の頻度を更新し、前記相互関係に基づいて第２の頻度に対応する第２の多重度を更新する処理を繰り返すステップと、
を実行することを特徴とする監視システムの性能測定方法。
【請求項５】
リクエストの実行に伴って複数のメッセージを発行する情報システムから該情報システムで発行されたメッセージをオンラインで処理する監視システムへと流れ込むメッセージを所定時間バッファリングし、該メッセージのバッファリング結果からリクエストの平均実行時間，第１の頻度及び第１の多重度の間にある相互関係を求める手段と、
前記バッファリングしたメッセージを監視システムに送出した送出時間及びリクエスト数に基づいて第２の頻度を求め、前記相互関係に基づいて第２の頻度に対応する第２の多重度を求める手段と、
前記第１の多重度と第２の多重度との差分が所定値以下となるまで、前記第１の多重度に対する第２の多重度の比率で規定されるバッファリング回数だけ、前記情報システムから監視システムへと流れ込むメッセージを所定時間バッファリングし、該バッファリングした各メッセージ群をインターリーブした負荷を生成すると共に、前記第１の多重度に第２の多重度を代入する一方、前記負荷を監視システムに送出した送出時間及びリクエスト数に基づいて第２の頻度を更新し、前記相互関係に基づいて第２の頻度に対応する第２の多重度を更新する処理を繰り返す手段と、
を含むことを特徴とする監視システムの性能測定装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、監視システムの性能を測定する技術に関する。
【背景技術】
【０００２】
情報システムの統計情報抽出，ボトルネック解析などを目的として、情報システムで発生するメッセージをオンラインで順次処理し、リクエストを監視する監視システムが実用化されている。監視システムは、監視対象たる情報システムが最大負荷で作動しているときであっても、メッセージをオンラインで順次処理できる性能を有していなければならない。そこで、情報システムで発生するメッセージを一旦バッファリングし、バッファリングしたメッセージを一気に監視システムに出力することで、監視システムに負荷をかけて性能を測定する技術が提案されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平６−８３５７８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、監視システムは、仕掛かり中のリクエスト数が上昇すると、ＣＰＵ（Central Processing Unit），メモリなどのリソース消費量が増加するという特性を有している。しかしながら、従来提案技術では、メッセージ発生時間を考慮せずにメッセージがバッファに順次格納されるため、単位時間あたりのリクエスト数を表す「頻度」が上昇するが、リクエスト実行時間の重なり程度を表す「多重度」が変化しないという問題があった。このため、従来提案技術では、頻度と多重度との関係が正確でない負荷が用いられていたことから、監視システムの性能を精度良く測定することが困難であった。
【０００５】
そこで、本提案技術は従来の問題点に鑑み、リクエストの頻度と多重度との関係が正しい負荷を用いて、監視システムの性能を測定できるようにした技術を提供することを目的とする。
【課題を解決するための手段】
【０００６】
このため、本提案技術は、情報システムから監視システムへと流れ込むメッセージを所定時間バッファリングした結果から、リクエストの平均実行時間，第１の頻度及び第１の多重度との間にある相互関係を求める。また、本提案技術は、バッファリングしたメッセージを監視システムに送出した送出時間及びリクエスト数に基づいて第２の頻度を求め、相互関係に基づいて第２の頻度に対応する第２の多重度を求める。そして、本提案技術は、第１の多重度と第２の多重度との差分が所定値以下となるまで、以下の処理（１）〜（３）を繰り返す。
【０００７】
（１）第１の多重度に対する第２の多重度の比率で規定されるバッファリング回数だけ、情報システムから監視システムへと流れ込むメッセージを所定時間バッファリングすると共に、バッファリングした各メッセージ群をインターリーブした負荷を生成する。
【０００８】
（２）第１の多重度に第２の多重度を代入する。
（３）負荷を監視システムに送出した送出時間及びリクエスト数に基づいて第２の頻度を更新すると共に、相互関係に基づいて第２の頻度に対応する第２の多重度を更新する。
【発明の効果】
【０００９】
本提案技術によれば、情報システムから監視システムへと流れ込むメッセージは、リクエストの頻度と多重度との関係が正しくなるように調整されるので、監視システムの性能を精度良く測定することができる。また、本提案技術によれば、実際のメッセージを利用して監視システムの性能が測定されるため、例えば、情報システムのハードウエア又はソフトウエアの変更に伴うリクエスト負荷の変化にも対応することができる。
【図面の簡単な説明】
【００１０】
【図１】情報システムで実行されるリクエストの説明図である。
【図２】リクエストの頻度と多重度との関係図である。
【図３】性能測定装置の一例を示すシステム構成図である。
【図４】性能測定装置における各種機能の一例を示す機能ブロック図である。
【図５】監視システムの性能測定手順の概要図である。
【図６】コントロールモジュールの性能測定処理のフローチャートである。
【図７】バッファリングモジュールのバッファリング処理のフローチャートである。
【図８】リクエスト認識モジュールの現状負荷算出処理のフローチャートである。
【図９】現状負荷算出手順の説明図である。
【図１０】バッファリングモジュールの頻度測定処理のフローチャートである。
【図１１】バッファリングモジュールの多重度調整処理のフローチャートである。
【図１２】メッセージ群のインターリーブ方法の説明図である。
【図１３】バッファリングモジュールの間引き処理のフローチャートである。
【図１４】リクエスト認識モジュールの紐付け処理のフローチャートである。
【図１５】多重度Ｎの負荷生成方法の説明図である。
【図１６】多重度１．５の負荷生成方法の説明図である。
【図１７】多重度の収束状態の説明図である。
【発明を実施するための形態】
【００１１】
以下、添付された図面を参照して本提案技術を詳述する。
最初に、リクエストの頻度と多重度との関係について考察する。
情報システムにおいて、図１に示すように、時間ΔＴ[秒]の間にリクエスト１〜リクエストＮ（Ｎ：自然数）が実行されたと仮定する。この場合、リクエストの頻度Ｆ[リクエスト/秒]は、Ｆ＝Ｎ／ΔＴとなる。また、リクエストｎの実行時間を「time(n)」で表すと、リクエストの多重度Ｍは、次式のようになる。
【００１２】
【数１】
2010277333.tif 000003
【００１３】
リクエストの頻度Ｆと多重度Ｍとの関係式を、変換定数Ｒを用いて、Ｍ＝Ｒ×Ｆと表し、この関係式に頻度Ｆ及び多重度Ｍの具体的数値を代入して整理すると、次式のようになる。
【００１４】
【数２】
2010277333.tif 000004
【００１５】
この式を参照すると、変換定数Ｒは、時間ΔＴの間に実行されたリクエスト１〜リクエストＮの平均実行時間[秒/リクエスト]であると理解できる。従って、所定時間の間に実行されたリクエストの平均実行時間を求めれば、図２に示すように、多重度Ｍ＝平均実行時間Ｒ×頻度Ｆという関係から、リクエストの頻度Ｆに対応した多重度Ｍを演算可能であることが理解できる。
【００１６】
次に、本提案技術の一実施形態について説明する。
図３は、本提案技術を具現化した性能測定装置の一例を示す。
情報システムの一例としての業務システム１０は、コンピュータを用いて構築される性能測定装置２０を介して、監視システム３０に接続される。業務システム１０は、ユーザからのリクエストを実行するときに、リクエストメッセージで始まりレスポンスメッセージで終わる複数のメッセージからなるメッセージ群４０を発行する。メッセージ群４０の各メッセージは、発行元たるリクエスト，リクエストメッセージ及びレスポンスメッセージを特定可能とすべく、リクエストに関する属性値を含む。性能測定装置２０は、業務システム１０で発行されたメッセージを取り込み、監視システム３０の性能を測定するための負荷を生成し、この負荷を監視システム３０に一気に送出して性能を測定する。監視システム３０は、業務システム１０で発行されたリクエストを監視し、例えば、業務システム１０の統計情報抽出，ボトルネック解析などを行う。
【００１７】
性能測定装置２０は、コンピュータ読取可能な記録媒体からハードディスクなどのストレージにインストールされた性能測定プログラムを実行することで、コントロールモジュール２２，バッファリングモジュール２４及びリクエスト認識モジュール２６を具現化する。
【００１８】
コントロールモジュール２２は、性能測定装置２０の全体を制御し、具体的には、図４に示すように、バッファリングモジュール２４及びリクエスト認識モジュール２６を制御するコントロール部２２Ａを含む。
【００１９】
バッファリングモジュール２４は、業務システム１０から監視システム３０へと流れ込むメッセージのバッファリング，リクエストの頻度測定，目標多重度の負荷生成及び負荷出力などを行う。バッファリングモジュール２４は、具体的には、図４に示すように、バッファ２４Ａ，バッファリング部２４Ｂ，負荷生成部２４Ｃ，負荷送出部２４Ｄ及び性能測定部２４Ｅを含む。バッファ２４Ａは、例えば、メモリ又はファイルからなり、メッセージなどを一時的に保存する。バッファリング部２４Ｂは、業務システム１０で発行されたメッセージを受信すると、そのメッセージをバッファ２４Ａに受信順に保存する。負荷生成部２４Ｃは、バッファ２４Ａに保存されたメッセージを利用して、目標多重度の負荷を生成する。負荷送出部２４Ｄは、負荷生成部２４Ｃにより生成された負荷を監視システム３０に一気に送出する。性能測定部２４Ｅは、負荷送出部２４Ｄにより送出される負荷、即ち、リクエストの送出速度を監視することで、監視システム３０の性能を測定する。
【００２０】
なお、コントロールモジュール２２により制御されるバッファリングモジュール２４は、第２の頻度に対応する第２の多重度を求めるステップ及び手段、並びに、第１の多重度と第２の多重度との差分が所定値以下となるまで処理を繰り返すステップ及び手段として機能する。
【００２１】
リクエスト認識モジュール２６は、バッファリングモジュール２４によりバッファリングされたメッセージをリクエストごとに紐付け、現状負荷として、リクエストの平均実行時間Ｒ，頻度Ｆ0及び多重度Ｍ0を算出する。リクエスト認識モジュール２６は、具体的には、図４に示すように、紐付け部２６Ａ及び現状負荷算出部２６Ｂを含む。紐付け部２６Ａは、バッファリングモジュール２４のバッファ２４Ａに保存されたメッセージを、リクエストごとに紐付ける。現状負荷算出部２６Ｂは、紐付け部２６Ａにより紐付けられたリクエストの現状負荷、即ち、平均実行時間Ｒ，頻度Ｆ0及び多重度Ｍ0を算出する。ここで、紐付け部２６Ａによるメッセージの紐付け処理は、例えば、本出願人が提案した特願２００８−２０７８８９などで説明されている方式が適用できる。
【００２２】
なお、コントロールモジュール２２により制御されるリクエスト認識モジュール２６は、リクエストの平均実行時間，第１の頻度及び第１の多重度の間にある相関関係を求めるステップ及び手段として機能する。
【００２３】
図５は、監視システム３０の性能測定手順の概要を示す。
ステップ１（図では「Ｓ１」と略記する。以下同様。）において、性能測定装置２０を利用して監視システム３０の性能を測定しようとする操作者が、例えば、経験などからメッセージをバッファリングする時間ΔＴを決定する。また、操作者が、業務システム１０で発行されたメッセージが性能測定装置２０を経由して監視システム３０に流れ込むように、メッセージの流れを変更する。そして、操作者が、時間ΔＴを引数として、性能測定装置２０のコントロールモジュール２２に対して性能測定指令を送信する。
【００２４】
ステップ２では、性能測定装置２０のコントロールモジュール２２，バッファリングモジュール２４及びリクエスト認識モジュール２６が協働して、業務システム１０で実行されたリクエストの現状負荷（平均実行時間Ｒ，頻度Ｆ0及び多重度Ｍ0）を確認する。即ち、各モジュールが協働して、業務システム１０から監視システム３０へと流れ込むメッセージをバッファ２４Ａに保存し、そのメッセージをリクエストごとに紐付けすることで、リクエストの現状負荷を求める。
【００２５】
ステップ３では、性能測定装置２０のコントロールモジュール２２及びバッファリングモジュール２４が協働して、バッファ２４Ａに保存されたメッセージを監視システム３０に送出したときのリクエストの頻度Ｆiを測定する。
【００２６】
ステップ４では、性能測定装置２０のコントロールモジュール２２，バッファリングモジュール２４及びリクエスト認識モジュール２６が協働して、監視システム３０に送出する負荷の多重度を調整する。なお、コントロールモジュール２２は、多重度が目標多重度に収束したならば性能測定を終了させる一方、多重度が目標多重度に収束しなければ処理をステップ３へと戻す。
【００２７】
図６は、コントロールモジュール２２が、性能測定指令を受信したことを契機として実行する性能測定処理を示す。
ステップ１１では、コントロール部２２Ａが、業務システム１０で実行されているリクエストの現状負荷を確認すべく、バッファリングモジュール２４に現状負荷確認要求を送信する。
【００２８】
ステップ１２では、コントロール部２２Ａが、現状負荷として、リクエストの平均実行時間Ｒ，頻度Ｆ0及び多重度Ｍ0を受信したか否かを判定する。そして、コントロール部２２Ａが、現状負荷を受信したと判定すれば処理をステップ１３へと進める一方（Ｙｅｓ）、現状負荷を受信していないと判定すれば受信判定処理を繰り返す（Ｎｏ）。
【００２９】
ステップ１３では、コントロール部２２Ａが、現状多重度Ｍiに多重度Ｍ0を代入（設定）する。
ステップ１４では、コントロール部２２Ａが、性能測定装置２０から監視システム３０に送出されるリクエストの頻度Ｆiを測定すべく、バッファリングモジュール２４に頻度測定要求を送信する。
【００３０】
ステップ１５では、コントロール部２２Ａが、頻度Ｆiを受信したか否かを判定する。そして、コントロール部２２Ａが、頻度Ｆiを受信したと判定すれば処理をステップ１６へと進める一方（Ｙｅｓ）、頻度Ｆiを受信していないと判定すれば受信判定処理を繰り返す（Ｎｏ）。
【００３１】
ステップ１６では、コントロール部２２Ａが、多重度Ｍ＝平均実行時間Ｒ×頻度Ｆという関係式を用いて、頻度Ｆiに対応する目標多重度Ｍjを算出する（Ｍj＝Ｒ×Ｆi）。
ステップ１７では、コントロール部２２Ａが、現状多重度Ｍiと目標多重度Ｍjとの差の絶対値（差分）が所定値εより大きいか否かを判定する。ここで、所定値εは、現状多重度Ｍiが目標多重度Ｍjを中心とした所定範囲に収束したか否かを判定するための閾値であって、例えば、コンピュータの処理能力，演算精度などを考慮して決定される。そして、コントロール部２２Ａが、現状多重度Ｍiと目標多重度Ｍjとの差の絶対値が所定値εより大きいと判定すれば処理をステップ１８へと進める一方（Ｙｅｓ）、現状多重度Ｍiと目標多重度Ｍjとの差の絶対値が所定値ε以下であると判定すれば処理をステップ２１へと進める（Ｎｏ）。
【００３２】
ステップ１８では、コントロール部２２Ａが、負荷の多重度を目標多重度Ｍjに近づけるべく、バッファリングモジュール２４に多重度調整要求を送信する。
ステップ１９では、コントロール部２２Ａが、多重度調整完了通知を受信したか否かを判定する。そして、コントロール部２２Ａが、多重度調整完了通知を受信したと判定すれば処理をステップ２０へと進める一方（Ｙｅｓ）、多重度調整完了通知を受信していないと判定すれば受信判定処理を繰り返す（Ｎｏ）。
【００３３】
ステップ２０では、コントロール部２２Ａが、現状多重度Ｍiに目標多重度Ｍjを代入（設定）し、処理をステップ１４へと戻す。
ステップ２１では、コントロール部２２Ａが、現状多重度Ｍiが目標多重度Ｍiを中心とした所定範囲に収束したので、監視システム３０の最大性能値として頻度Ｆiを出力する。
【００３４】
図７は、バッファリングモジュール２４が、現状負荷確認要求を受信したことを契機として実行するバッファリング処理を示す。
ステップ３１では、バッファリング部２４Ｂが、業務システム１０から監視システム３０へと流れ込むメッセージにタイムスタンプを付加しつつ、そのメッセージをバッファ２４Ａに順次保存する。
【００３５】
ステップ３２では、バッファリング部２４Ｂが、メッセージのバッファリングを開始後時間ΔＴ経過したか否かを判定する。そして、バッファリング部２４Ｂが、バッファリング開始後時間ΔＴ経過したと判定すれば処理をステップ３３へと進める一方（Ｙｅｓ）、バッファリング開始後時間ΔＴ経過していないと判定すれば処理をステップ３１へと戻す（Ｎｏ）。
【００３６】
ステップ３３では、バッファリング部２４Ｂが、バッファリングが完了したことを通知すべく、リクエスト認識モジュール２６にバッファリングしたメッセージ（バッファリングメッセージ）を一括送信する。
【００３７】
図８は、リクエスト認識モジュール２６が、バッファリングメッセージを受信したことを契機として実行する現状負荷算出処理を示す。
ステップ４１では、紐付け部２６Ａが、バッファリングメッセージに含まれる各メッセージをリクエストごとに紐付け、リクエストを特定するための識別子を各メッセージに付加する。
【００３８】
ステップ４２では、現状負荷算出部２６Ｂが、現状負荷としてのリクエストの平均実行時間Ｒ，頻度Ｆ0及び多重度Ｍ0を算出する。即ち、現状負荷算出部２６Ｂは、ステップ４１で紐付けられたリクエスト数Ｎを求めると共に、各リクエストのリクエストメッセージ及びレスポンスメッセージのタイムスタンプを参照して、各リクエストの実行時間を求める。また、現状負荷算出部２６Ｂは、各リクエストの実行時間を積算した積算値をリクエスト数Ｎで除算することで、リクエストの平均実行時間Ｒを求めると共に、リクエスト数Ｎを時間ΔＴで除算することで、頻度Ｆ0を求める。そして、現状負荷算出部２６Ｂは、多重度Ｍ＝平均実行時間Ｒ×頻度Ｆという関係式を利用して、頻度Ｆ0に対応した多重度Ｍ0を求める。
【００３９】
ステップ４３では、現状負荷算出部２６Ｂが、コントロールモジュール２２に現状負荷（平均実行時間Ｒ，頻度Ｆ0及び多重度Ｍ0）を送信する。
かかるバッファリング処理及び現状負荷算出処理によれば、図９に示すように、業務システム１０から監視システム３０へと流れ込むメッセージは、時間ΔＴの間、タイムスタンプ（t11〜t24）を付加されつつバッファ２４Ａに順次保存される。メッセージの保存が完了すると、バッファリングメッセージに含まれるメッセージは、リクエストごとに紐付けられる。そして、メッセージの紐付け結果から、リクエストの現状負荷として、平均実行時間Ｒ，頻度Ｆ0及び多重度Ｍ0が求められる。従って、これ以降の処理では、多重度Ｍ＝平均実行時間Ｒ×頻度Ｆという関係式を利用して、頻度に対応した多重度を演算することができるようになる。
【００４０】
図１０は、バッファリングモジュール２４が、頻度測定要求を受信したことを契機として実行する頻度測定処理を示す。
ステップ５１では、性能測定部２４Ｅが、バッファ２４Ａに保存されているメッセージを監視システム３０に送出するのに要した送信時間ΔＴ’の測定を開始する。
【００４１】
ステップ５２では、性能測定部２４Ｅが、バッファ２４Ａに未処理のメッセージが残っているか否かを判定する。そして、性能測定部２４Ｅが、未処理のメッセージが残っていると判定すれば処理をステップ５３へと進める一方（Ｙｅｓ）、未処理のメッセージが残っていないと判定すれば処理をステップ５６へと進める（Ｎｏ）。
【００４２】
ステップ５３では、性能測定部２４Ｅが、メッセージに付加されている識別子を参照し、監視システム３０に送出するリクエスト数Ｎ’を計数する。
ステップ５４では、性能測定部２４Ｅが、後述する処理によりメッセージに付加された間引フラグを参照し、監視システム３０に送出しようとするメッセージが間引き対象外であるか否かを判定する。そして、性能測定部２４Ｅが、メッセージが間引き対象外であると判定すれば処理をステップ５５へと進める一方（Ｙｅｓ）、メッセージが間引き対象外でないと判定すれば処理をステップ５２へと戻す（Ｎｏ）。
【００４３】
ステップ５５では、負荷送出部２４Ｄが、監視システム３０にメッセージを送出する。その後、性能測定部２４Ｅが、処理をステップ５２へと戻す。
ステップ５６では、性能測定部２４Ｅが、送信時間ΔＴ’の測定を停止する。
【００４４】
ステップ５７では、性能測定部２４Ｅが、頻度Ｆi＝リクエスト数Ｎ’／送信時間ΔＴ’という式を利用して、リクエストの頻度Ｆiを算出する。
ステップ５８では、負荷送出部２４Ｄが、監視システム３０に間引いたメッセージを送出する。
【００４５】
ステップ５９では、性能測定部２４Ｅが、コントロールモジュール２２に頻度Ｆiを送信する。
かかる頻度測定処理によれば、バッファ２４Ａに保存される複数のメッセージのうち、間引フラグが付加されていないメッセージを監視システム３０に送出するのに要した時間ΔＴ’が測定される。また、バッファ２４Ａに保存される各メッセージの識別子が順次参照され、監視システム３０に送出するリクエスト数Ｎ’が計数される。そして、リクエスト数Ｎ’を時間ΔＴ’で除算することで、リクエストの頻度Ｆiが算出される。一方、間引フラグが付加されているメッセージは、頻度Ｆiの測定完了後、監視システム３０で処理されるべく、監視システム３０へと送出される。
【００４６】
図１１は、バッファリングモジュール２４が、多重度調整要求を受信したことを契機として実行する多重度調整処理を示す。
ステップ６１では、負荷生成部２４Ｃが、目標多重度Ｍjに対応した負荷を生成するためにメッセージをバッファリングする回数Ｎを算出する。即ち、負荷生成部２４Ｃは、現状多重度Ｍiに対する目標多重度Ｍjの比率（Ｍj／Ｍi）以上となる最小整数を求め、これをバッファリング回数Ｎとする。
【００４７】
ステップ６２では、バッファリング部２４Ｂが、時間ΔＴの間、業務システム１０から監視システム３０へと流れ込むメッセージをバッファ２４Ａに順次保存する。
ステップ６３では、負荷生成部２４Ｃが、メッセージのバッファリングをＮ回実行したか否かを判定する。そして、負荷生成部２４Ｃが、バッファリングをＮ回実行したと判定すれば処理をステップ６４へと進める一方（Ｙｅｓ）、バッファリングをＮ回実行していないと判定すれば処理をステップ６２へと戻す（Ｎｏ）。
【００４８】
ステップ６４では、負荷生成部２４Ｃが、バッファリングしたＮ個のメッセージ群をインターリーブする。即ち、負荷生成部２４Ｃが、図１２に示すように、バッファリングを２回実行した場合には、バッファ２４Ａに保存された２つメッセージ群４０からメッセージを順番に取り出して並べることで、多重度２の負荷を生成する。
【００４９】
ステップ６５では、負荷生成部２４Ｃが、リクエスト認識モジュール２６にメッセージの紐付け要求を送信する。
ステップ６６では、負荷生成部２４Ｃが、紐付け完了通知を受信したか否かを判定する。そして、負荷生成部２４Ｃが、紐付け完了通知を受信したと判定すれば処理をステップ６７へと進める一方（Ｙｅｓ）、紐付け完了通知を受信していないと判定すれば受信判定処理を繰り返す（Ｎｏ）。
【００５０】
ステップ６７では、負荷生成部２４Ｃが、現状多重度Ｍiに対する目標多重度Ｍjの比率（Ｍj／Ｍi）が実数であるか否かを判定する。そして、負荷生成部２４Ｃが、比率が実数であると判定すれば処理をステップ６８へと進める一方（Ｙｅｓ）、比率が実数でないと判定すれば処理をステップ６９へと進める（Ｎｏ）。
【００５１】
ステップ６８では、負荷生成部２４Ｃが、多重度Ｎの負荷から間引くリクエストを決定する間引き処理のサブルーチンをコールする。
ステップ６９では、負荷生成部２４Ｃが、コントロールモジュール２２に多重度調整完了通知を送信する。
【００５２】
図１３は、バッファリングモジュール２４が実行する間引き処理を示す。
ステップ７１では、負荷生成部２４Ｃが、リクエストごとに紐付けが行われた多重度Ｎの負荷から、１つのリクエストを順番に選択する。
【００５３】
ステップ７２では、負荷生成部２４Ｃが、Ｎまでの範囲で乱数を生成する。
ステップ７３では、負荷生成部２４Ｃが、現状多重度Ｍiを目標多重度Ｍjで除算した除算値（Ｍi／Ｍj）が乱数値より大きいか否かを判定する。そして、負荷生成部２４Ｃが、除算値が乱数値より大きいと判定すれば処理をステップ７４へと進める一方（Ｙｅｓ）、除算値が乱数値以下であると判定すれば処理をステップ７５へと進める（Ｎｏ）。
【００５４】
ステップ７４では、負荷生成部２４Ｃが、ステップ７１で選択したリクエストの各メッセージに間引き対象であることを示す間引フラグを付加する。
ステップ７５では、負荷生成部２４Ｃが、負荷に含まれるすべてのリクエストを処理したか否かを判定する。そして、負荷生成部２４Ｃが、すべてのリクエストを処理したと判定すれば処理をメインルーチンに戻す一方（Ｙｅｓ）、すべてのリクエストを処理していないと判定すれば処理をステップ７１へと戻す（Ｎｏ）。
【００５５】
図１４は、リクエスト認識モジュール２６が、メッセージの紐付け要求を受信したことを契機として実行する紐付け処理を示す。
ステップ７１では、紐付け部２６Ａが、多重度Ｎの負荷に含まれる各メッセージをリクエストごとに紐付け、リクエストを特定するための識別子を各メッセージに付加する。
【００５６】
ステップ７２では、紐付け部２６Ａが、バッファリングモジュール２４に紐付け完了通知を送信する。
かかる多重度調整処理，間引き処理及び紐付け処理によれば、現状多重度Ｍiに対する目標多重度Ｍjの比率（Ｍj／Ｍi）以上となる整数が求められ、これがバッファリング回数Ｎとされる。業務システム１０から監視システム３０へと流れ込むメッセージがバッファリング回数Ｎだけ繰り返してバッファリングされ、図１５に示すように、Ｎ個のメッセージ群４０がインターリーブされて多重度Ｎの負荷が生成される。また、多重度Ｎの負荷に含まれるメッセージがリクエストごとに紐付けされると共に、現状多重度Ｍiに対する目標多重度の比率が実数であれば、乱数を利用して間引き対象となるメッセージが決定される。
【００５７】
ここで、多重度調整方法を数式を使用して説明する。
メッセージを時間ΔＴの間バッファリングした結果、リクエストの平均実行時間Ｒ，リクエスト数Ｎ，多重度Ｍ0が求められたとすると、これらの間には、次式のような関係が成り立つ。
【００５８】
【数３】
2010277333.tif 000005
【００５９】
バッファリングしたメッセージを監視システム３０に一気に送出すると、リクエストの頻度が上昇するため、監視システム３０が処理するリクエストの平均実行時間Ｒ’が平均実行時間Ｒよりも小さくなる（Ｒ’＜Ｒ）。このため、リクエストの送出時間をΔＴ’（ΔＴ’＜ΔＴ）とすると、次式のような関係が成り立つ。例えば、Ｒ’＝Ｒ／２となった場合、ΔＴ’＝ΔＴ／２となるので、Ｍ0＝Ｒ・Ｎ／ΔＴ＝Ｒ’・Ｎ／ΔＴ’となる。
【００６０】
【数４】
2010277333.tif 000006
【００６１】
そこで、目標多重度Ｍjは多重度Ｍ0のＸ倍であると仮定すると、目標多重度Ｍjは次式で表すことができる。
【００６２】
【数５】
2010277333.tif 000007
【００６３】
つまり、現状多重度のメッセージをＸ回バッファリングしてインターリーブすることで、リクエスト数Ｎ’＝Ｘ・Ｎ、リクエストの平均実行時間Ｒ’＝Ｘ・Ｒ、送出時間ΔＴ’＝Ｘ・ΔＴとなるため、結果として、多重度×Ｘのデータを生成することができることが理解できる。
【００６４】
以上説明した性能測定装置２０によれば、メッセージを時間ΔＴだけバッファリングした結果に基づいて、現状負荷としてのリクエストの平均実行時間Ｒ，頻度Ｆ0及び多重度Ｍ0が求められる。また、バッファリングメッセージを監視システム３０に実際に送出した結果に基づいて、リクエストの頻度Ｆiが求められる。そして、現状多重度Ｍiがリクエストの頻度Ｆiに対応した目標多重度Ｍjに近づくように、所定回数だけバッファリングしたメッセージ群をインターリーブして負荷を生成し、その負荷を監視システム３０に一気に送出して性能が測定される。
【００６５】
このとき、現状多重度Ｍiに対する目標多重度Ｍjの比率（Ｍj／Ｍi）が実数、即ち、Ｘが実数であれば、次のようにして、乱数を用いて負荷に含まれるリクエストが間引きされる。例えば、多重度×１．５の負荷を生成する場合には、図１６に示すように、２つのリクエストを含む２つのメッセージ群４０をインターリーブして多重度×２の負荷が生成された後、所定規則に則って決定された１つのリクエスト（例えば、リクエスト３）が間引かれる。
【００６６】
そして、現状多重度Ｍiと目標多重度Ｍjとの差の絶対値が所定値ε以下となるまで、頻度Ｆiの測定及び多重度の調整が繰り返される。即ち、図１７に示すように、メッセージのバッファリング結果から求められた頻度Ｆiに対応する目標多重度Ｍjが、現状多重度Ｍiを中心とした所定範囲内に収束するまで処理が繰り返される。
【００６７】
従って、業務システム１０から監視システム３０へと流れ込むメッセージは、性能測定装置２０によりリクエストの頻度と多重度との関係が正しくなるように調整されるので、監視システム３０の性能を精度良く測定することができる。また、実際のメッセージを利用して監視システム３０の性能が測定されるため、例えば、業務システム１０のハードウエア又はソフトウエアの変更に伴うリクエスト負荷の変化にも対応することができる。
【００６８】
以上の実施形態に関し、更に以下の付記を開示する。
【００６９】
（付記１）リクエストの実行に伴って複数のメッセージを発行する情報システムと、該情報システムで発行されたメッセージをオンラインで処理する監視システムと、の間に介在するコンピュータに、前記情報システムから監視システムへと流れ込むメッセージをバッファに所定時間バッファリングし、該メッセージのバッファリング結果からリクエストの平均実行時間，第１の頻度及び第１の多重度の間にある相互関係を求めるステップと、前記バッファリングしたメッセージを監視システムに送出した送出時間及びリクエスト数に基づいて第２の頻度を求め、前記相互関係に基づいて第２の頻度に対応する第２の多重度を求めるステップと、前記第１の多重度と第２の多重度との差分が所定値以下となるまで、前記第１の多重度に対する第２の多重度の比率で規定されるバッファリング回数だけ、前記情報システムから監視システムへと流れ込むメッセージをバッファに所定時間バッファリングし、該バッファリングした各メッセージ群をインターリーブした負荷を生成すると共に、前記第１の多重度に第２の多重度を代入する一方、前記負荷を監視システムに送出した送出時間及びリクエスト数に基づいて第２の頻度を更新し、前記相互関係に基づいて第２の頻度に対応する第２の多重度を更新する処理を繰り返すステップと、を実現させるための監視システムの性能測定プログラム。
【００７０】
（付記２）前記第１の多重度と第２の多重度との差分が所定値以下となるまで処理を繰り返すステップは、前記バッファリング回数が実数のとき、該実数以上の最小整数をバッファリング回数としてメッセージをバッファリングすると共に、乱数を利用して前記負荷から間引くリクエストを決定し、前記負荷に含まれるリクエストのうち間引き対象となるリクエスト以外のリクエストに関するメッセージを監視システムに送出することを特徴とする付記１記載の監視システムの性能測定プログラム。
【００７１】
（付記３）前記間引き対象となったリクエストに関するメッセージは、前記第２の多重度が更新された後、前記監視システムに送出されることを特徴とする付記２記載の監視システムの性能測定プログラム。
【００７２】
（付記４）前記相互関係は、多重度＝平均実行時間×頻度という関係式で表されることを特徴とする付記１〜付記３のいずれか１つに記載の監視システムの性能測定プログラム。
【００７３】
（付記５）前記リクエストは、前記バッファリングされたメッセージを紐付けすることで特定されることを特徴とする付記１〜付記４のいずれか１つに記載の監視システムの性能測定プログラム。
【００７４】
（付記６）リクエストの実行に伴って複数のメッセージを発行する情報システムと、該情報システムで発行されたメッセージをオンラインで処理する監視システムと、の間に介在するコンピュータが、前記情報システムから監視システムへと流れ込むメッセージをバッファに所定時間バッファリングし、該メッセージのバッファリング結果からリクエストの平均実行時間，第１の頻度及び第１の多重度の間にある相互関係を求めるステップと、前記バッファリングしたメッセージを監視システムに送出した送出時間及びリクエスト数に基づいて第２の頻度を求め、前記相互関係に基づいて第２の頻度に対応する第２の多重度を求めるステップと、前記第１の多重度と第２の多重度との差分が所定値以下となるまで、前記第１の多重度に対する第２の多重度の比率で規定されるバッファリング回数だけ、前記情報システムから監視システムへと流れ込むメッセージをバッファに所定時間バッファリングし、該バッファリングした各メッセージ群をインターリーブした負荷を生成すると共に、前記第１の多重度に第２の多重度を代入する一方、前記負荷を監視システムに送出した送出時間及びリクエスト数に基づいて第２の頻度を更新し、前記相互関係に基づいて第２の頻度に対応する第２の多重度を更新する処理を繰り返すステップと、を実行することを特徴とする監視システムの性能測定方法。
【００７５】
（付記７）リクエストの実行に伴って複数のメッセージを発行する情報システムから該情報システムで発行されたメッセージをオンラインで処理する監視システムへと流れ込むメッセージを所定時間バッファリングし、該メッセージのバッファリング結果からリクエストの平均実行時間，第１の頻度及び第１の多重度の間にある相互関係を求める手段と、前記バッファリングしたメッセージを監視システムに送出した送出時間及びリクエスト数に基づいて第２の頻度を求め、前記相互関係に基づいて第２の頻度に対応する第２の多重度を求める手段と、前記第１の多重度と第２の多重度との差分が所定値以下となるまで、前記第１の多重度に対する第２の多重度の比率で規定されるバッファリング回数だけ、前記情報システムから監視システムへと流れ込むメッセージを所定時間バッファリングし、該バッファリングした各メッセージ群をインターリーブした負荷を生成すると共に、前記第１の多重度に第２の多重度を代入する一方、前記負荷を監視システムに送出した送出時間及びリクエスト数に基づいて第２の頻度を更新し、前記相互関係に基づいて第２の頻度に対応する第２の多重度を更新する処理を繰り返す手段と、を含むことを特徴とする監視システムの性能測定装置。
【符号の説明】
【００７６】
１０    業務システム
２０    性能測定装置
２２    コントロールモジュール
２２Ａ  コントロール部
２４    バッファリングモジュール
２４Ａ  バッファ
２４Ｂ  バッファリング部
２４Ｃ  負荷生成部
２４Ｄ  負荷送出部
２４Ｅ  性能測定部
２６    リクエスト認識モジュール
２６Ａ  紐付け部
２６Ｂ  現状負荷算出部
３０    監視システム
４０    メッセージ群
【図１】
2010277333.tif 000008
【図２】
2010277333.tif 000009
【図３】
2010277333.tif 000010
【図４】
2010277333.tif 000011
【図５】
2010277333.tif 000012
【図６】
2010277333.tif 000013
【図７】
2010277333.tif 000014
【図８】
2010277333.tif 000015
【図９】
2010277333.tif 000016
【図１０】
2010277333.tif 000017
【図１１】
2010277333.tif 000018
【図１２】
2010277333.tif 000019
【図１３】
2010277333.tif 000020
【図１４】
2010277333.tif 000021
【図１５】
2010277333.tif 000022
【図１６】
2010277333.tif 000023
【図１７】
2010277333.tif 000024