JPWO2006046297A1 - 分析方法及び装置 - Google Patents

分析方法及び装置 Download PDF

Info

Publication number
JPWO2006046297A1
JPWO2006046297A1 JP2006542174A JP2006542174A JPWO2006046297A1 JP WO2006046297 A1 JPWO2006046297 A1 JP WO2006046297A1 JP 2006542174 A JP2006542174 A JP 2006542174A JP 2006542174 A JP2006542174 A JP 2006542174A JP WO2006046297 A1 JPWO2006046297 A1 JP WO2006046297A1
Authority
JP
Japan
Prior art keywords
delay time
server
storage unit
average
stored
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2006542174A
Other languages
English (en)
Other versions
JP4180638B2 (ja
Inventor
菊池 慎司
慎司 菊池
横山 乾
乾 横山
明 竹山
明 竹山
健一 島▲崎▼
健一 島▲崎▼
高光 前田
高光 前田
宏司 石橋
宏司 石橋
正哉 進藤
正哉 進藤
光太郎 津呂
光太郎 津呂
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of JPWO2006046297A1 publication Critical patent/JPWO2006046297A1/ja
Application granted granted Critical
Publication of JP4180638B2 publication Critical patent/JP4180638B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0805Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability
    • H04L43/0817Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability by checking functioning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • G06F11/3419Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment by assessing time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3447Performance evaluation by modeling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0852Delays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • G06F11/3419Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment by assessing time
    • G06F11/3423Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment by assessing time where the assessed time is active or idle time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/86Event-based monitoring

Abstract

本発明は、複数のサーバを含むコンピュータ・システムのレスポンスに関する分析を行う分析方法であり、まず上記コンピュータ・システムから複数のサーバの各々のCPU使用率のデータを取得し、CPU使用率格納部に格納する。そして、上記コンピュータ・システムにおいて生成される処理履歴データを取得し、当該コンピュータ・システムのユーザによるリクエスト頻度のデータを生成し、リクエスト頻度データ格納部に格納する。そして、CPU使用率格納部に格納された各サーバのCPU使用率とリクエスト頻度格納部に格納されたリクエスト頻度とを用いて、各サーバにおける平均遅延時間を推定し、サーバ遅延時間格納部に格納する。このようにすることで分析対象のコンピュータ・システムを変更したり、余分なコストをかけずに分析を行うことができる。

Description

本発明は、コンピュータ・システムのレスポンスに関する分析技術に関する。
ネットワークサービスの発展に伴い、サービスを提供するためのシステムが複雑、大規模化してきている。多くのサービスが多数のサーバを組み合わせて提供されるようになってきている。このようなシステムにおいては、それぞれのサーバのリソースの利用状況がユーザのレスポンスにどのような影響を与えているかを把握することが非常に困難になってきている。
従来、複数のサーバからなるシステムにおいて、それぞれのサーバにおける遅延が、ユーザが体感するレスポンスタイムに対してどのくらいの割合を占めるかを調査するには下記の2つの方法が知られていた。すなわち、(1)各サーバ間で送受信するメッセージに認識用の特別なタグを付けておき、そのタグを用いて遅延を計測するものである。(2)各サーバ間で送受信されるメッセージをパケットキャプチャにより採取し、その情報を解析するものである。
しかし、(1)の方法では、既存のシステムやサービスに変更を加えなければならず、本機能の導入は容易ではない。また、(2)の方法では、パケットキャプチャのための高価な機器や大容量のストレージが必要である。さらに、セキュリティの観点からもパケットキャプチャは好まれない。
また、特開2004−21756号公報には、情報システム上で動作する一つまたは複数のアプリケーションについて、種々の利用状況下での各アプリケーションの応答性能を、限られた実験回数で効果的に評価する技術が開示されている。より具体的には、アプリケーションの種々の利用状況に対応した負荷投入実験を複数回行う際、アプリケーションの利用状況に関する数量と、アプリケーションの応答性能に関する数量と、ハードウェア・リソースの利用状況に関する数量と、ハードウェア・リソースの応答性能に関する数量を取得し、数量間の依存関係を記述する推定式群を作成する事により、推定式群を用いたアプリケーションの応答性能の評価を可能にするものである。しかし、この技術は「実験」が必要であり、通常の処理を行いながら分析を行うことはできない。
特開2004−21756号公報
従って、本発明の目的は、分析対象(以下監視対象とも呼ぶ)のコンピュータ・システムから容易に取得できる情報を用いて当該コンピュータ・システムのレスポンスに関する分析を実施するための技術を提供するものである。
本発明に係る分析方法は、複数のサーバを含むコンピュータ・システムのレスポンスに関する分析を行う分析方法であって、上記コンピュータ・システムから上記複数のサーバの各々のCPU使用率のデータを取得し、CPU使用率格納部に格納するステップと、上記コンピュータ・システムにおいて生成される処理履歴データを取得し、上記コンピュータ・システムのユーザによるリクエスト頻度のデータを生成し、リクエスト頻度データ格納部に格納するステップと、CPU使用率格納部に格納された各サーバのCPU使用率とリクエスト頻度格納部に格納されたリクエスト頻度とを用いて、各サーバにおける平均遅延時間を推定し、サーバ遅延時間格納部に格納する推定ステップとを含む。
このように、CPU使用率及び処理履歴データといった容易に取得できるデータを用いて処理を行うため、導入コストを軽減し、セキュリティ面でも問題を生じさせずに分析処理を実施することができる。
さらに、上で述べた推定ステップが、CPU使用率格納部に格納された各サーバのCPU使用率とリクエスト頻度格納部に格納されたリクエスト頻度とを用いて、各サーバの1リクエストあたりの平均消費CPU時間を推定し、消費CPU時間格納部に格納する消費CPU時間推定ステップと、消費CPU時間格納部に格納された各サーバの1リクエストあたりの平均消費CPU時間とCPU使用率格納部に格納された各サーバのCPU使用率とを用いて、各サーバにおける平均遅延時間を推定し、サーバ遅延時間格納部に格納するサーバ遅延時間推定ステップとを含むようにしてもよい。
また、上で述べた消費CPU時間推定ステップにおいて、予め指定された時間帯における各サーバのCPU使用率とリクエスト頻度とを用いて回帰分析を実施することにより、各サーバの1リクエストあたりの平均消費CPU時間を推定するようにしてもよい。このように予め指定された時間帯に限定することにより、ユーザによるリクエストをあまり処理していない時間帯を除外することができ、計算精度を向上させることができるようになる。
さらに、上で述べたサーバ遅延時間推定ステップにおいて、サーバの1リクエストあたりの平均消費CPU時間と当該サーバにおける平均遅延時間との関係を表す係数値を当該係数値を決定する要素であるCPU使用率の所定単位毎及びCPU個数毎に格納するマトリクス格納部を参照して該当する係数値を読み出し、当該係数値と上記サーバの1リクエストあたりの平均消費CPU時間とから上記サーバにおける平均遅延時間を算出するようにしてもよい。上記係数値はCPU使用率とCPU個数の関数となっているので、都度計算することも可能であるが、実際的には計算量が増加するため、処理速度を上げるため上で述べたようにマトリクス格納部に格納しておく場合もある。
また、上記コンピュータ・システムに含まれる複数のサーバが、実行する業務種別に応じてカテゴリ分けされている場合、当該カテゴリ毎に平均遅延時間を推定するステップをさらに含むようにしても良い。例えば層(レイヤ:Layer)が規定されているようなコンピュータでは、当該層をカテゴリとして層毎の平均遅延時間を算出することもある。例えば、業務毎に問題点を抽出するためである。
さらに、サーバ遅延時間格納部に格納されたデータを用いて、コンピュータ・システム全体の平均遅延時間を推定し、システム遅延時間格納部に格納するステップをさらに含むようにしてもよい。
また、上記コンピュータ・システムにおける、ユーザによるリクエストに対するレスポンス時間の平均実測値を取得し、平均実測値格納部に格納するステップと、平均実測値格納部に格納された平均実測値とシステム遅延時間格納部に格納された上記コンピュータ・システム全体の平均遅延時間との差により、サーバ以外の箇所で発生した遅延時間を推定するステップとをさらに含むようにしてもよい。サーバ以外の箇所で発生した遅延時間がコンピュータ・システム全体の平均遅延時間より短い場合には、何らかの理由により推定が不適切であり、そのような場合を検出することも可能となる。
さらに、カテゴリ毎に、平均消費CPU時間の総和とリクエスト頻度との相関係数を算出し、当該相関係数に基づきカテゴリ毎の平均遅延時間の信頼度を決定し、信頼度データ格納部に格納するステップと、信頼度データ格納部に格納されたカテゴリ毎の平均遅延時間の信頼度に基づき、カテゴリ毎の平均遅延時間を補正し、記憶装置に格納する補正ステップとをさらに含むようにしてもよい。例えば信頼度が高い平均遅延時間をそのまま使用し、信頼度が低い平均遅延時間については補正を大きく加えるようにする。
さらに、上で述べた補正ステップが、カテゴリ毎の平均遅延時間を信頼度の高い順にソートするステップと、信頼度の高い順に前記カテゴリ毎の平均遅延時間を累積してゆき、累積された平均遅延時間が遅延実測値未満であって最大の値を有することとなる信頼度の順番を特定するステップと、特定された信頼度の順番の次の順番の遅延時間を、遅延実測値と信頼度の高い順にカテゴリ毎の平均遅延時間を特定された信頼度の順番まで累積することにより得られる値との差に補正するステップとを含むようにしてもよい。
また、リクエスト頻度が例えば試験的に変更された場合、当該変更後のリクエスト頻度に応じて各サーバのCPU使用率を変更し、記憶装置に格納するステップと、記憶装置に格納された変更後の各サーバのCPU使用率を用いて、各サーバにおける平均遅延時間を推定し、記憶装置に格納するステップと、サーバ遅延時間格納部及び記憶装置に格納された変更前後の各サーバの平均遅延時間を比較可能な態様で出力するステップとをさらに含むようにしてもよい。リクエスト頻度の変動に対して遅延時間がどのように変化するかを知ることができる。
また、CPU数が例えば試験的に変更された場合、当該変更後のCPU数に応じて各前記サーバのCPU使用率を変更し、記憶装置に格納するステップと、記憶装置に格納された変更後の各サーバのCPU使用率と変更後のCPU数とを用いて、各サーバにおける平均遅延時間を推定し、記憶装置に格納するステップと、サーバ遅延時間格納部及び記憶装置に格納された変更前後の各サーバの平均遅延時間を比較可能な態様で出力するステップとをさらに含むようにしてもよい。CPU数を例えば増加させた場合に遅延時間がどの程度減少するか試すことができ、その効果から投資の是非を判断できるようになる。
また、サーバ数が変更された場合、当該変更後のサーバ数に応じて各サーバの1リクエストあたりの平均消費CPU時間を算出し、記憶装置に格納するステップと、CPU個数と記憶装置に格納された変更後の各サーバの1リクエストあたりの平均消費CPU時間とを用いて、変更後における各サーバのCPU使用率を算出し、記憶装置に格納するステップと、記憶装置に格納された変更後の各サーバの1リクエストあたりの平均消費CPU時間と変更後における各サーバのCPU使用率とを用いて、変更後における各サーバの平均遅延時間を推定し、記憶装置に格納するステップとをさらに含むようにしてもよい。サーバ数を例えば増加させた場合に遅延時間がどの程度減少するかを試すことができ、その効果から投資の是非を判断できるようになる。
さらに、記憶装置に格納された変更後における各サーバの平均遅延時間と変更後のサーバ数とを用いて、コンピュータ・システムに含まれる複数のサーバを実行する業務種別に応じて分けることにより規定されるカテゴリ毎の平均遅延時間を推定し、記憶装置に格納するステップをさらに含むようにしてもよい。
上で述べた分析方法をコンピュータに実行させるためのプログラムを作成することができ、このプログラムは、例えばフレキシブルディスク、CD−ROM、光磁気ディスク、半導体メモリ、ハードディスク等の記憶媒体又は記憶装置に格納される。また、ネットワークなどを介してデジタル信号として配信される場合もある。尚、中間的な処理結果はメモリ等の記憶装置に一時保管される。
図1は、本発明の原理を説明するための図である。 図2は、本発明の原理を説明するための図である。 図3は、本発明の実施例におけるシステム全体を説明するための図である。 図4Aは、本発明の実施例における遅延時間分析装置の機能ブロックである。 図4Bは、本発明の実施例における遅延時間分析装置の機能ブロックである。 図5は、本発明の実施例におけるメインの処理フローを示す図である。 図6は、取得データの一例を示す図である。 図7は、(a)及び(b)は、回帰計算を説明するための図である。 図8は、ビジネス時間に回帰計算の対象を限定する理由を説明するための図である。 図9は、信頼度算出処理の処理フローを示す図である。 図10は、信頼度に応じた遅延時間の補正処理の処理フローを示す図である。 図11(a)乃至(c)は、信頼度に応じた遅延時間の補正処理の具体例を説明するための図である。 図12は、リクエスト頻度変動時の遅延時間変化の推定処理の処理フローを示す図である。 図13は、CPU数変動時の遅延時間変化の推定処理の処理フローを示す図である。 図14は、サーバ数変動時の遅延時間変化の推定処理の処理フローを示す図である。 図15は、処理結果のテーブル化の一例を示す図である。 図16は、処理結果のグラフ化の一例を示す図である。 図17は、コンピュータの機能ブロック図である。
[本発明の原理]
A.Webシステムモデルにおける平均遅延時間の理論値X^(Xの上に^を付した記号をX^とも示すものとする)の導出
A−1.単一サーバの遅延時間のモデル化
まず、図1を用いて複数のCPUを有する単一サーバSにおける平均遅延時間を導出することを考える。図1に示すサーバSはCPU_1からCPU_CまでのC個のCPUを有し、外部からリクエスト頻度λ(req/sec)で入力されたリクエストは、待ち行列Swに入れられた後にC個のCPUで処理される。この際、CPUの使用率をρ(%)とする。そして、M/M/s待ち行列モデルの解析結果より、サーバSにおけるリクエストの平均滞在時間T(C,λ,ρ)は、以下のようになる。
Figure 2006046297
(1)式乃至(3)式より、サーバSにおける平均滞在時間T(C,λ,ρ)は、以下の関係が成立する。なお、αはサーバSに到達するリクエストの割合を表す。
Figure 2006046297
A−2.第N層のサーバ層における遅延時間のモデル化
ここでは、単一サーバにおける遅延モデルを用いて、複数層における特定の単一層におけるリクエストの平均遅延時間を求める。前提となるシステム・モデルを図2に表す。第1層には、M1個のサーバS(1,1)、S(1,2)、...S(1,M1)が存在しており、第2層には、M2個のサーバS(2,1)、S(2,2)、...S(2,M2)が存在しており、さらに第N層には、MN個のサーバS(N,1)、S(N,2)、...S(N,MN)が存在している。また、αnは第n層に到達するリクエストの割合を表し、各層におけるサーバにリクエストが均等に振り分けられ、本システムにλall(req/sec)というリクエスト頻度でリクエストが入力されると、第1層の各サーバには、λall/M1のリクエストが入力され、第1層から離脱するリクエストは(1−α2)λallであり、第2の層の各サーバには、α2λall/M2というリクエストが入力され、第2層から離脱するリクエストは(α2−α3)λallであり、第N−1層から離脱するリクエストは(αN-1−αN)λallであり、第N層の各サーバには、αNλall/MNのリクエストが入力され、第N層から出力されるリクエストはαNλallとなる。なお、1≦n≦N、1≦m≦Mnとする。
各層には、例えばユーザに対するフロントエンドとして用いられるWebサーバや、リクエストを動的に処理するためのアプリケーションサーバ等、それぞれ異なる役割が割り当てられている。
そして、第n層のサーバS(n,m)に入ってくるリクエスト頻度をλ(n,m)とすると、サーバS(n,m)における平均遅延時間はT(C(n,m),λ(n,m),ρ(n,m))と表すことができる。また、第n層に入ってくるリクエストの総量はαnλallであり、それらがMn個のサーバに均等に振り分けられるとすると、以下の式が成り立つ。
Figure 2006046297
リクエストは各サーバに均等に振り分けられるので、第n層における全リクエストの平均遅延時間Wnは、第n層に存在する全てのサーバの平均遅延時間の平均をとったものになる。
Figure 2006046297
ここで、(1)式乃至(4)式を用いると、Wnは下記のようになる。
Figure 2006046297
ここで表記を簡略化するためHnを下記のように定義する。
Figure 2006046297
A−3.システム全体における遅延時間のモデル化
ここでは、各層における遅延のモデルを用いて、システム全体における遅延時間のモデル化を行う。全てのリクエストのうち、第1層から第n層までのサーバを利用した後、システムから離脱するリクエストの数Rnは、下記のようになる。
Figure 2006046297
また、第1層から第n層までのサーバを利用した後、システムから離脱するリクエストの平均遅延Lnは、下記のようになる。
Figure 2006046297
また、定義より下記の関係が成り立つ。
Figure 2006046297
1リクエストあたりの平均遅延時間X^は、第1層から第i層までのサーバを利用してからシステムを離脱するリクエストについて、それらの遅延と、全リクエストに対する割合の積で表すことができるので、下記のようになる。
Figure 2006046297
上記の結果より、全リクエストの平均遅延時間を考えた場合、Hnは各層で発生する遅延を表しており、その総和X^は、全リクエストに対するシステム全体での平均遅延時間を表していると言える。
[具体的処理]
図3に監視対象システム100及び遅延分析装置120を含むシステムの概要を示す。監視対象システム100は、ネットワークに接続されており、図2に示したようにN層(図3では説明を簡略化するため2層)の構成となっている。各層には、負荷分散装置101及び102が設けられており、当該負荷分散装置は、各層のサーバ群S(1,1),S(1,2)及びS(1,M1)並びにサーバ群S(N,1),S(N,2)及びS(N,MN)に対してほぼ均等にリクエストを分配する。第1層のサーバには、サーバログ111aが設けられており、リクエストに対する処理を実施するとそのログデータが格納されるようになっている。また、各サーバには、CPU(Central Processing Unit)使用率取得部112a及び112bが設けられており、本実施例ではCPU使用率を%単位で取得するようになっている。このCPU使用率取得部112a及び112bは、UNIX(登録商標) OS(Operating System)等の場合にはsar、mpstat、iostatなどのコマンドで実行される一般的なツールであって、近年のOSには同様の機能を有しているものが多い。
遅延分析装置120は、監視対象システム100に接続されており、サーバログ111aに格納されたログデータ及びCPU使用率を用いて処理を行う。このように従来とは異なり、監視対象システム100内に特別の仕組みを組み込むことがないので遅延分析装置120の導入は容易であり、さらに監視対象システム100内で処理される全てのパケットを解析するものでもないので、大容量のストレージを用いる必要は無く、セキュリティ上の問題も生じにくくなっている。遅延分析装置120は、表示装置、マウス、キーボードその他の入出力部121に接続されている。
図4A及び図4Bに遅延分析装置120の機能ブロック図を示す。遅延分析装置120は、リクエスト頻度取得部1201と、CPU使用率取得部1202と、ログデータ格納部1203と、リクエスト頻度格納部1204と、遅延実測値格納部1205と、CPU使用率格納部1206と、システム構成データ格納部1207と、CPU時間算出部1208と、CPU時間格納部1209と、性能予測処理部1213と、サーバ遅延時間算出部1210と、Gテーブル格納部1211と、サーバ遅延時間格納部1214と、層遅延時間算出部1215と、層遅延時間格納部1216と、システム遅延時間算出部1217と、システム遅延時間格納部1218と、残余遅延時間算出部1219と、残余遅延時間格納部1220と、信頼度算出部1221と、信頼度格納部1222と、遅延時間補正部1223と、補正遅延時間格納部1224とを有する。
リクエスト頻度取得部1201は、監視対象システム100のサーバログ111aからログデータを受信しログデータ格納部1203に格納すると共に、入出力部121からの入力データに従ってログデータ格納部1203に格納されたログデータを処理してリクエスト頻度(req/sec)を算出し、リクエスト頻度格納部1204に格納する。また、ログデータ格納部1203に格納されたログデータを処理して平均遅延実測値を算出し、当該平均遅延実測値を遅延実測値格納部1205に格納する。CPU使用率取得部1202は、監視対象システム100のCPU使用率取得部112からCPU使用率のデータを取得し、当該データをCPU使用率格納部1206に格納する。
CPU時間算出部は、リクエスト頻度格納部1204とCPU使用率格納部1206とシステム構成データ格納部1207とを参照して1リクエストあたりの消費CPU時間を算出し、算出されたデータをCPU時間格納部1209に格納する。サーバ遅延時間算出部1210は、CPU時間格納部1209とGテーブル格納部1211とCPU使用率格納部1206とを参照してサーバ毎の遅延時間を算出し、算出されたデータをサーバ遅延時間格納部1214に格納する。なお、サーバ遅延時間算出部1210は、Gテーブル格納部1211を参照しない場合には、リクエスト頻度格納部1204とシステム構成データ格納部1207を参照することもある。
さらに層遅延時間算出部1215は、サーバ遅延時間格納部1214とシステム構成データ格納部1207とを参照して層毎の遅延時間を算出し、算出されたデータを層遅延時間格納部1216に格納する。システム遅延時間算出部1217は、層遅延時間格納部1216とシステム構成データ格納部1207とを参照してシステム全体の遅延時間を算出し、算出したデータをシステム遅延時間格納部1218に格納する。残余遅延時間算出部1219は、遅延実測値格納部1205とシステム遅延時間格納部1218とを参照してサーバ以外の他の装置により消費された残余の遅延時間を算出し、算出されたデータを残余遅延時間格納部1220に格納する。
また信頼度算出部1221は、残余遅延時間格納部1220とシステム構成データ格納部1207と遅延実測値格納部1205とリクエスト頻度格納部1204とCPU使用率格納部1206と層遅延時間格納部1216とを参照し、サーバ以外の他の装置により消費された残余の遅延時間が0未満である場合、各層の遅延時間について信頼度を算出し、算出された信頼度データを信頼度格納部1222に格納する。遅延時間補正部1223は、層遅延時間格納部1216と信頼度格納部1222とを参照して層毎の遅延時間を補正し、補正された遅延時間のデータを補正遅延時間格納部1224に格納する。
性能予測処理部1213は、CPU使用率格納部1206とシステム構成データ格納部1207とCPU時間格納部1209とリクエスト頻度格納部1204とを用いて処理を行う。
なお、入出力部121は、遅延分析装置120内の格納部内のデータを表示装置などに出力することができるようになっている。
次に図5乃至図16を用いて図3並びに図4A及び図4Bに示したシステムの処理内容について説明する。まず、リクエスト頻度取得部1201は、監視対象システム100のサーバログ111aからログデータを取得してログデータ格納部1203に格納し、CPU使用率取得部1202は監視対象システム100のCPU使用率取得部112からCPU使用率のデータを受信し、CPU使用率格納部1206に格納する(図5:ステップS1)。
ログデータ格納部1203に格納されるログデータの一例を以下に示す。
「192.168.164.108 - - [14/Sep/2004:12:27:50 +0900] "GET /~hoge/SSSS/SSSS__20040816.pdf HTTP/1.1" 200 147067 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)" 0.053」(Windowsは登録商標)
これは、Apache Webサーバにおいてカスタムログ形式で採取された1つのログの一例である。一般的には監視対象システム100に含まれるWebサーバの/var/log/httpd/ディレクトリ配下などにサーバログ111aとして格納されている。この第1項「192.168.164.108」はアクセス元クライアントのIPアドレスを表す。第2項及び第3項は省略されている。第4項「 [14/Sep/2004:12:27:50 +0900]」はアクセス時刻を表している。第5項「"GET /~hoge/SSSS/SSSS__20040816.pdf HTTP/1.1"」はアクセス内容を示す。第6項「200」はステータス(ここでは正常)を表す。第7項「147067」は送受信バイト数を表す。第8項「"-"」はリクエストされたURLパスを表す。第9項「"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)"」はアクセス元クライアントが使用しているブラウザを表す。第10項「0.053」は、リクエストを扱うのにかかった時間(sec)を表す。
次に、入出力部121は、分析対象期間及びビジネス時間帯の設定入力を受け付け、例えばメインメモリ等の記憶装置に格納する(ステップS3)。ビジネス時間帯とは、ユーザからのリクエスト以外の処理にサーバが費やすCPU時間が少ない時間帯をいう。ビジネス時間帯を指定することにより、夜間など、リクエストが少ないときに多量のCPU時間がサーバで消費されることに起因する推定誤差を減らすことができる。
そして、リクエスト頻度取得部1201は、ログデータ格納部1203から指定分析対象期間及びビジネス時間帯におけるログデータを読み出し、例えば1時間毎にいくつのリクエストが処理されたかカウントし且つカウント値を3600秒(=1時間)で割ることにより1秒あたりのリクエスト頻度λ(req/sec)を算出し、リクエスト頻度格納部1204に格納する。また、リクエスト頻度取得部1201は、例えば1時間毎に全てのリクエストを取り扱うのにかかった時間を加算してリクエスト数で除することにより平均遅延実測値を算出し、遅延実測値格納部1205に格納する。さらに、CPU使用率格納部1206は、CPU使用率格納部1206に格納されたCPU使用率のデータに基づき、1時間毎に各サーバS(n,m)の平均CPU使用率ρi (n,m)を算出し、CPU使用率格納部1206に格納する(ステップS5)。1つのサーバが複数のCPUを有する場合には、その複数のCPUの平均CPU使用率を算出して当該サーバのCPU使用率とする。なお、平均CPU使用率ρi (n,m)におけるiはi番目の単位時間(ここでは1時間毎)を表す。また、以下「平均」という文字を省略することもある。
ここまでの処理結果をまとめると、例えば図6に示すようになる。図6の例では、各時間帯につき、単位時間番号iと、リクエスト頻度λi(req/sec)と、遅延実測値Aiと、CPU使用率ρi (1,1)、ρi (1,2)、ρi (2,1)、ρi (3,1)とが示されている。
次に、CPU時間算出部1208は、リクエスト頻度格納部1204とCPU使用率格納部1206とシステム構成データ格納部1207とを参照して、1リクエストあたりの消費CPU時間を算出し、CPU時間格納部1209に格納する(ステップS7)。各サーバで発生する遅延時間を算出するためには、まず、システム全体に対して外部から入ってくるリクエストλi(req/sec)に対して、各サーバで1リクエストあたりどれだけのCPU時間が消費されているか求める必要がある。しかし、単純に時間iにおけるサーバS(n,m)のCPU使用率ρi (n,m)とCPUの個数C(n,m)との積をリクエスト頻度λiで割って、1リクエストあたりの平均消費CPU時間を
Figure 2006046297
として算出すると、以下のような不都合が生ずる。すなわち、サーバにおいては、通常、リクエストの処理以外にもシステムの維持等によって若干のCPU時間が消費されている。リクエスト頻度が極端に小さい場合、このようなCPU時間の割合が相対的に大きくなるため、1リクエストあたりの消費CPU時間を大きく見積もってしまい、誤差の原因となる恐れがある。すなわち、図7(a)のように横軸をリクエスト頻度、縦軸をCPU使用率とすると、(12)式をそのまま解釈するとリクエストがなければCPU使用率も0となるはずである。そこで、原点と各測定点とを結ぶ直線の傾きを1リクエストあたりの消費CPU時間とすると、大きなバラツキが生ずる。
この問題を解決するために、1リクエストあたりの消費CPU時間1/μ(n,m)が以下のように表されるものと仮定する。
Figure 2006046297
そして1リクエストあたりの消費CPU時間1/μ(n,m)を、回帰分析によって求め、以下の式で近似するものとする。
Figure 2006046297
図7(b)に示すように、回帰計算を行えば、各測定点を結ぶ回帰直線の傾きを、1リクエストあたりの消費CPU時間として算出することができ、より実際に近い値を得ることができる。
なお、回帰計算を行う際には、ユーザが指定したビジネス時間帯内のデータのみを用いる。これは、分析対象期間の全データを利用した場合、リクエストの小さい夜間にバッチ処理などが実行され、多量のCPU時間が消費されるなどの事象が発生すると、リクエスト数が小さい場合の方が、リクエスト数が多い場合よりCPU使用率が高いという現象が発生する。そうすると、回帰計算を用いた1リクエストあたりの消費CPU時間推定において大きな誤差を生じさせる可能性がある。これは図8に示すように、夜間バッチ処理による測定点を黒丸で表すと、リクエスト頻度が小さいにもかかわらずCPU使用率が高くなるため縦軸の上の方にプロットされてしまい、日中のリクエスト処理についての測定値(白丸で表す)と合わせて回帰計算を行うと、実線のような回帰直線が得られてしまう場合がある。一方、日中のリクエスト処理についての測定値のみを用いれば点線のような傾きが正の正しい回帰直線が得られる。従って、ビジネス時間帯にデータを絞る必要がある。
上で述べた回帰計算をより詳しく述べると、分析対象期間のデータのうち、ユーザの指定したビジネス時間帯に該当するデータ(CPU使用率ρ(n,m),システム構成データであるCPU個数C(n,m),リクエスト頻度λi)に対して、(13)式のような直線を引いた場合に、偏差が最も少なくなるように最小二乗法により傾き1/μ(n,m)と切片α(n,m)を計算し、CPU時間格納部1209に格納する。但し、α(n,m)が負となるときは、傾きを過大に見積もっている可能性が高いので、切片0として、再度以下の直線として回帰分析を実施して1/μ(n,m)を求める。
Figure 2006046297
また、傾き1/μ(n,m)が負となるときには、そのサーバでの1リクエストあたりの平均遅延時間は解析不能であると判断し、解析不能を表すコードをCPU時間格納部1209に格納する。このようなコードが格納されると、そのサーバが含まれる層で発生する平均遅延時間についても解析不能となる。
図5の説明に戻って、次にサーバ遅延時間算出部1210は、CPU使用率格納部1206とシステム構成データ格納部1207とCPU時間格納部1209とGテーブル格納部1211とを参照して、各サーバで発生する1リクエストあたりの平均遅延時間を算出し、算出された値をサーバ遅延時間格納部1214に格納する(ステップS9)。i番目の単位時間において、各サーバで発生する1リクエストあたりの平均遅延時間Ti (n,m)は、以下の式で与えられる。
Figure 2006046297
但し、ρ=0のとき、G(C,0)=1とする。
ここで1/μ(n,m)は1リクエストあたりの消費CPU時間を表しているが、これは負荷が0%のときに発生する平均遅延時間に等しい。そして、負荷がρの時には、遅延が負荷0%のときのG(C,ρ)倍になることを意味している。
G(C,ρ)については、(3)式に示したように、サーバのCPU個数とCPU使用率によって算出される。但し、(3)式をそのまま計算すると比較的時間がかかるので、分析の粒度が決まっている場合には、サーバのCPU数及びCPU使用率を変動させ、事前に算出することも可能である。例えば、分析の粒度が、CPU使用率においては1%単位で十分であり、且つ想定される1サーバあたりのCPUの個数が50個以下である場合、CPU使用率が0乃至99%(1%刻み)において、サーバのCPUが1乃至50個のそれぞれの場合におけるG(C,ρ)を予め算出しておき、それを100×50のマトリクスとしてGテーブル格納部1211に格納しておく。そうすれば、システム構成データ格納部1207からCPU個数を取得し、CPU使用率格納部1206からCPU使用率を取得し、Gデーブル格納部1211からG(C,ρ)の値を取得することができる。
最終的には、(14)式に従って各サーバで発生する1リクエストあたりの平均遅延時間Ti (n,m)(以下、略して各サーバの平均遅延時間ともいう)が算出され、サーバ遅延時間格納部1214に格納される。
次に、層遅延時間算出部1215は、サーバ遅延時間格納部1214とシステム構成データ格納部1207とを参照して、各層における遅延時間Li nを算出し、層遅延時間格納部1216に格納する(ステップS11)。各層における遅延時間Li nは、各層のサーバの平均遅延時間の和であり、以下のように表される。Mnについてはシステム構成データ格納部1207から取得する。
Figure 2006046297
そして、システム遅延時間算出部1217は、層遅延時間格納部1216とシステム構成データ格納部1207とを参照して、システム全体の遅延時間Diを算出し、システム遅延時間格納部1218に格納する(ステップS13)。システム全体の遅延時間Diは、各層nにおける遅延時間Li nの和であり、以下のように表される。Nについてはシステム構成データ格納部1207から取得する。
Figure 2006046297
その後、残余遅延時間算出部1219は、遅延実測値格納部1205とシステム遅延時間格納部1218とを参照して、サーバ以外の箇所でかかる遅延時間Eiを算出し、残余遅延時間格納部1220に格納する(ステップS15)。遅延時間Eiは、システム全体の遅延時間Diと遅延実測値Aiの差であって、以下のように算出される。
Figure 2006046297
i<Diということは、上で述べたような推定結果が適切ではないということであり、そのような場合にはEi=0に設定される。
そして主にEi=0となった場合に遅延時間の補正を行うため、信頼度算出部1221は、残余遅延時間格納部1220と層遅延時間格納部1216とシステム構成データ格納部1207とリクエスト頻度格納部1204とCPU使用率格納部1206と遅延実測値格納部1205とを参照して、各層の平均遅延時間の信頼度を算出処理を実施し、処理結果を信頼度格納部1222に格納する(ステップS17)。この処理については図9を用いて説明する。まず、信頼度算出部1221は、第n層の消費CPU時間の総和ρとリクエスト頻度λとの間の相関係数を各層nの平均遅延時間の初期信頼度Ri nとして算出し、信頼度格納部1222に格納する(ステップS31)。correlを相関係数を求める関数とすると、以下のような式に従って信頼度Ri nを算出する。
Figure 2006046297
(15)式におけるcorrel関数の第1項が第n層における消費CPU時間の総和である。なお、相関係数も後の計算で用いられるため、各層につき保持しておく。
そして相関係数Ri nが負であるか判断する(ステップS33)。相関係数<0であれば信頼度Ri n=0と設定する(ステップS37)。消費CPU時間とリクエスト頻度の間には正の相関があることを仮定しており、負の相関に意味が無いためである。一方、相関係数≧0であれば、平均遅延実測値Aiよりシステム全体の推定遅延時間Diが長いか判断する(ステップS35)。Di>Aiが成り立つ場合には、あり得ない推定がなされており算出された遅延時間自体の信頼性が低いため、ステップS37に移行する。すなわち、信頼度Ri n=0と設定する。一方、Di≦Aiであれば、ステップS31で算出された相関係数をそのまま信頼度として使用する。
図5の説明に戻って、遅延時間補正部1223は、信頼度格納部1222と層遅延時間格納部1216とを参照して、信頼度に応じた遅延時間の補正を行い、補正遅延時間格納部1224に格納する(ステップS19)。なお、Ai≧Diであれば、本ステップはスキップされる。この処理については図10を用いて説明する。まず、遅延時間補正部1223は、層遅延時間格納部1216と信頼度格納部1222とを参照して、各層の遅延時間を信頼度の高い順にソートし、補正遅延時間格納部1224に格納する(ステップS41)。なお、信頼度が0の層が複数ある場合は、それらの相関係数の高い順にソートする。
そして、ソート結果に従って信頼度の高い順に層の遅延時間を加算し、当該加算値が平均遅延実測値未満の最大となるような信頼度の順番Bを特定する(ステップS43)。ここでPx=nを、第n層の信頼度Ri nの高さが上からx番目であるものとする。そうすると、Ri Px>Ri Px+1が常に成り立つ。そしてステップS43では以下の式を満たす最大のyを求める。これがBである。
Figure 2006046297
このようにして求められた信頼度B番目の層の遅延時間までについては補正は不要である。従って、信頼度B+1番目の層の遅延時間を以下のように補正する(ステップS45)。すなわち、第PB+1層の推定遅延時間Li Px+1について補正を行い、その結果をL'i Px+1とする。補正結果及び補正不要の層(信頼度B番目までの層)の遅延時間は、補正遅延時間格納部1224に格納される。
Figure 2006046297
この式は、遅延実測値と、各層の信頼度のうち、信頼度が高い方からB+1番目までの遅延時間(推定平均値)の総和とが等しくなるように信頼度B+1番目の層の遅延時間を補正を行う。
また、信頼度B+1番目の層の信頼度を以下のように補正する(ステップS47)。すなわち、第PB+1層の信頼度Ri Px+1について補正を行い、その結果をR'i Px+1とする。補正結果及び補正不要の層(信頼度B番目までの層)の信頼度データは、補正遅延時間格納部1224に格納される。
Figure 2006046297
この式は、補正前の遅延時間と補正後の遅延時間の差が小さいほど、信頼度が高くなるように信頼度を補正している。
さらに、信頼度B+2番目以降の層の遅延時間及び信頼を以下のように補正する(ステップS49)。補正結果は、補正遅延時間格納部1224に格納される。
L'i Pn=0 (n>B+1)
R'i Pn=0 (n>B+1)
このような補正処理の具体例を図11(a)乃至(c)を用いて説明する。まず、図11(a)に遅延時間推定結果及び実測結果を示す。本例における監視対象システム100の第1層はWebサーバであり、第2層はアプリケーションサーバであり、第3層はDBサーバである。ここで、第1層の推定遅延時間は150msecであり、相関係数0.9で信頼度0である。第2層の推定遅延時間は60msecであり、相関係数0.85で信頼度0.85である。第3層の推定遅延時間は30msecであり、相関係数0.6で信頼度0.6である。なお、平均遅延実測値が100msecである。
そして、ステップS41でソートすると、図11(b)に示すように、各層は、第2層、第3層、第1層の順番に並べられ、システム全体の遅延時間は明らかに平均遅延実測値を超えており、システム全体の推定遅延時間は第1層の途中で超えてしまっている。
従って、図11(c)に示すように、第2層及び第3層については、遅延時間及び信頼度についてはそのまま用い、第1層の推定遅延時間については平均遅延実測値と第2層及び第3層の遅延時間の和との差に減らされ、10msecとなる。また信頼度も0.06(=10/150)に補正されている。
このようにして推定値を実測値に合わせるような補正がなされる。
図5の説明に戻って、入出力部121は、出力処理を実施する(ステップS21)。入出力部121が出力するデータは、(1)各サーバで発生する遅延時間の推定値Ti (n,m)、(2)各層で発生する遅延時間の推定値Li n、(3)システム全体で発生する遅延時間の推定値Di、(4)サーバ以外の箇所の遅延時間Ei、(5)各層の遅延時間の信頼度などである。信頼度の場合、値そのものを出力しても良いし、信頼度Ri nを例えば以下の3つのレベルに分類し、分類結果を出力するようにしても良い。すなわち、Ri n>0.7であれば信頼度「高」、0.7≧Ri n>0.3であれば信頼度「中」、0.3≧Ri nであれば信頼度「低」である。
上で述べたような信頼度の高中低の分類は、相関係数における相関の強さの判断に一般的に用いられている値である。すなわち、一般的に、相関係数の絶対値が0.7以上であれば、2つのパラメータの間に強い相関があると判断され、0.3乃至0.7程度であれば、弱い相関があると判断され、0.3以下であればほとんど無相関であるとされている。これは、相関係数の二乗が変動の説明率であることに起因している。そして、相関係数が0.7のとき、説明率は0.49(約50%)となる。すなわち、従属変数の変化のうち、半分程度がその説明変数によって説明可能である。また、相関係数が0.3のときは、説明率は0.1(約10%)となり、従属変数の変化のうち、説明変数に起因するものは約1割程度しかないため、説明変数と従属変数の間にはほとんど相関が無いとされる。
本実施例でも同様に考え、相関係数が0.7以上あれば、CPU使用率とリクエスト頻度の間に十分に相関があり、正しく1リクエストあたりの消費CUP時間を推定することができるため、信頼度が高くなると考えられる。また、この信頼度と予測誤差の関係の目安を、実験環境における実験結果から求めると、信頼度「高」であれば予測誤差±50%以内程度、信頼度「中」であれば予測誤差±100%以内程度、信頼度「低」であれば±100%以上の可能性が高い。但し、この結果はあくまでも実験結果に基づく目安であり、上記の精度(誤差範囲)を保障するものではない。
このようにすれば以上述べたように、各サーバ、各層、システム全体の遅延時間を、既に監視対象システム100に存在する要素を用いて算出することができるようになる。また、遅延実測値との関係から、遅延時間を補正することも可能であり、さらにその信頼度をユーザに提示することも可能である。
次に、上で述べたようなモデルを用いた性能予測について説明する。
まず、リクエスト頻度変動時の遅延時間の変化の推定について図12を用いて説明する。ここでは、ある時点iにおいて、リクエスト頻度がλであったとすると、リクエスト頻度がλからλ'に変化した場合の推定の平均遅延時間を算出するものとする。すなわち、入出力部121からλ'が入力され、遅延分析装置120の性能予測処理部1213が受け付ける(ステップS50)。そして、性能予測処理部1213は、リクエスト頻度の変更に応じて、全てのサーバS(n,m)についてCPU使用率ρを変更し、CPU使用率格納部1206に格納する(ステップS51)。CPU使用率ρについては以下のようにρ'に変更する。また、サーバ遅延時間算出部1210は、変更後のCPU使用率ρ'を用いて、変更後の各サーバの遅延時間T'i (n,m)を算出し、サーバ遅延時間格納部1214に格納する(ステップS53)。ステップS51及びS53における計算は以下のとおりになる。
Figure 2006046297
そして、層遅延時間算出部1215は、サーバ遅延時間格納部1214に格納された変更後の各サーバの遅延時間T'i (n,m)を用いて、変更後の各層における遅延時間を算出し、層遅延時間格納部1216に格納する(ステップS55)。さらに、システム遅延時間算出部1217は、層遅延時間格納部1216に格納された変更後の各層における遅延時間を用いて、変更後のシステム全体の遅延時間を算出し、システム遅延時間格納部1218に格納する(ステップS57)。
その後、入出力部121は、変更前と変更後の各遅延時間などを出力する(ステップS59)。これにより、ユーザは、リクエスト頻度の変動に応じた遅延時間の変化を考察することができるようになる。
次に、CPU数変動時における性能予測について図13を用いて説明する。ここでは、サーバS(n,m)のCPU個数をC(n,m)からC'(n,m)に変化させるものとする。従って、入出力部121からCPU個数C'(n,m)が入力され、遅延分析装置120の性能予測処理部1213が受け付ける(ステップS61)。そして、性能予測処理部1213は、CPU個数の変更に応じてCPU使用率ρを変更し、CPU使用率格納部1206に格納する(ステップS63)。CPU使用率ρについては、CPU個数の変更があったサーバについてのみ以下のようにρ'に変更する。また、サーバ遅延時間算出部1210は、変更後のCPU使用率ρ'を用いて、CPU個数が変更された各サーバの遅延時間T'i (n,m)を算出し、サーバ遅延時間格納部1214に格納する(ステップS65)。ステップS63及びS65における計算は以下のとおりになる。
Figure 2006046297
そして層遅延時間算出部1215は、サーバ遅延時間格納部1214に格納された変更後のサーバの遅延時間T'i (n,m)を用いて、変更に係る層における遅延時間を算出し、層遅延時間格納部1216に格納する(ステップS67)。さらに、システム遅延時間算出部1217は、層遅延時間格納部1216に格納された各層における遅延時間を用いて、変更後のシステム全体の遅延時間を算出し、システム遅延時間格納部1218に格納する(ステップS68)。
その後、入出力部121は、変更前と変更後の各遅延時間などを出力する(ステップS69)。これにより、ユーザは、CPU個数の変動に応じた遅延時間の変化を考察することができるようになる。例えばこの結果を用いてCPU個数を増加させた場合の効果を検討する。
次に、サーバ数変動時における性能予測について図14を用いて説明する。ここでは、第n層のサーバ数をMnからM'nに変化させたときの推定遅延時間を求めるものとする。従って、入出力部121から第n層のサーバ数M'nが入力され、遅延分析装置120の性能予測処理部1213が受け付ける(ステップS71)。そして、性能予測処理部1213は、サーバ数の変更に応じて1リクエストあたりの消費CPU時間を補正し、CPU時間格納部1209に格納する(ステップS73)。1リクエストあたりの消費CPU時間1/μ(n,m)については、以下のように1/μ'(n,m)に変更する。また、性能予測処理部1213は、1リクエストあたりの消費CPU時間の補正に応じて、CPU使用率ρを補正し、CPU使用率格納部1206に格納する(ステップS75)。CPU使用率ρについては、以下のようにρ'に変更する。
Figure 2006046297
なお、α(n,m)は、1/μ(n,m)を算出する際に求めた切片であり、CPU時間格納部1209に格納されているのでこれを用いる。
次に、サーバ遅延時間算出部1210は、CPU使用率格納部1206に格納された変更後のCPU使用率ρ'及びCPU時間格納部1209に格納された変更後の1リクエストあたりの消費CPU時間1/μ'(n,m)を用いて、変更後のサーバ遅延時間を算出し、サーバ遅延時間格納部1214に格納する(ステップS77)。変更後のサーバ遅延時間T'i (n,m)は以下のように表される。
Figure 2006046297
そして、層遅延時間算出部1215は、サーバ遅延時間格納部1214に格納された変更後のサーバの遅延時間T'i (n,m)を用いて、各層における遅延時間を算出し、層遅延時間格納部1216に格納する(ステップS79)。なお、本ステップにおいても性能予測処理部1213からのM'nを用いて以下のような計算を行う。
Figure 2006046297
なお、(16)式からL'i nは、以下のようにも表わされる。
Figure 2006046297
さらに、システム遅延時間算出部1217は、層遅延時間格納部1216に格納された各層における遅延時間を用いて、変更後のシステム全体の遅延時間を算出し、システム遅延時間格納部1218に格納する(ステップS81)。
その後、入出力部121は、変更前と変更後の各遅延時間などを出力する(ステップS83)。これにより、ユーザは、サーバ個数の変動に応じた遅延時間の変化を考察することができるようになる。例えばこの結果を用いてサーバ個数を増加させた場合の効果を検討する。
以上本発明の実施例を説明したが、本発明はこれに限定するものではない。例えば、図4A及び図4Bに示した機能ブロック図は一例であって、必ずしも実際のプログラム構成に対応しない場合もある。また、出力処理については、数値をそのまま表示するだけではなく、図15に示すようなテーブル(1リクエストあたりの消費CPU時間、CPU使用率、サーバ毎の平均遅延時間、各層の平均遅延時間、遅延実測値、サーバ以外の推定遅延時間、各層の遅延時間の信頼度を単位時間i毎に表示するテーブル)や、図16に示すようなグラフ(横軸が時刻、縦軸が遅延時間を表し、Webサーバ(第1層)、アプリケーションサーバ(第2層)、DBサーバ(第3層)、その他についての遅延時間の時間変化を表すグラフ)を生成して、表示させるようにしても良い。なお、図16のグラフを見れば、9時から12時の通常時には、ほぼWebサーバの遅延が全体の半分以上になっており(図16中の部分A)、12時から15時にDBサーバの一時的な負荷増大によりレスポンスが著しく低下しており(図16中の部分B)、18時以降サーバ以外の遅延時間が増加しており、何らかの問題が発生したかもしれないこと(図16中の部分C)などを判断することができるようになる。
また、上で述べた遅延分析装置120は、コンピュータ装置であって、図17に示すように、メモリ2501(記憶部)とCPU2503(処理部)とハードディスク・ドライブ(HDD)2505と表示装置2509に接続される表示制御部2507とリムーバブル・ディスク2511用のドライブ装置2513と入力装置2515とネットワークに接続するための通信制御部2517とがバス2519で接続されている。オペレーティング・システム(OS:Operating System)及び本実施例における処理を実施するためのアプリケーション・プログラムは、HDD2505に格納されており、CPU2503により実行される際にはHDD2505からメモリ2501に読み出される。必要に応じてCPU2503は、表示制御部2507、通信制御部2517、ドライブ装置2513を制御して、必要な動作を行わせる。また、処理途中のデータについては、メモリ2501に格納され、必要があればHDD2505に格納される。本発明の実施例では、上で述べた処理を実施するためのアプリケーション・プログラムはリムーバブル・ディスク2511に格納されて頒布され、ドライブ装置2513からHDD2505にインストールされる。インターネットなどのネットワーク及び通信制御部2517を経由して、HDD2505にインストールされる場合もある。このようなコンピュータ装置は、上で述べたCPU2503、メモリ2501などのハードウエアとOS及び必要なアプリケーション・プログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。
本発明は、コンピュータ・システムのレスポンスに関する分析技術に関する。
ネットワークサービスの発展に伴い、サービスを提供するためのシステムが複雑、大規模化してきている。多くのサービスが多数のサーバを組み合わせて提供されるようになってきている。このようなシステムにおいては、それぞれのサーバのリソースの利用状況がユーザのレスポンスにどのような影響を与えているかを把握することが非常に困難になってきている。
従来、複数のサーバからなるシステムにおいて、それぞれのサーバにおける遅延が、ユーザが体感するレスポンスタイムに対してどのくらいの割合を占めるかを調査するには下記の2つの方法が知られていた。すなわち、(1)各サーバ間で送受信するメッセージに認識用の特別なタグを付けておき、そのタグを用いて遅延を計測するものである。(2)各サーバ間で送受信されるメッセージをパケットキャプチャにより採取し、その情報を解析するものである。
しかし、(1)の方法では、既存のシステムやサービスに変更を加えなければならず、本機能の導入は容易ではない。また、(2)の方法では、パケットキャプチャのための高価な機器や大容量のストレージが必要である。さらに、セキュリティの観点からもパケットキャプチャは好まれない。
また、特開2004−21756号公報には、情報システム上で動作する一つまたは複数のアプリケーションについて、種々の利用状況下での各アプリケーションの応答性能を、限られた実験回数で効果的に評価する技術が開示されている。より具体的には、アプリケーションの種々の利用状況に対応した負荷投入実験を複数回行う際、アプリケーションの利用状況に関する数量と、アプリケーションの応答性能に関する数量と、ハードウェア・リソースの利用状況に関する数量と、ハードウェア・リソースの応答性能に関する数量を取得し、数量間の依存関係を記述する推定式群を作成する事により、推定式群を用いたアプリケーションの応答性能の評価を可能にするものである。しかし、この技術は「実験」が必要であり、通常の処理を行いながら分析を行うことはできない。
特開2004−21756号公報
従って、本発明の目的は、分析対象(以下監視対象とも呼ぶ)のコンピュータ・システムから容易に取得できる情報を用いて当該コンピュータ・システムのレスポンスに関する分析を実施するための技術を提供するものである。
本発明に係る分析方法は、複数のサーバを含むコンピュータ・システムのレスポンスに関する分析を行う分析方法であって、上記コンピュータ・システムから上記複数のサーバの各々のCPU使用率のデータを取得し、CPU使用率格納部に格納するステップと、上記コンピュータ・システムにおいて生成される処理履歴データを取得し、上記コンピュータ・システムのユーザによるリクエスト頻度のデータを生成し、リクエスト頻度データ格納部に格納するステップと、CPU使用率格納部に格納された各サーバのCPU使用率とリクエスト頻度データ格納部に格納されたリクエスト頻度とを用いて、各サーバにおける平均遅延時間を推定し、サーバ遅延時間格納部に格納する推定ステップとを含む。
このように、CPU使用率及び処理履歴データといった容易に取得できるデータを用いて処理を行うため、導入コストを軽減し、セキュリティ面でも問題を生じさせずに分析処理を実施することができる。
さらに、上で述べた推定ステップが、CPU使用率格納部に格納された各サーバのCPU使用率とリクエスト頻度データ格納部に格納されたリクエスト頻度とを用いて、各サーバの1リクエストあたりの平均消費CPU時間を推定し、消費CPU時間格納部に格納する消費CPU時間推定ステップと、消費CPU時間格納部に格納された各サーバの1リクエストあたりの平均消費CPU時間とCPU使用率格納部に格納された各サーバのCPU使用率とを用いて、各サーバにおける平均遅延時間を推定し、サーバ遅延時間格納部に格納するサーバ遅延時間推定ステップとを含むようにしてもよい。
また、上で述べた消費CPU時間推定ステップにおいて、予め指定された時間帯における各サーバのCPU使用率とリクエスト頻度とを用いて回帰分析を実施することにより、各サーバの1リクエストあたりの平均消費CPU時間を推定するようにしてもよい。このように予め指定された時間帯に限定することにより、ユーザによるリクエストをあまり処理していない時間帯を除外することができ、計算精度を向上させることができるようになる。
さらに、上で述べたサーバ遅延時間推定ステップにおいて、サーバの1リクエストあたりの平均消費CPU時間と当該サーバにおける平均遅延時間との関係を表す係数値を当該係数値を決定する要素であるCPU使用率の所定単位毎及びCPU個数毎に格納するマトリクス格納部を参照して該当する係数値を読み出し、当該係数値と上記サーバの1リクエストあたりの平均消費CPU時間とから上記サーバにおける平均遅延時間を算出するようにしてもよい。上記係数値はCPU使用率とCPU個数の関数となっているので、都度計算することも可能であるが、実際的には計算量が増加するため、処理速度を上げるため上で述べたようにマトリクス格納部に格納しておく場合もある。
また、上記コンピュータ・システムに含まれる複数のサーバが、実行する業務種別に応じてカテゴリ分けされている場合、当該カテゴリ毎に平均遅延時間を推定するステップをさらに含むようにしても良い。例えば層(レイヤ:Layer)が規定されているようなコンピュータでは、当該層をカテゴリとして層毎の平均遅延時間を算出することもある。例えば、業務毎に問題点を抽出するためである。
さらに、サーバ遅延時間格納部に格納されたデータを用いて、コンピュータ・システム全体の平均遅延時間を推定し、システム遅延時間格納部に格納するステップをさらに含むようにしてもよい。
また、上記コンピュータ・システムにおける、ユーザによるリクエストに対するレスポンス時間の平均実測値を取得し、平均実測値格納部に格納するステップと、平均実測値格納部に格納された平均実測値とシステム遅延時間格納部に格納された上記コンピュータ・システム全体の平均遅延時間との差により、サーバ以外の箇所で発生した遅延時間を推定するステップとをさらに含むようにしてもよい。サーバ以外の箇所で発生した遅延時間がコンピュータ・システム全体の平均遅延時間より短い場合には、何らかの理由により推定が不適切であり、そのような場合を検出することも可能となる。
さらに、カテゴリ毎に、平均消費CPU時間の総和とリクエスト頻度との相関係数を算出し、当該相関係数に基づきカテゴリ毎の平均遅延時間の信頼度を決定し、信頼度データ格納部に格納するステップと、信頼度データ格納部に格納されたカテゴリ毎の平均遅延時間の信頼度に基づき、カテゴリ毎の平均遅延時間を補正し、記憶装置に格納する補正ステップとをさらに含むようにしてもよい。例えば信頼度が高い平均遅延時間をそのまま使用し、信頼度が低い平均遅延時間については補正を大きく加えるようにする。
さらに、上で述べた補正ステップが、カテゴリ毎の平均遅延時間を信頼度の高い順にソートするステップと、信頼度の高い順に前記カテゴリ毎の平均遅延時間を累積してゆき、累積された平均遅延時間が遅延実測値未満であって最大の値を有することとなる信頼度の順番を特定するステップと、特定された信頼度の順番の次の順番の遅延時間を、遅延実測値と信頼度の高い順にカテゴリ毎の平均遅延時間を特定された信頼度の順番まで累積することにより得られる値との差に補正するステップとを含むようにしてもよい。
また、リクエスト頻度が例えば試験的に変更された場合、当該変更後のリクエスト頻度に応じて各サーバのCPU使用率を変更し、記憶装置に格納するステップと、記憶装置に格納された変更後の各サーバのCPU使用率を用いて、各サーバにおける平均遅延時間を推定し、記憶装置に格納するステップと、サーバ遅延時間格納部及び記憶装置に格納された変更前後の各サーバの平均遅延時間を比較可能な態様で出力するステップとをさらに含むようにしてもよい。リクエスト頻度の変動に対して遅延時間がどのように変化するかを知ることができる。
また、CPU数が例えば試験的に変更された場合、当該変更後のCPU数に応じて各前記サーバのCPU使用率を変更し、記憶装置に格納するステップと、記憶装置に格納された変更後の各サーバのCPU使用率と変更後のCPU数とを用いて、各サーバにおける平均遅延時間を推定し、記憶装置に格納するステップと、サーバ遅延時間格納部及び記憶装置に格納された変更前後の各サーバの平均遅延時間を比較可能な態様で出力するステップとをさらに含むようにしてもよい。CPU数を例えば増加させた場合に遅延時間がどの程度減少するか試すことができ、その効果から投資の是非を判断できるようになる。
また、サーバ数が変更された場合、当該変更後のサーバ数に応じて各サーバの1リクエストあたりの平均消費CPU時間を算出し、記憶装置に格納するステップと、CPU個数と記憶装置に格納された変更後の各サーバの1リクエストあたりの平均消費CPU時間とを用いて、変更後における各サーバのCPU使用率を算出し、記憶装置に格納するステップと、記憶装置に格納された変更後の各サーバの1リクエストあたりの平均消費CPU時間と変更後における各サーバのCPU使用率とを用いて、変更後における各サーバの平均遅延時間を推定し、記憶装置に格納するステップとをさらに含むようにしてもよい。サーバ数を例えば増加させた場合に遅延時間がどの程度減少するかを試すことができ、その効果から投資の是非を判断できるようになる。
さらに、記憶装置に格納された変更後における各サーバの平均遅延時間と変更後のサーバ数とを用いて、コンピュータ・システムに含まれる複数のサーバを実行する業務種別に応じて分けることにより規定されるカテゴリ毎の平均遅延時間を推定し、記憶装置に格納するステップをさらに含むようにしてもよい。
上で述べた分析方法をコンピュータに実行させるためのプログラムを作成することができ、このプログラムは、例えばフレキシブルディスク、CD−ROM、光磁気ディスク、半導体メモリ、ハードディスク等の記憶媒体又は記憶装置に格納される。また、ネットワークなどを介してデジタル信号として配信される場合もある。尚、中間的な処理結果はメモリ等の記憶装置に一時保管される。
[本発明の原理]
A.Webシステムモデルにおける平均遅延時間の理論値X^(Xの上に^を付した記号をX^とも示すものとする)の導出
A−1.単一サーバの遅延時間のモデル化
まず、図1を用いて複数のCPUを有する単一サーバSにおける平均遅延時間を導出することを考える。図1に示すサーバSはCPU_1からCPU_CまでのC個のCPUを有し、外部からリクエスト頻度λ(req/sec)で入力されたリクエストは、待ち行列Swに入れられた後にC個のCPUで処理される。この際、CPUの使用率をρ(%)とする。そして、M/M/s待ち行列モデルの解析結果より、サーバSにおけるリクエストの平均滞在時間T(C,λ,ρ)は、以下のようになる。
Figure 2006046297
(1)式乃至(3)式より、サーバSにおける平均滞在時間T(C,λ,ρ)は、以下の関係が成立する。なお、αはサーバSに到達するリクエストの割合を表す。
Figure 2006046297
A−2.第N層のサーバ層における遅延時間のモデル化
ここでは、単一サーバにおける遅延モデルを用いて、複数層における特定の単一層におけるリクエストの平均遅延時間を求める。前提となるシステム・モデルを図2に表す。第1層には、M1個のサーバS(1,1)、S(1,2)、...S(1,M1)が存在しており、第2層には、M2個のサーバS(2,1)、S(2,2)、...S(2,M2)が存在しており、さらに第N層には、MN個のサーバS(N,1)、S(N,2)、...S(N,MN)が存在している。また、αnは第n層に到達するリクエストの割合を表し、各層におけるサーバにリクエストが均等に振り分けられ、本システムにλall(req/sec)というリクエスト頻度でリクエストが入力されると、第1層の各サーバには、λall/M1のリクエストが入力され、第1層から離脱するリクエストは(1−α2)λallであり、第2の層の各サーバには、α2λall/M2というリクエストが入力され、第2層から離脱するリクエストは(α2−α3)λallであり、第N−1層から離脱するリクエストは(αN-1−αN)λallであり、第N層の各サーバには、αNλall/MNのリクエストが入力され、第N層から出力されるリクエストはαNλallとなる。なお、1≦n≦N、1≦m≦Mnとする。
各層には、例えばユーザに対するフロントエンドとして用いられるWebサーバや、リクエストを動的に処理するためのアプリケーションサーバ等、それぞれ異なる役割が割り当てられている。
そして、第n層のサーバS(n,m)に入ってくるリクエスト頻度をλ(n,m)とすると、サーバS(n,m)における平均遅延時間はT(C(n,m),λ(n,m),ρ(n,m))と表すことができる。また、第n層に入ってくるリクエストの総量はαnλallであり、それらがMn個のサーバに均等に振り分けられるとすると、以下の式が成り立つ。
Figure 2006046297
リクエストは各サーバに均等に振り分けられるので、第n層における全リクエストの平均遅延時間Wnは、第n層に存在する全てのサーバの平均遅延時間の平均をとったものになる。
Figure 2006046297
ここで、(1)式乃至(4)式を用いると、Wnは下記のようになる。
Figure 2006046297
ここで表記を簡略化するためHnを下記のように定義する。
Figure 2006046297
A−3.システム全体における遅延時間のモデル化
ここでは、各層における遅延のモデルを用いて、システム全体における遅延時間のモデル化を行う。全てのリクエストのうち、第1層から第n層までのサーバを利用した後、システムから離脱するリクエストの数Rnは、下記のようになる。
Figure 2006046297
また、第1層から第n層までのサーバを利用した後、システムから離脱するリクエストの平均遅延Lnは、下記のようになる。
Figure 2006046297
また、定義より下記の関係が成り立つ。
Figure 2006046297
1リクエストあたりの平均遅延時間X^は、第1層から第i層までのサーバを利用してからシステムを離脱するリクエストについて、それらの遅延と、全リクエストに対する割合の積で表すことができるので、下記のようになる。
Figure 2006046297
上記の結果より、全リクエストの平均遅延時間を考えた場合、Hnは各層で発生する遅延を表しており、その総和X^は、全リクエストに対するシステム全体での平均遅延時間を表していると言える。
[具体的処理]
図3に監視対象システム100及び遅延分析装置120を含むシステムの概要を示す。監視対象システム100は、ネットワークに接続されており、図2に示したようにN層(図3では説明を簡略化するため2層)の構成となっている。各層には、負荷分散装置101及び102が設けられており、当該負荷分散装置は、各層のサーバ群S(1,1),S(1,2)及びS(1,M1)並びにサーバ群S(N,1),S(N,2)及びS(N,MN)に対してほぼ均等にリクエストを分配する。第1層のサーバには、サーバログ111aが設けられており、リクエストに対する処理を実施するとそのログデータが格納されるようになっている。また、各サーバには、CPU(Central Processing Unit)使用率取得部112a及び112bが設けられており、本実施例ではCPU使用率を%単位で取得するようになっている。このCPU使用率取得部112a及び112bは、UNIX(登録商標) OS(Operating System)等の場合にはsar、mpstat、iostatなどのコマンドで実行される一般的なツールであって、近年のOSには同様の機能を有しているものが多い。
遅延分析装置120は、監視対象システム100に接続されており、サーバログ111aに格納されたログデータ及びCPU使用率を用いて処理を行う。このように従来とは異なり、監視対象システム100内に特別の仕組みを組み込むことがないので遅延分析装置120の導入は容易であり、さらに監視対象システム100内で処理される全てのパケットを解析するものでもないので、大容量のストレージを用いる必要は無く、セキュリティ上の問題も生じにくくなっている。遅延分析装置120は、表示装置、マウス、キーボードその他の入出力部121に接続されている。
図4A及び図4Bに遅延分析装置120の機能ブロック図を示す。遅延分析装置120は、リクエスト頻度取得部1201と、CPU使用率取得部1202と、ログデータ格納部1203と、リクエスト頻度格納部1204と、遅延実測値格納部1205と、CPU使用率格納部1206と、システム構成データ格納部1207と、CPU時間算出部1208と、CPU時間格納部1209と、性能予測処理部1213と、サーバ遅延時間算出部1210と、Gテーブル格納部1211と、サーバ遅延時間格納部1214と、層遅延時間算出部1215と、層遅延時間格納部1216と、システム遅延時間算出部1217と、システム遅延時間格納部1218と、残余遅延時間算出部1219と、残余遅延時間格納部1220と、信頼度算出部1221と、信頼度格納部1222と、遅延時間補正部1223と、補正遅延時間格納部1224とを有する。
リクエスト頻度取得部1201は、監視対象システム100のサーバログ111aからログデータを受信しログデータ格納部1203に格納すると共に、入出力部121からの入力データに従ってログデータ格納部1203に格納されたログデータを処理してリクエスト頻度(req/sec)を算出し、リクエスト頻度格納部1204に格納する。また、ログデータ格納部1203に格納されたログデータを処理して平均遅延実測値を算出し、当該平均遅延実測値を遅延実測値格納部1205に格納する。CPU使用率取得部1202は、監視対象システム100のCPU使用率取得部112からCPU使用率のデータを取得し、当該データをCPU使用率格納部1206に格納する。
CPU時間算出部1208は、リクエスト頻度格納部1204とCPU使用率格納部1206とシステム構成データ格納部1207とを参照して1リクエストあたりの消費CPU時間を算出し、算出されたデータをCPU時間格納部1209に格納する。サーバ遅延時間算出部1210は、CPU時間格納部1209とGテーブル格納部1211とCPU使用率格納部1206とを参照してサーバ毎の遅延時間を算出し、算出されたデータをサーバ遅延時間格納部1214に格納する。なお、サーバ遅延時間算出部1210は、Gテーブル格納部1211を参照しない場合には、リクエスト頻度格納部1204とシステム構成データ格納部1207を参照することもある。
さらに層遅延時間算出部1215は、サーバ遅延時間格納部1214とシステム構成データ格納部1207とを参照して層毎の遅延時間を算出し、算出されたデータを層遅延時間格納部1216に格納する。システム遅延時間算出部1217は、層遅延時間格納部1216とシステム構成データ格納部1207とを参照してシステム全体の遅延時間を算出し、算出したデータをシステム遅延時間格納部1218に格納する。残余遅延時間算出部1219は、遅延実測値格納部1205とシステム遅延時間格納部1218とを参照してサーバ以外の他の装置により消費された残余の遅延時間を算出し、算出されたデータを残余遅延時間格納部1220に格納する。
また信頼度算出部1221は、残余遅延時間格納部1220とシステム構成データ格納部1207と遅延実測値格納部1205とリクエスト頻度格納部1204とCPU使用率格納部1206と層遅延時間格納部1216とを参照し、サーバ以外の他の装置により消費された残余の遅延時間が0未満である場合、各層の遅延時間について信頼度を算出し、算出された信頼度データを信頼度格納部1222に格納する。遅延時間補正部1223は、層遅延時間格納部1216と信頼度格納部1222とを参照して層毎の遅延時間を補正し、補正された遅延時間のデータを補正遅延時間格納部1224に格納する。
性能予測処理部1213は、CPU使用率格納部1206とシステム構成データ格納部1207とCPU時間格納部1209とリクエスト頻度格納部1204とを用いて処理を行う。
なお、入出力部121は、遅延分析装置120内の格納部内のデータを表示装置などに出力することができるようになっている。
次に図5乃至図16を用いて図3並びに図4A及び図4Bに示したシステムの処理内容について説明する。まず、リクエスト頻度取得部1201は、監視対象システム100のサーバログ111aからログデータを取得してログデータ格納部1203に格納し、CPU使用率取得部1202は監視対象システム100のCPU使用率取得部112からCPU使用率のデータを受信し、CPU使用率格納部1206に格納する(図5:ステップS1)。
ログデータ格納部1203に格納されるログデータの一例を以下に示す。
「192.168.164.108 - - [14/Sep/2004:12:27:50 +0900] "GET /~hoge/SSSS/SSSS__20040816.pdf HTTP/1.1" 200 147067 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)" 0.053」(Windowsは登録商標)
これは、Apache Webサーバにおいてカスタムログ形式で採取された1つのログの一例である。一般的には監視対象システム100に含まれるWebサーバの/var/log/httpd/ディレクトリ配下などにサーバログ111aとして格納されている。この第1項「192.168.164.108」はアクセス元クライアントのIPアドレスを表す。第2項及び第3項は省略されている。第4項「 [14/Sep/2004:12:27:50 +0900]」はアクセス時刻を表している。第5項「"GET /~hoge/SSSS/SSSS__20040816.pdf HTTP/1.1"」はアクセス内容を示す。第6項「200」はステータス(ここでは正常)を表す。第7項「147067」は送受信バイト数を表す。第8項「"-"」はリクエストされたURLパスを表す。第9項「"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)"」はアクセス元クライアントが使用しているブラウザを表す。第10項「0.053」は、リクエストを扱うのにかかった時間(sec)を表す。
次に、入出力部121は、分析対象期間及びビジネス時間帯の設定入力を受け付け、例えばメインメモリ等の記憶装置に格納する(ステップS3)。ビジネス時間帯とは、ユーザからのリクエスト以外の処理にサーバが費やすCPU時間が少ない時間帯をいう。ビジネス時間帯を指定することにより、夜間など、リクエストが少ないときに多量のCPU時間がサーバで消費されることに起因する推定誤差を減らすことができる。
そして、リクエスト頻度取得部1201は、ログデータ格納部1203から指定分析対象期間及びビジネス時間帯におけるログデータを読み出し、例えば1時間毎にいくつのリクエストが処理されたかカウントし且つカウント値を3600秒(=1時間)で割ることにより1秒あたりのリクエスト頻度λ(req/sec)を算出し、リクエスト頻度格納部1204に格納する。また、リクエスト頻度取得部1201は、例えば1時間毎に全てのリクエストを取り扱うのにかかった時間を加算してリクエスト数で除することにより平均遅延実測値を算出し、遅延実測値格納部1205に格納する。さらに、CPU使用率算出部120は、CPU使用率格納部1206に格納されたCPU使用率のデータに基づき、1時間毎に各サーバS(n,m)の平均CPU使用率ρi (n,m)を算出し、CPU使用率格納部1206に格納する(ステップS5)。1つのサーバが複数のCPUを有する場合には、その複数のCPUの平均CPU使用率を算出して当該サーバのCPU使用率とする。なお、平均CPU使用率ρi (n,m)におけるiはi番目の単位時間(ここでは1時間毎)を表す。また、以下「平均」という文字を省略することもある。
ここまでの処理結果をまとめると、例えば図6に示すようになる。図6の例では、各時間帯につき、単位時間番号iと、リクエスト頻度λi(req/sec)と、遅延実測値Aiと、CPU使用率ρi (1,1)、ρi (1,2)、ρi (2,1)、ρi (3,1)とが示されている。
次に、CPU時間算出部1208は、リクエスト頻度格納部1204とCPU使用率格納部1206とシステム構成データ格納部1207とを参照して、1リクエストあたりの消費CPU時間を算出し、CPU時間格納部1209に格納する(ステップS7)。各サーバで発生する遅延時間を算出するためには、まず、システム全体に対して外部から入ってくるリクエスト頻度λi(req/sec)に対して、各サーバで1リクエストあたりどれだけのCPU時間が消費されているか求める必要がある。しかし、単純に単位時間iにおけるサーバS(n,m)のCPU使用率ρi (n,m)とCPUの個数C(n,m)との積をリクエスト頻度λiで割って、1リクエストあたりの平均消費CPU時間を
Figure 2006046297
として算出すると、以下のような不都合が生ずる。すなわち、サーバにおいては、通常、リクエストの処理以外にもシステムの維持等によって若干のCPU時間が消費されている。リクエスト頻度が極端に小さい場合、このようなCPU時間の割合が相対的に大きくなるため、1リクエストあたりの消費CPU時間を大きく見積もってしまい、誤差の原因となる恐れがある。すなわち、図7(a)のように横軸をリクエスト頻度、縦軸をCPU使用率とすると、(12)式をそのまま解釈するとリクエストがなければCPU使用率も0となるはずである。そこで、原点と各測定点とを結ぶ直線の傾きを1リクエストあたりの消費CPU時間とすると、大きなバラツキが生ずる。
この問題を解決するために、1リクエストあたりの消費CPU時間1/μ(n,m)が以下のように表されるものと仮定する。
Figure 2006046297
そして1リクエストあたりの消費CPU時間1/μ(n,m)を、回帰分析によって求め、以下の式で近似するものとする。
Figure 2006046297
図7(b)に示すように、回帰計算を行えば、各測定点を結ぶ回帰直線の傾きを、1リクエストあたりの消費CPU時間として算出することができ、より実際に近い値を得ることができる。
なお、回帰計算を行う際には、ユーザが指定したビジネス時間帯内のデータのみを用いる。これは、分析対象期間の全データを利用した場合、リクエストの小さい夜間にバッチ処理などが実行され、多量のCPU時間が消費されるなどの事象が発生すると、リクエスト数が小さい場合の方が、リクエスト数が多い場合よりCPU使用率が高いという現象が発生する。そうすると、回帰計算を用いた1リクエストあたりの消費CPU時間推定において大きな誤差を生じさせる可能性がある。これは図8に示すように、夜間バッチ処理による測定点を黒丸で表すと、リクエスト頻度が小さいにもかかわらずCPU使用率が高くなるため縦軸の上の方にプロットされてしまい、日中のリクエスト処理についての測定値(白丸で表す)と合わせて回帰計算を行うと、実線のような回帰直線が得られてしまう場合がある。一方、日中のリクエスト処理についての測定値のみを用いれば点線のような傾きが正の正しい回帰直線が得られる。従って、ビジネス時間帯にデータを絞る必要がある。
上で述べた回帰計算をより詳しく述べると、分析対象期間のデータのうち、ユーザの指定したビジネス時間帯に該当するデータ(CPU使用率ρ(n,m),システム構成データであるCPU個数C(n,m),リクエスト頻度λi)に対して、(13)式のような直線を引いた場合に、偏差が最も少なくなるように最小二乗法により傾き1/μ(n,m)と切片α(n,m)を計算し、CPU時間格納部1209に格納する。但し、α(n,m)が負となるときは、傾きを過大に見積もっている可能性が高いので、切片0として、再度以下の直線として回帰分析を実施して1/μ(n,m)を求める。
Figure 2006046297
また、傾き1/μ(n,m)が負となるときには、そのサーバでの1リクエストあたりの平均遅延時間は解析不能であると判断し、解析不能を表すコードをCPU時間格納部1209に格納する。このようなコードが格納されると、そのサーバが含まれる層で発生する平均遅延時間についても解析不能となる。
図5の説明に戻って、次にサーバ遅延時間算出部1210は、CPU使用率格納部1206とシステム構成データ格納部1207とCPU時間格納部1209とGテーブル格納部1211とを参照して、各サーバで発生する1リクエストあたりの平均遅延時間を算出し、算出された値をサーバ遅延時間格納部1214に格納する(ステップS9)。i番目の単位時間において、各サーバで発生する1リクエストあたりの平均遅延時間Ti (n,m)は、以下の式で与えられる。
Figure 2006046297
但し、ρ=0のとき、G(C,0)=1とする。
ここで1/μ(n,m)は1リクエストあたりの消費CPU時間を表しているが、これは負荷が0%のときに発生する平均遅延時間に等しい。そして、負荷がρの時には、遅延が負荷0%のときのG(C,ρ)倍になることを意味している。
G(C,ρ)については、(3)式に示したように、サーバのCPU個数とCPU使用率によって算出される。但し、(3)式をそのまま計算すると比較的時間がかかるので、分析の粒度が決まっている場合には、サーバのCPU数及びCPU使用率を変動させ、事前に算出することも可能である。例えば、分析の粒度が、CPU使用率においては1%単位で十分であり、且つ想定される1サーバあたりのCPUの個数が50個以下である場合、CPU使用率が0乃至99%(1%刻み)において、サーバのCPUが1乃至50個のそれぞれの場合におけるG(C,ρ)を予め算出しておき、それを100×50のマトリクスとしてGテーブル格納部1211に格納しておく。そうすれば、システム構成データ格納部1207からCPU個数を取得し、CPU使用率格納部1206からCPU使用率を取得し、Gーブル格納部1211からG(C,ρ)の値を取得することができる。
最終的には、(14)式に従って各サーバで発生する1リクエストあたりの平均遅延時間Ti (n,m)(以下、略して各サーバの平均遅延時間ともいう)が算出され、サーバ遅延時間格納部1214に格納される。
次に、層遅延時間算出部1215は、サーバ遅延時間格納部1214とシステム構成データ格納部1207とを参照して、各層における遅延時間Li nを算出し、層遅延時間格納部1216に格納する(ステップS11)。各層における遅延時間Li nは、各層のサーバの平均遅延時間の和であり、以下のように表される。Mnについてはシステム構成データ格納部1207から取得する。
Figure 2006046297
そして、システム遅延時間算出部1217は、層遅延時間格納部1216とシステム構成データ格納部1207とを参照して、システム全体の遅延時間Diを算出し、システム遅延時間格納部1218に格納する(ステップS13)。システム全体の遅延時間Diは、各層nにおける遅延時間Li nの和であり、以下のように表される。Nについてはシステム構成データ格納部1207から取得する。
Figure 2006046297
その後、残余遅延時間算出部1219は、遅延実測値格納部1205とシステム遅延時間格納部1218とを参照して、サーバ以外の箇所でかかる遅延時間Eiを算出し、残余遅延時間格納部1220に格納する(ステップS15)。遅延時間Eiは、システム全体の遅延時間Diと遅延実測値Aiの差であって、以下のように算出される。
Figure 2006046297
i<Diということは、上で述べたような推定結果が適切ではないということであり、そのような場合にはEi=0に設定される。
そして主にEi=0となった場合に遅延時間の補正を行うため、信頼度算出部1221は、残余遅延時間格納部1220と層遅延時間格納部1216とシステム構成データ格納部1207とリクエスト頻度格納部1204とCPU使用率格納部1206と遅延実測値格納部1205とを参照して、各層の平均遅延時間の信頼度を算出処理を実施し、処理結果を信頼度格納部1222に格納する(ステップS17)。この処理については図9を用いて説明する。まず、信頼度算出部1221は、第n層の消費CPU時間の総和ρとリクエスト頻度λとの間の相関係数を各層nの平均遅延時間の初期信頼度Ri nとして算出し、信頼度格納部1222に格納する(ステップS31)。correlを相関係数を求める関数とすると、以下のような式に従って信頼度Ri nを算出する。
Figure 2006046297
(15)式におけるcorrel関数の第1項が第n層における消費CPU時間の総和である。なお、相関係数も後の計算で用いられるため、各層につき保持しておく。
そして相関係数Ri nが負であるか判断する(ステップS33)。相関係数<0であれば信頼度Ri n=0と設定する(ステップS37)。消費CPU時間とリクエスト頻度の間には正の相関があることを仮定しており、負の相関に意味が無いためである。一方、相関係数≧0であれば、平均遅延実測値Aiよりシステム全体の推定遅延時間Diが長いか判断する(ステップS35)。Di>Aiが成り立つ場合には、あり得ない推定がなされており算出された遅延時間自体の信頼性が低いため、ステップS37に移行する。すなわち、信頼度Ri n=0と設定する。一方、Di≦Aiであれば、ステップS31で算出された相関係数をそのまま信頼度として使用する。
図5の説明に戻って、遅延時間補正部1223は、信頼度格納部1222と層遅延時間格納部1216とを参照して、信頼度に応じた遅延時間の補正を行い、補正遅延時間格納部1224に格納する(ステップS19)。なお、Ai≧Diであれば、本ステップはスキップされる。この処理については図10を用いて説明する。まず、遅延時間補正部1223は、層遅延時間格納部1216と信頼度格納部1222とを参照して、各層の遅延時間を信頼度の高い順にソートし、補正遅延時間格納部1224に格納する(ステップS41)。なお、信頼度が0の層が複数ある場合は、それらの相関係数の高い順にソートする。
そして、ソート結果に従って信頼度の高い順に層の遅延時間を加算し、当該加算値が平均遅延実測値未満の最大となるような信頼度の順番Bを特定する(ステップS43)。ここでPx=nを、第n層の信頼度Ri nの高さが上からx番目であるものとする。そうすると、Ri Px>Ri Px+1が常に成り立つ。そしてステップS43では以下の式を満たす最大のyを求める。これがBである。
Figure 2006046297
このようにして求められた信頼度B番目の層の遅延時間までについては補正は不要である。従って、信頼度B+1番目の層の遅延時間を以下のように補正する(ステップS45)。すなわち、第PB+1層の推定遅延時間Li Px+1について補正を行い、その結果をL'i Px+1とする。補正結果及び補正不要の層(信頼度B番目までの層)の遅延時間は、補正遅延時間格納部1224に格納される。
Figure 2006046297
この式は、遅延実測値と、各層の信頼度のうち、信頼度が高い方からB+1番目までの遅延時間(推定平均値)の総和とが等しくなるように信頼度B+1番目の層の遅延時間を補正する
また、信頼度B+1番目の層の信頼度を以下のように補正する(ステップS47)。すなわち、第PB+1層の信頼度Ri Px+1について補正を行い、その結果をR'i Px+1とする。補正結果及び補正不要の層(信頼度B番目までの層)の信頼度データは、補正遅延時間格納部1224に格納される。
Figure 2006046297
この式は、補正前の遅延時間と補正後の遅延時間の差が小さいほど、信頼度が高くなるように信頼度を補正している。
さらに、信頼度B+2番目以降の層の遅延時間及び信頼を以下のように補正する(ステップS49)。補正結果は、補正遅延時間格納部1224に格納される。
L'i Pn=0 (n>B+1)
R'i Pn=0 (n>B+1)
このような補正処理の具体例を図11(a)乃至(c)を用いて説明する。まず、図11(a)に遅延時間推定結果及び実測結果を示す。本例における監視対象システム100の第1層はWebサーバであり、第2層はアプリケーションサーバであり、第3層はDBサーバである。ここで、第1層の推定遅延時間は150msecであり、相関係数0.9で信頼度0である。第2層の推定遅延時間は60msecであり、相関係数0.85で信頼度0.85である。第3層の推定遅延時間は30msecであり、相関係数0.6で信頼度0.6である。なお、平均遅延実測値が100msecである。
そして、ステップS41でソートすると、図11(b)に示すように、各層は、第2層、第3層、第1層の順番に並べられ、システム全体の遅延時間は明らかに平均遅延実測値を超えており、システム全体の推定遅延時間は第1層の途中で超えてしまっている。
従って、図11(c)に示すように、第2層及び第3層については、遅延時間及び信頼度についてはそのまま用い、第1層の推定遅延時間については平均遅延実測値と第2層及び第3層の遅延時間の和との差に減らされ、10msecとなる。また信頼度も0.06(=10/150)に補正されている。
このようにして推定値を実測値に合わせるような補正がなされる。
図5の説明に戻って、入出力部121は、出力処理を実施する(ステップS21)。入出力部121が出力するデータは、(1)各サーバで発生する遅延時間の推定値Ti (n,m)、(2)各層で発生する遅延時間の推定値Li n、(3)システム全体で発生する遅延時間の推定値Di、(4)サーバ以外の箇所の遅延時間Ei、(5)各層の遅延時間の信頼度などである。信頼度の場合、値そのものを出力しても良いし、信頼度Ri nを例えば以下の3つのレベルに分類し、分類結果を出力するようにしても良い。すなわち、Ri n>0.7であれば信頼度「高」、0.7≧Ri n>0.3であれば信頼度「中」、0.3≧Ri nであれば信頼度「低」である。
上で述べたような信頼度の高中低の分類は、相関係数における相関の強さの判断に一般的に用いられている値である。すなわち、一般的に、相関係数の絶対値が0.7以上であれば、2つのパラメータの間に強い相関があると判断され、0.3乃至0.7程度であれば、弱い相関があると判断され、0.3以下であればほとんど無相関であるとされている。これは、相関係数の二乗が変動の説明率であることに起因している。そして、相関係数が0.7のとき、説明率は0.49(約50%)となる。すなわち、従属変数の変化のうち、半分程度がその説明変数によって説明可能である。また、相関係数が0.3のときは、説明率は0.1(約10%)となり、従属変数の変化のうち、説明変数に起因するものは約1割程度しかないため、説明変数と従属変数の間にはほとんど相関が無いとされる。
本実施例でも同様に考え、相関係数が0.7以上あれば、CPU使用率とリクエスト頻度の間に十分に相関があり、正しく1リクエストあたりの消費CPU時間を推定することができるため、信頼度が高くなると考えられる。また、この信頼度と予測誤差の関係の目安を、実験環境における実験結果から求めると、信頼度「高」であれば予測誤差±50%以内程度、信頼度「中」であれば予測誤差±100%以内程度、信頼度「低」であれば±100%以上の可能性が高い。但し、この結果はあくまでも実験結果に基づく目安であり、上記の精度(誤差範囲)を保障するものではない。
このようにすれば以上述べたように、各サーバ、各層、システム全体の遅延時間を、既に監視対象システム100に存在する要素を用いて算出することができるようになる。また、遅延実測値との関係から、遅延時間を補正することも可能であり、さらにその信頼度をユーザに提示することも可能である。
次に、上で述べたようなモデルを用いた性能予測について説明する。
まず、リクエスト頻度変動時の遅延時間の変化の推定について図12を用いて説明する。ここでは、ある時点iにおいて、リクエスト頻度がλであったとすると、リクエスト頻度がλからλ'に変化した場合の推定の平均遅延時間を算出するものとする。すなわち、入出力部121からλ'が入力され、遅延分析装置120の性能予測処理部1213が受け付ける(ステップS50)。そして、性能予測処理部1213は、リクエスト頻度の変更に応じて、全てのサーバS(n,m)についてCPU使用率ρを変更し、CPU使用率格納部1206に格納する(ステップS51)。CPU使用率ρについては以下のようにρ'に変更する。また、サーバ遅延時間算出部1210は、変更後のCPU使用率ρ'を用いて、変更後の各サーバの遅延時間T'i (n,m)を算出し、サーバ遅延時間格納部1214に格納する(ステップS53)。ステップS51及びS53における計算は以下のとおりになる。
Figure 2006046297
そして、層遅延時間算出部1215は、サーバ遅延時間格納部1214に格納された変更後の各サーバの遅延時間T'i (n,m)を用いて、変更後の各層における遅延時間を算出し、層遅延時間格納部1216に格納する(ステップS55)。さらに、システム遅延時間算出部1217は、層遅延時間格納部1216に格納された変更後の各層における遅延時間を用いて、変更後のシステム全体の遅延時間を算出し、システム遅延時間格納部1218に格納する(ステップS57)。
その後、入出力部121は、変更前と変更後の各遅延時間などを出力する(ステップS59)。これにより、ユーザは、リクエスト頻度の変動に応じた遅延時間の変化を考察することができるようになる。
次に、CPU数変動時における性能予測について図13を用いて説明する。ここでは、サーバS(n,m)のCPU個数をC(n,m)からC'(n,m)に変化させるものとする。従って、入出力部121からCPU個数C'(n,m)が入力され、遅延分析装置120の性能予測処理部1213が受け付ける(ステップS61)。そして、性能予測処理部1213は、CPU個数の変更に応じてCPU使用率ρを変更し、CPU使用率格納部1206に格納する(ステップS63)。CPU使用率ρについては、CPU個数の変更があったサーバについてのみ以下のようにρ'に変更する。また、サーバ遅延時間算出部1210は、変更後のCPU使用率ρ'を用いて、CPU個数が変更された各サーバの遅延時間T'i (n,m)を算出し、サーバ遅延時間格納部1214に格納する(ステップS65)。ステップS63及びS65における計算は以下のとおりになる。
Figure 2006046297
そして層遅延時間算出部1215は、サーバ遅延時間格納部1214に格納された変更後のサーバの遅延時間T'i (n,m)を用いて、変更に係る層における遅延時間を算出し、層遅延時間格納部1216に格納する(ステップS67)。さらに、システム遅延時間算出部1217は、層遅延時間格納部1216に格納された各層における遅延時間を用いて、変更後のシステム全体の遅延時間を算出し、システム遅延時間格納部1218に格納する(ステップS68)。
その後、入出力部121は、変更前と変更後の各遅延時間などを出力する(ステップS69)。これにより、ユーザは、CPU個数の変動に応じた遅延時間の変化を考察することができるようになる。例えばこの結果を用いてCPU個数を増加させた場合の効果を検討する。
次に、サーバ数変動時における性能予測について図14を用いて説明する。ここでは、第n層のサーバ数をMnからM'nに変化させたときの推定遅延時間を求めるものとする。従って、入出力部121から第n層のサーバ数M'nが入力され、遅延分析装置120の性能予測処理部1213が受け付ける(ステップS71)。そして、性能予測処理部1213は、サーバ数の変更に応じて1リクエストあたりの消費CPU時間を補正し、CPU時間格納部1209に格納する(ステップS73)。1リクエストあたりの消費CPU時間1/μ(n,m)については、以下のように1/μ'(n,m)に変更する。また、性能予測処理部1213は、1リクエストあたりの消費CPU時間の補正に応じて、CPU使用率ρを補正し、CPU使用率格納部1206に格納する(ステップS75)。CPU使用率ρについては、以下のようにρ'に変更する。
Figure 2006046297
なお、α(n,m)は、1/μ(n,m)を算出する際に求めた切片であり、CPU時間格納部1209に格納されているのでこれを用いる。
次に、サーバ遅延時間算出部1210は、CPU使用率格納部1206に格納された変更後のCPU使用率ρ'及びCPU時間格納部1209に格納された変更後の1リクエストあたりの消費CPU時間1/μ'(n,m)を用いて、変更後のサーバ遅延時間を算出し、サーバ遅延時間格納部1214に格納する(ステップS77)。変更後のサーバ遅延時間T'i (n,m)は以下のように表される。
Figure 2006046297
そして、層遅延時間算出部1215は、サーバ遅延時間格納部1214に格納された変更後のサーバの遅延時間T'i (n,m)を用いて、各層における遅延時間を算出し、層遅延時間格納部1216に格納する(ステップS79)。なお、本ステップにおいても性能予測処理部1213からのM'nを用いて以下のような計算を行う。
Figure 2006046297
なお、(16)式からL'i nは、以下のようにも表れる。
Figure 2006046297
さらに、システム遅延時間算出部1217は、層遅延時間格納部1216に格納された各層における遅延時間を用いて、変更後のシステム全体の遅延時間を算出し、システム遅延時間格納部1218に格納する(ステップS81)。
その後、入出力部121は、変更前と変更後の各遅延時間などを出力する(ステップS83)。これにより、ユーザは、サーバ個数の変動に応じた遅延時間の変化を考察することができるようになる。例えばこの結果を用いてサーバ個数を増加させた場合の効果を検討する。
以上本発明の実施例を説明したが、本発明はこれに限定するものではない。例えば、図4A及び図4Bに示した機能ブロック図は一例であって、必ずしも実際のプログラム構成に対応しない場合もある。また、出力処理については、数値をそのまま表示するだけではなく、図15に示すようなテーブル(1リクエストあたりの消費CPU時間、CPU使用率、サーバ毎の平均遅延時間、各層の平均遅延時間、遅延実測値、サーバ以外の推定遅延時間、各層の遅延時間の信頼度を単位時間i毎に表示するテーブル)や、図16に示すようなグラフ(横軸が時刻、縦軸が遅延時間を表し、Webサーバ(第1層)、アプリケーションサーバ(第2層)、DBサーバ(第3層)、その他についての遅延時間の時間変化を表すグラフ)を生成して、表示させるようにしても良い。なお、図16のグラフを見れば、9時から12時の通常時には、ほぼWebサーバの遅延が全体の半分以上になっており(図16中の部分A)、12時から15時にDBサーバの一時的な負荷増大によりレスポンスが著しく低下しており(図16中の部分B)、18時以降サーバ以外の遅延時間が増加しており、何らかの問題が発生したかもしれないこと(図16中の部分C)などを判断することができるようになる。
また、上で述べた遅延分析装置120は、コンピュータ装置であって、図17に示すように、メモリ2501(記憶部)とCPU2503(処理部)とハードディスク・ドライブ(HDD)2505と表示装置2509に接続される表示制御部2507とリムーバブル・ディスク2511用のドライブ装置2513と入力装置2515とネットワークに接続するための通信制御部2517とがバス2519で接続されている。オペレーティング・システム(OS:Operating System)及び本実施例における処理を実施するためのアプリケーション・プログラムは、HDD2505に格納されており、CPU2503により実行される際にはHDD2505からメモリ2501に読み出される。必要に応じてCU2503は、表示制御部2507、通信制御部2517、ドライブ装置2513を制御して、必要な動作を行わせる。また、処理途中のデータについては、メモリ2501に格納され、必要があればHDD2505に格納される。本発明の実施例では、上で述べた処理を実施するためのアプリケーション・プログラムはリムーバブル・ディスク2511に格納されて頒布され、ドライブ装置2513からHDD2505にインストールされる。インターネットなどのネットワーク及び通信制御部2517を経由して、HDD2505にインストールされる場合もある。このようなコンピュータ装置は、上で述べたCPU2503、メモリ2501などのハードウエアとOS及び必要なアプリケーション・プログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。
図1は、本発明の原理を説明するための図である。 図2は、本発明の原理を説明するための図である。 図3は、本発明の実施例におけるシステム全体を説明するための図である。 図4Aは、本発明の実施例における遅延時間分析装置の機能ブロックである。 図4Bは、本発明の実施例における遅延時間分析装置の機能ブロックである。 図5は、本発明の実施例におけるメインの処理フローを示す図である。 図6は、取得データの一例を示す図である。 図7(a)及び(b)は、回帰計算を説明するための図である。 図8は、ビジネス時間に回帰計算の対象を限定する理由を説明するための図である。 図9は、信頼度算出処理の処理フローを示す図である。 図10は、信頼度に応じた遅延時間の補正処理の処理フローを示す図である。 図11(a)乃至(c)は、信頼度に応じた遅延時間の補正処理の具体例を説明するための図である。 図12は、リクエスト頻度変動時の遅延時間変化の推定処理の処理フローを示す図である。 図13は、CPU数変動時の遅延時間変化の推定処理の処理フローを示す図である。 図14は、サーバ数変動時の遅延時間変化の推定処理の処理フローを示す図である。 図15は、処理結果のテーブル化の一例を示す図である。 図16は、処理結果のグラフ化の一例を示す図である。 図17は、コンピュータの機能ブロック図である。

Claims (15)

  1. 複数のサーバを含むコンピュータ・システムのレスポンスに関する分析を行う分析装置であって、
    前記コンピュータ・システムから前記複数のサーバの各々のCPU使用率のデータを取得し、CPU使用率格納部に格納する手段と、
    前記コンピュータ・システムにおいて生成される処理履歴データを取得し、前記コンピュータ・システムのユーザによるリクエスト頻度のデータを生成し、リクエスト頻度データ格納部に格納する手段と、
    前記CPU使用率格納部に格納された各サーバのCPU使用率と前記リクエスト頻度格納部に格納された前記リクエスト頻度とを用いて、各前記サーバにおける平均遅延時間を推定し、サーバ遅延時間格納部に格納する推定手段と、
    を有する分析装置。
  2. 前記推定手段は、
    前記CPU使用率格納部に格納された各前記サーバのCPU使用率と前記リクエスト頻度格納部に格納された前記リクエスト頻度と用いて、各前記サーバの1リクエストあたりの平均消費CPU時間を推定し、消費CPU時間格納部に格納する消費CPU時間推定手段と、
    前記消費CPU時間格納部に格納された各前記サーバの1リクエストあたりの平均消費CPU時間と前記CPU使用率格納部に格納された各サーバのCPU使用率とを用いて、各前記サーバにおける平均遅延時間を推定し、前記サーバ遅延時間格納部に格納するサーバ遅延時間推定手段と、
    を含む請求項1記載の分析装置。
  3. 前記消費CPU時間推定手段が、
    予め指定された時間帯における各前記サーバのCPU使用率と前記リクエスト頻度とを用いて回帰分析を実施することにより、各前記サーバの1リクエストあたりの平均消費CPU時間を推定する
    ことを特徴とする請求項2記載の分析装置。
  4. 前記サーバ遅延時間推定手段が、
    前記サーバの1リクエストあたりの平均消費CPU時間と当該サーバにおける平均遅延時間との関係を表す係数値を当該係数値を決定する要素である前記CPU使用率の所定単位毎及びCPU個数毎に格納するマトリクス格納部を参照して該当する係数値を読み出し、当該係数値と前記サーバの1リクエストあたりの平均消費CPU時間とから前記サーバにおける平均遅延時間を算出する
    ことを特徴とする請求項2記載の分析装置。
  5. 前記コンピュータ・システムに含まれる複数のサーバが、実行する業務種別に応じてカテゴリ分けされている場合、当該カテゴリ毎に平均遅延時間を推定する手段
    をさらに含む請求項1記載の分析装置。
  6. 前記サーバ遅延時間格納部に格納されたデータを用いて、前記コンピュータ・システム全体の平均遅延時間を推定し、システム遅延時間格納部に格納する手段
    をさらに含む請求項1記載の分析装置。
  7. 前記コンピュータ・システムにおける、ユーザによるリクエストに対するレスポンス時間の平均実測値を取得し、平均実測値格納部に格納する手段と、
    前記平均実測値格納部に格納された平均実測値と前記システム遅延時間格納部に格納された前記コンピュータ・システム全体の平均遅延時間との差により、サーバ以外の箇所で発生した遅延時間を推定する手段と、
    をさらに含む請求項6記載の分析装置。
  8. 前記カテゴリ毎に、平均消費CPU時間の総和とリクエスト頻度との相関係数を算出し、当該相関係数に基づき前記カテゴリ毎の平均遅延時間の信頼度を決定し、信頼度データ格納部に格納する手段と、
    前記信頼度データ格納部に格納された前記カテゴリ毎の平均遅延時間の信頼度に基づき、前記カテゴリ毎の平均遅延時間を補正し、記憶装置に格納する補正手段と、
    をさらに含む請求項7記載の分析装置。
  9. 前記補正手段が、
    前記カテゴリ毎の平均遅延時間を信頼度の高い順にソートする手段と、
    前記信頼度の高い順に前記カテゴリ毎の平均遅延時間を累積してゆき、累積された平均遅延時間が前記遅延実測値未満であって最大の値を有することとなる信頼度の順番を特定する手段と、
    特定された前記信頼度の順番の次の順番の遅延時間を、前記遅延実測値と前記信頼度の高い順に前記カテゴリ毎の平均遅延時間を特定された前記信頼度の順番まで累積することにより得られる値との差に補正する手段と、
    を含む請求項8記載の分析装置。
  10. リクエスト頻度が変更された場合、当該変更後のリクエスト頻度に応じて各前記サーバのCPU使用率を変更し、記憶装置に格納する手段と、
    前記記憶装置に格納された変更後の各前記サーバのCPU使用率を用いて、各前記サーバにおける平均遅延時間を推定し、記憶装置に格納する手段と、
    前記サーバ遅延時間格納部及び前記記憶装置に格納された変更前後の各前記サーバの平均遅延時間を比較可能な態様で出力する手段と、
    をさらに含む請求項1記載の分析装置。
  11. CPU数が変更された場合、当該変更後のCPU数に応じて各前記サーバのCPU使用率を変更し、記憶装置に格納する手段と、
    前記記憶装置に格納された変更後の各前記サーバのCPU使用率と前記変更後のCPU数とを用いて、各前記サーバにおける平均遅延時間を推定し、記憶装置に格納する手段と、
    前記サーバ遅延時間格納部及び前記記憶装置に格納された変更前後の各前記サーバの平均遅延時間を比較可能な態様で出力する手段と、
    をさらに含む請求項1記載の分析装置。
  12. サーバ数が変更された場合、当該変更後のサーバ数に応じて各前記サーバの1リクエストあたりの平均消費CPU時間を算出し、記憶装置に格納する手段と、
    CPU個数と前記記憶装置に格納された変更後の各前記サーバの1リクエストあたりの平均消費CPU時間とを用いて、変更後における各前記サーバのCPU使用率を算出し、記憶装置に格納する手段と、
    前記記憶装置に格納された変更後の各前記サーバの1リクエストあたりの平均消費CPU時間と前記変更後における各前記サーバのCPU使用率とを用いて、変更後における各前記サーバの平均遅延時間を推定し、記憶装置に格納する手段と、
    をさらに含む請求項2記載の分析装置。
  13. 前記記憶装置に格納された前記変更後における各前記サーバの平均遅延時間と変更後のサーバ数とを用いて、前記コンピュータ・システムに含まれる前記複数のサーバを実行する業務種別に応じて分けることにより規定されるカテゴリ毎の平均遅延時間を推定し、記憶装置に格納する手段
    をさらに含む請求項12記載の分析装置。
  14. 請求項1乃至13のいずれか1つ記載の分析装置における各手段をコンピュータに実現させるためのプログラム。
  15. 複数のサーバを含むコンピュータ・システムのレスポンスに関する分析を行う分析方法であって、
    前記コンピュータ・システムから前記複数のサーバの各々のCPU使用率のデータを取得し、CPU使用率格納部に格納するステップと、
    前記コンピュータ・システムにおいて生成される処理履歴データを取得し、前記コンピュータ・システムのユーザによるリクエスト頻度のデータを生成し、リクエスト頻度データ格納部に格納するステップと、
    前記CPU使用率格納部に格納された各サーバのCPU使用率と前記リクエスト頻度格納部に格納された前記リクエスト頻度とを用いて、各前記サーバにおける平均遅延時間を推定し、サーバ遅延時間格納部に格納する推定ステップと、
    を含み、コンピュータにより実行される分析方法。
JP2006542174A 2004-10-28 2004-10-28 分析方法及び装置 Expired - Fee Related JP4180638B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2004/016051 WO2006046297A1 (ja) 2004-10-28 2004-10-28 分析方法及び装置

Publications (2)

Publication Number Publication Date
JPWO2006046297A1 true JPWO2006046297A1 (ja) 2008-05-22
JP4180638B2 JP4180638B2 (ja) 2008-11-12

Family

ID=36227549

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006542174A Expired - Fee Related JP4180638B2 (ja) 2004-10-28 2004-10-28 分析方法及び装置

Country Status (4)

Country Link
US (1) US8560667B2 (ja)
EP (1) EP1806658B1 (ja)
JP (1) JP4180638B2 (ja)
WO (1) WO2006046297A1 (ja)

Families Citing this family (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4711672B2 (ja) * 2004-12-24 2011-06-29 富士通株式会社 情報処理方法及びプログラム
US20070136302A1 (en) * 2005-12-12 2007-06-14 Microsoft Corporation Automated device blog creation
JP2007310836A (ja) * 2006-05-22 2007-11-29 Daiwa Securities Group Inc 評価装置及び設計装置、評価方法及び設計方法、評価用プログラム及び設計用プログラム並びに情報記録媒体
US8171133B2 (en) 2006-07-10 2012-05-01 Nec Corporation Management apparatus and management method for computer system
US8914774B1 (en) 2007-11-15 2014-12-16 Appcelerator, Inc. System and method for tagging code to determine where the code runs
US8954989B1 (en) 2007-11-19 2015-02-10 Appcelerator, Inc. Flexible, event-driven JavaScript server architecture
US8260845B1 (en) 2007-11-21 2012-09-04 Appcelerator, Inc. System and method for auto-generating JavaScript proxies and meta-proxies
US8719451B1 (en) 2007-11-23 2014-05-06 Appcelerator, Inc. System and method for on-the-fly, post-processing document object model manipulation
US8566807B1 (en) 2007-11-23 2013-10-22 Appcelerator, Inc. System and method for accessibility of document object model and JavaScript by other platforms
US8819539B1 (en) 2007-12-03 2014-08-26 Appcelerator, Inc. On-the-fly rewriting of uniform resource locators in a web-page
US8806431B1 (en) 2007-12-03 2014-08-12 Appecelerator, Inc. Aspect oriented programming
US8756579B1 (en) 2007-12-03 2014-06-17 Appcelerator, Inc. Client-side and server-side unified validation
US8938491B1 (en) 2007-12-04 2015-01-20 Appcelerator, Inc. System and method for secure binding of client calls and server functions
US8527860B1 (en) 2007-12-04 2013-09-03 Appcelerator, Inc. System and method for exposing the dynamic web server-side
US8285813B1 (en) 2007-12-05 2012-10-09 Appcelerator, Inc. System and method for emulating different user agents on a server
US8639743B1 (en) 2007-12-05 2014-01-28 Appcelerator, Inc. System and method for on-the-fly rewriting of JavaScript
US8335982B1 (en) 2007-12-05 2012-12-18 Appcelerator, Inc. System and method for binding a document object model through JavaScript callbacks
US20090217282A1 (en) * 2008-02-26 2009-08-27 Vikram Rai Predicting cpu availability for short to medium time frames on time shared systems
US8224624B2 (en) * 2008-04-25 2012-07-17 Hewlett-Packard Development Company, L.P. Using application performance signatures for characterizing application updates
US8291079B1 (en) 2008-06-04 2012-10-16 Appcelerator, Inc. System and method for developing, deploying, managing and monitoring a web application in a single environment
US8880678B1 (en) * 2008-06-05 2014-11-04 Appcelerator, Inc. System and method for managing and monitoring a web application using multiple cloud providers
US20090307347A1 (en) * 2008-06-08 2009-12-10 Ludmila Cherkasova Using Transaction Latency Profiles For Characterizing Application Updates
US7596620B1 (en) 2008-11-04 2009-09-29 Aptana, Inc. System and method for developing, deploying, managing and monitoring a web application in a single environment
US8019858B2 (en) * 2008-09-09 2011-09-13 International Business Machines Corporation System and method for utilizing system lag to send facts to an end user
US7925748B2 (en) * 2008-10-24 2011-04-12 International Business Machines Corporation System and method for managing system resources in a network environment
US7930395B2 (en) * 2008-12-01 2011-04-19 International Business Machines Corporation System and method for managing system resources in a network environment
US20110153828A1 (en) * 2009-12-17 2011-06-23 Korea Advanced Institute Of Science And Technology Load balancing apparatus and method for regulating load using the same
JP5418250B2 (ja) * 2010-01-26 2014-02-19 富士通株式会社 異常検出装置、プログラム、及び異常検出方法
CA2806549C (en) 2010-07-26 2014-10-28 Seven Networks, Inc. Context aware traffic management for resource conservation in a wireless network
EP2599003B1 (en) * 2010-07-26 2018-07-11 Seven Networks, LLC Mobile network traffic coordination across multiple applications
CA2798523C (en) 2010-11-22 2015-02-24 Seven Networks, Inc. Aligning data transfer to optimize connections established for transmission over a wireless network
JP5871192B2 (ja) * 2010-12-24 2016-03-01 日本電気株式会社 監視データ分析装置、監視データ分析方法および監視データ分析プログラム
WO2012086444A1 (ja) * 2010-12-24 2012-06-28 日本電気株式会社 監視データ分析装置、監視データ分析方法および監視データ分析プログラム
CN103116524A (zh) * 2011-11-16 2013-05-22 鸿富锦精密工业(深圳)有限公司 Cpu使用率调整系统及方法
JP5794181B2 (ja) 2012-03-15 2015-10-14 富士通株式会社 プログラム、分析方法、情報処理装置
JP6075226B2 (ja) 2013-06-26 2017-02-08 富士通株式会社 プログラム、仮想マシン管理方法および情報処理装置
JP6079476B2 (ja) 2013-06-26 2017-02-15 富士通株式会社 分析支援プログラム、分析支援装置、および分析支援方法
US10169182B2 (en) 2014-07-31 2019-01-01 International Business Machines Corporation Monitoring levels of utilization of device
US9537740B2 (en) 2014-07-31 2017-01-03 International Business Machines Corporation Monitoring device usage
US9998347B2 (en) 2014-07-31 2018-06-12 International Business Machines Corporation Monitoring device usage
US10102103B2 (en) 2015-11-11 2018-10-16 International Business Machines Corporation System resource component utilization
JP6878068B2 (ja) * 2017-03-21 2021-05-26 株式会社エヌ・ティ・ティ・データ 識別情報付与システム及び識別情報付与方法
US10649876B2 (en) 2017-04-20 2020-05-12 International Business Machines Corporation Maintaining manageable utilization in a system to prevent excessive queuing of system requests
US10394643B2 (en) * 2017-08-16 2019-08-27 National Instruments Corporation Distributed run-time auto-calculation of measurement uncertainty
US11023280B2 (en) 2017-09-15 2021-06-01 Splunk Inc. Processing data streams received from instrumented software using incremental finite window double exponential smoothing

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5255350A (en) 1975-10-30 1977-05-06 Nec Corp System recomposition control unit
JPS5851362A (ja) 1981-09-24 1983-03-26 Hitachi Ltd 計算機システムの性能予測方式
JPS6237763A (ja) * 1985-08-12 1987-02-18 Fujitsu Ltd キヤパシテイプランニングにおける捕捉率自動算出方式
JPH05324358A (ja) * 1992-05-20 1993-12-07 Hitachi Ltd 性能予測装置
JPH05334102A (ja) * 1992-05-28 1993-12-17 Nec Corp ジョブ実行状況予測装置
JPH0695931A (ja) * 1992-09-14 1994-04-08 Toshiba Corp システム実行性能評価支援装置
WO1994009429A1 (en) 1992-10-13 1994-04-28 Zitel Corporation Method and system for computer performance evaluation
JPH09305417A (ja) 1996-05-13 1997-11-28 Nec Corp Cpu使用率最適化方式
US6230183B1 (en) * 1998-03-11 2001-05-08 International Business Machines Corporation Method and apparatus for controlling the number of servers in a multisystem cluster
JP3270012B2 (ja) * 1998-09-08 2002-04-02 富士通株式会社 ネットワークサーバ負荷検出装置、割当装置および方法
US6243105B1 (en) * 1998-11-19 2001-06-05 Ncr Corporation Drill-down method to historical data in a performance monitor using a platform independent program
JP4739472B2 (ja) * 1998-12-04 2011-08-03 新日鉄ソリューションズ株式会社 性能予測装置および方法、記録媒体
US6557035B1 (en) * 1999-03-30 2003-04-29 International Business Machines Corporation Rules-based method of and system for optimizing server hardware capacity and performance
JP3663968B2 (ja) * 1999-04-14 2005-06-22 日本電気株式会社 マルチタスクシステムの性能予測システム及び予測方法並びにその方法プログラムを記録した記録媒体
JP2001109638A (ja) * 1999-10-06 2001-04-20 Nec Corp 推定伸長率に基づくトランザクション負荷分散方法及び方式並びにコンピュータ可読記録媒体
JP2002099448A (ja) * 2000-09-21 2002-04-05 Ntt Data Corp 性能監視装置、及びその方法
JP2002132543A (ja) 2000-10-25 2002-05-10 Hitachi Ltd 計算機システムの管理方法
US6671658B2 (en) 2000-12-23 2003-12-30 Hewlett-Packard Development Company, L.P Method for service level estimation in an operating computer system
JP2002268922A (ja) 2001-03-09 2002-09-20 Ntt Data Corp Wwwサイトの性能監視装置
JP2002342182A (ja) * 2001-05-21 2002-11-29 Hitachi Ltd ネットワークシステムにおける運用管理の支援システム
JP2003032306A (ja) 2001-07-19 2003-01-31 Hitachi Electronics Service Co Ltd Webサーバの回線毎の応答性能予測システム
US6792393B1 (en) * 2001-12-03 2004-09-14 At&T Corp. System and method for diagnosing computer system operational behavior
JP2003178040A (ja) * 2001-12-10 2003-06-27 Hitachi Information Systems Ltd ウェブサイトの構成決定支援方法
JP2003263342A (ja) * 2002-03-07 2003-09-19 Telecommunication Advancement Organization Of Japan 情報処理装置の監視装置および監視方法並びにそのプログラム
US7222245B2 (en) * 2002-04-26 2007-05-22 Hewlett-Packard Development Company, L.P. Managing system power based on utilization statistics
JP2004005135A (ja) * 2002-05-31 2004-01-08 Nippon Telegr & Teleph Corp <Ntt> サーバ性能推定方法およびサーバ性能推定装置
JP2004021756A (ja) * 2002-06-19 2004-01-22 Hitachi Ltd 情報システム性能の統計的予測方法
JP2004046734A (ja) * 2002-07-15 2004-02-12 Fuji Electric Holdings Co Ltd Webシステム性能予測装置、Webシステム性能予測方法、及びプログラム
JP2004193816A (ja) * 2002-12-10 2004-07-08 Hitachi Ltd ネットワーク評価システム
JP2004272582A (ja) * 2003-03-07 2004-09-30 Toshiba Corp 計算機システムの性能予測プログラムおよび設計支援システム

Also Published As

Publication number Publication date
JP4180638B2 (ja) 2008-11-12
US8560667B2 (en) 2013-10-15
EP1806658A1 (en) 2007-07-11
EP1806658B1 (en) 2016-04-13
US20070214261A1 (en) 2007-09-13
EP1806658A4 (en) 2009-07-29
WO2006046297A1 (ja) 2006-05-04

Similar Documents

Publication Publication Date Title
JP4180638B2 (ja) 分析方法及び装置
US8296426B2 (en) System and method for performing capacity planning for enterprise applications
US7243049B1 (en) Method for modeling system performance
Gmach et al. Capacity management and demand prediction for next generation data centers
JP6571914B2 (ja) 情報の複数のドメインを組合せることによる仕事の実施データ内の異常の検知
US9772923B2 (en) Fast OLAP for real user measurement of website performance
US9389668B2 (en) Power optimization for distributed computing system
US20110016469A1 (en) Deleting data stream overload
CN107707431A (zh) 一种面向云平台的数据安全监测方法及系统
JP5954430B2 (ja) 運用管理装置、及び、運用管理方法
US20190026108A1 (en) Recommendations based on the impact of code changes
JP2002268922A (ja) Wwwサイトの性能監視装置
WO2004053726A2 (en) Apparatus and methods for classification of web sites
Zhang et al. Real-time performance prediction for cloud components
JP4843379B2 (ja) 計算機システムの開発プログラム
CN107844496B (zh) 统计信息输出方法及装置
Awad et al. On the predictive properties of performance models derived through input-output relationships
US20220050761A1 (en) Low overhead performance data collection
CN111274112A (zh) 应用程序压测方法、装置、计算机设备和存储介质
Jihan et al. PERF-Expert: Novel Approach for Dynamically Forecasting the Performance of Cloud-Based Integrations with Zero Performance Tests
CN117435509B (zh) 接口数据的动态比对方法、动态比对设备和存储介质
Bogárdi-Mészöly et al. Novel Models and Algorithms for Queue Limit Modeling
Casale et al. Versatile models of systems using map queueing networks
CN111400152A (zh) 数据处理方法以及第一服务器和第二服务器
CN117952312A (en) Cold and hot load prediction method and device, storage medium and computer equipment

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080513

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080710

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20080826

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20080827

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110905

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120905

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120905

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130905

Year of fee payment: 5

LAPS Cancellation because of no payment of annual fees