図1は、本発明の一実施形態に係る情報処理装置を適用したネットワークシステムの構成例を示した図である。図1に示すように、ネットワークシステムは、情報処理装置1と、Webシステム2と、端末装置3と、ネットワーク4とを有している。ネットワーク4は、例えば、インターネットである。
Webシステム2は、Webサーバ2a,2bを有している。図1では、Webシステム2は、2台のWebサーバ2a,2bを有しているが、1台であってもよいし、3台以上であってもよい。
端末装置3は、ネットワーク4を介して、Webシステム2(Webサーバ2a,2b)に接続されている。端末装置3は、Webシステム2に対し、リクエストデータを送信する。リクエストデータには、例えば、URL(Uniform Resource Locator)やリクエストパラメータ等が含まれる。Webシステム2(Webサーバ2a,2b)は、端末装置3からのリクエストデータに応じて所定の処理を行い、処理結果を端末装置3に送信する。図1では、端末装置3は、1台しか示していないが、2台以上であってもよい。
Webシステム2は、以下で詳細に説明するが、プロセスごとに流量制御パラメータを有している。流量制御パラメータには、端末装置3からのリクエストデータを一時記憶するキューの最大サイズ(リクエストデータを記憶できる最大の件数)を示す最大キュー長と、Webシステム2内のプロセスがリクエストデータを並列処理できる最大数を示す最大同時実行件数とが含まれる。Webシステム2は、最大キュー長と最大同時実行件数との変更によって、リクエストデータの処理時間を変更することができる。
情報処理装置1は、ネットワーク4を介して、Webシステム2(Webサーバ2a,2b)と接続されている。情報処理装置1は、例えば、Webシステム2を管理する管理者からの指示に応じて、Webシステム2から稼働データを受信し、受信した稼働データに基づいて、新たな流量制御パラメータを算出する。そして、情報処理装置1は、算出した新たな流量制御パラメータをWebシステム2に送信する。
情報処理装置1は、Webシステム2の稼働データに応じた、適切な流量制御パラメータを算出する。これにより、Webシステム2は、端末装置3からのリクエストデータに対し、より早い応答を返すことが可能となる。
図2は、図1のシステムの動作概要を説明するシーケンス図である。図2のシーケンス図は、例えば、端末装置3がユーザから所定の操作を受付けると実行される。Webシステム2の処理は、図2に示すように、Webサーバリクエスト受付け処理と、処理待ちキューと、アプリケーション処理プロセスと、back end sub systemとの処理に分けられる。
まず、端末装置3は、例えば、Webシステム2で処理してもらうリクエストデータを生成する(ステップS1)。
次に、端末装置3は、生成したリクエストデータを、ネットワーク4を介して、図1に図示していない負荷分散機に送信する(ステップS2,S3)。
次に、負荷分散機は、端末装置3からリクエストデータを受信し、受信したリクエストデータを処理するWebサーバ2a,2bを選択する(ステップS4)。例えば、負荷分散機は、リクエストデータに含まれるURL等の処理識別情報に基づいて、受信したリクエストデータを処理するWebサーバ2a,2bを選択する。
次に、Webシステム2(Webサーバ2a,2b)は、端末装置3から受信したリクエストデータ(以下では、リクエストデータを処理リクエストと呼ぶことがある)を一時記憶するキューが、最大キュー長を超えるか否か判定する(ステップS5)。Webシステム2は、処理リクエストを一時記憶するキューが、最大キュー長を超える場合、ステップS12へ処理を移行する。Webシステム2は、処理リクエストを一時記憶するキューが、最大キュー長を超えない場合、ステップS6へ処理を移行する。
なお、図2の矢印A1には、現在、処理リクエストが一時記憶されているキューを示している。矢印A1に示すキューには、L個の処理リクエストが一時記憶されている。
ステップS5にて、Webシステム2は、処理リクエストを一時記憶するキューが、最大キュー長を超えないと判定した場合(ステップS5で「No」の場合)、受信した処理リクエストを、空のキューに記憶する(ステップS6)。
次に、Webシステム2は、キューに記憶されている処理リクエストを並列処理する(ステップS7)。なお、図2のWebシステム2の最大同時実行件数は、矢印A2に示すように「M」である。また、Webシステム2は、矢印A3に示すように、アプリケーションプロセスの処理の一部を「back end sub system」に委譲し、非同期で処理することもある。
次に、Webシステム2は、処理した処理リクエストの結果(レスポンスデータ)を、ネットワーク4を介して、端末装置3に送信する(ステップS8,S9)。
次に、端末装置3は、Webシステム2から送信されたレスポンスデータを受信し、受信したレスポンスデータを、例えば、ディスプレイに表示する(ステップS10,S11)。
ステップS5にて、Webシステム2は、処理リクエストを一時記憶するキューが、最大キュー長を超えていると判定した場合(ステップS5で「Yes」の場合)、ネットワーク4を介して、処理エラーを示す、エラーレスポンスデータを端末装置3に送信する(ステップS12)。なお、端末装置3は、Webシステム2から受信したエラーレスポンスデータを、例えば、ディスプレイに表示する(ステップS10,S11)。
なお、矢印A11に示すように、ステップS5からステップS8までの処理に要した時間を「内部保留時間」と呼ぶ。すなわち、Webシステム2が、端末装置3からの処理リクエストを受信してから、レスポンスデータを端末装置3に送信するまでの時間を「内部保留時間」と呼ぶ。
また、矢印A12に示すように、ステップS1からステップS2までの処理に要した時間を「クライアント側時間」と呼ぶ。すなわち、端末装置3が処理リクエストを生成してから送信するまでの時間を「クライアント側時間」と呼ぶ。
また、矢印A13に示すように、ステップS1からステップS5と、ステップS12との処理に要した時間を「エラー応答時間」と呼ぶ。すなわち、端末装置3が処理リクエストを生成して、処理エラーを示すエラーレスポンスデータを受信するまでの時間を「エラー応答時間」と呼ぶ。
また、矢印A14に示すように、ステップS1からステップS11までの処理に要した時間を「正常応答時間」と呼ぶ。すなわち、端末装置3が処理リクエストを生成して、正常なレスポンスデータを受信するまでの時間を「正常応答時間」と呼ぶ。
また、矢印A15に示すように、ステップS10からステップS11までの処理に要した時間を「クライアント側時間」と呼ぶ。すなわち、端末装置3がWebシステム2からレスポンスデータを受信してから、ディスプレイに表示するまでの時間を「クライアント側時間」と呼ぶ。
なお、矢印A14に示す「正常応答時間」は、矢印A12に示す「クライアント側時間」と、矢印A11に示す「内部保留時間」と、矢印A15に示す「クライアント側時間」とを合計した時間となる。
ここで、内部保留時間は、流量制御パラメータによって制御される処理の処理時間のみを含むものである。一方、「正常応答時間」や「エラー応答時間」等の「応答時間」は、流量制御パラメータによって制御されない処理の処理時間を含むので、「応答時間」から流量制御パラメータを算出しようとする方式は、正確性を欠く方式であることが判る。
また、Webシステム2が記録する稼働データには、流量制御パラメータによって処理に要する時間が変わる「正常なレスポンスデータを生成する為に要した内部保留時間」と、流量制御パラメータによって処理に要する時間が変らない「S3、S4からS12まで」の「エラーレスポンスデータを生成する為に要した内部保留時間」が記録される場合があるが、稼働データに内部保留時間と共に記録されるHTTP status code等によって、エラーレスポンスデータであったか否かを判別可能である。
[内部保留時間とキューの使用数と最大同時実行件数との関係の説明]
次に、Webシステム2の「内部保留時間」の、「キューの使用数とリクエストデータの並列処理数とを合計した内部保留リクエスト件数」と「最大同時実行件数」への近似式について説明する。
Webシステム2は、Webサーバ2a,2bによって、処理リクエストを一時記憶するキューA1(例えば、図2に示す矢印A1)と、処理リクエストを並列処理するデータ処理部A2(例えば、図2に示す矢印A2)とを備えたデータ処理構造を実現している。
処理リクエストを並列処理するデータ処理部A2は、「最大同時実行件数(max Threads)」「M」以下のリクエストデータを並列処理し、それを「同時実行件数」という。
また、プロセスごとまたは処理識別子ごとに設定可能な「同時実行件数の上限値」を「最大同時実行件数(max Threads)」と呼ぶ。
最大同時実行件数設定値「M」を超えるリクエストが受け付けられ、キューA1に処理リクエストが一時記憶されている数を「キューの使用数(queue size)」という。
さらに、リクエスト受付部S5では、「キューの使用数(queue size)」の上限値として「最大キュー長」も備える。
そして、「同時実行件数」と「キューの使用数」とを合計した値を、「内部保留リクエスト件数」「L」と呼ぶ。
Webシステム2の「内部保留時間」の近似式は、次の式(1)、式(2)に示すように、内部保留リクエスト件数「L」と、データ処理部の最大同時実行件数「M」と、係数「p」、「q」、「r」とによって表すことができる。
式(1)および式(2)に示す係数「p」、「q」、「r」は、Webシステム2の稼働データから、回帰分析を行って算出することができる。回帰分析によって算出した係数「p」、「q」、「r」を式(1)、式(2)に代入すれば、内部保留リクエスト件数「L」および最大同時実行件数「M」を変数とした、内部保留時間「y」を示す式を求めることができる。
そして、求めた式から、内部保留時間「y」を最小化するようなWebシステム2の新たな流量制御パラメータの最大同時実行件数「M」の改善値や、内部保留時間「y」が許容される内部保留時間を超えないような新たな流量制御パラメータのキュー長を算出することができる。
例えば、式(1)における係数「p」、「q」は、Webシステム2の稼働データから抽出した内部保留リクエスト件数毎の平均内部保留時間のうち、稼動データ採取時点の最大同時実行件数設定値「M」未満の内部保留リクエスト件数「Lk」と内部保留時間対数値「Log(yk)」の対から、回帰分析を行って算出することができる。
また、Webシステム2の稼働データから抽出した内部保留リクエスト件数毎の平均内部保留時間のうち、稼動データ採取時点の最大同時実行件数設定値「M」を超える内部保留リクエスト件数「Lk」と内部保留時間「yk」の線形近似式の係数と、先に算出した係数「p」「q」とを式(2)に代入すると、「r」に関する1次方程式となり、「r」の値を算出することができる。
また、Webシステム2は、処理リクエストを処理するプロセスごとまたは処理識別子ごとに、設定可能な流量制御パラメータとして、「最大同時実行件数(max Threads)」「M」と「最大キュー長」とを具備する。なお、処理識別子は、以下でも説明するが、リクエストデータによって起動されるデータ処理の内容の種類を区別する識別子である。
また、Webシステム2は、「内部保留リクエスト件数」が大きい場合、負荷が大きい状態にあるといえる。「内部保留リクエスト件数」以外でも、内部保留時間と正の相関関係をもつようなメトリックを「負荷量」と呼ぶ場合もある。一方、過負荷時に内部保留時間と負の相関関係をもつ場合があるスループットやトラフィック(リクエスト件数/秒)は、「負荷量」とは呼ばず、これらを「内部保留リクエスト件数」の数え上げる手段の代替えとはしない(図15を参照)。
以下、式(1)、式(2)の導出について説明する。
図3は、内部保留時間の近似式を説明する図である。以下では、ネットワーク型の待ち行列モデルと、M/M/C型の待ち行列モデルとを組み合わせた多段待ち行列モデルから、内部保留時間の近似式を導出する。
まず、内部保留リクエスト件数「L」が、最大同時実行件数「M」より小さい場合の近似式を導出する。L<Mでは、プリエンプティブなマルチスレッド制御を行っているスケジューラに対するモデルとして、図3に示すようなネットワーク型の待ち行列モデルを適用することができる。
ここで、図3に示す「Ready Queue」は、即時実行可能な処理スレッドの待機キューを示している。「Execute Thread」は、実行中のスレッドを示している。プリエンプティブなマルチスレッド制御により、時分割多重制御やリソース待ちによって処理の実行が中断(suspend)すると、再び「Ready Queue」にキューイングされる。
「Max_Threads」は、最大同時実行件数を示す(「Ready Queue」と「Execute Threads」とを合わせた最大スレッド数)。
「t0」は、処理リクエストの「Ready Queue」に最初に入った到着時刻を示す。「t1」は、処理リクエストのデータ処理が完了して、系内から処理リクエストが離脱した時刻を示す。
「y=t1−t0」は、内部保留時間を示す(プリエンプティブなマルチスレッド制御による待ち行列ネットワークからの離脱時間)。
「Δt」は、微小時間を示す。「ΔL」は、微小時間「Δt」の間に、「Ready Queue」にキューイングされるスレッドの数を示す。すなわち、「ΔL」は、微小時間「Δt」における、内部保留リクエスト件数「L」の変動幅を示す。
「Δy」は、微小時間「Δt」における、「Ready Queue」の長さ変動による離脱時間「y」の変動幅を示す。
図3より、微小時間「Δt」での内部保留リクエスト件数の増加量「ΔL」は、微小時間「Δt」に比例する。また、微小時間「Δt」において、増加しうる内部保留時間「Δy」は、微小時間「Δt」に比例する。以上から、次の2つの式が導ける。
上記の式(3)、式(4)からΔtを消去すると、次の式(5)が得られる。
プリエンプティブなスレッド制御によって、繰り返しスレッド切り替えが発生するサイクルにおいては、最終的な内部保留時間「Y」は、微小期間の内部保留リクエスト件数「ΔL」の合計に比例し、さらに、「ΔL」に比例する。従って、内部保留時間「Y」は、次の式(6)のように示すことができる。
式(5)、式(6)からΔLを消去すると次の式(7)、式(8)が得られる。
なお、式(7)より、微小時間「Δt」において増加しうる内部保留時間「Δy」は、「ΔL」に比例することが分かる。また、式(8)より、内部保留時間「Y」は、内部保留時間の変動幅「Δy」に比例することが分かる。
以上より、十分多くの試行回数における「Δy」と「y」との関係は、下記の微分方程式で表現することができる。
式(9)に示される微分方程式を解くと、次の式(10)が得られる。
そして、式(10)は、内部保留リクエスト件数「L」が「0」の時の平均内部保留時間を「p」とし、係数「β」の逆数を「q」と置くと、次の式(11)のように変形することができ、上記で示した式(1)が得られる。
式(11)は、プリエンプティブなスレッド制御の機構が管理しているリソース(例えば、「Execute Thread」が消費するCPU(Central Processing Unit)やディスク、「Ready Queue」等)を共有する処理の「内部保留時間」を示している。
次に、内部保留リクエスト件数「L」が、最大同時実行件数「M」以上の場合の、内部保留時間「y」の近似式を導出する。L≧Mでは、M/M/C型の待ち行列モデルを適用することができる。M/M/C型の待ち行列モデルによる内部保留時間「y」の近似式は、次の式(12)のように示すことができる。
ここで、定数項「c」は、内部保留リクエスト件数「L」が最大同時実行件数「M」の場合の平均内部保留時間を示す。内部保留時間「y」は、この定数項「c」に、内部保留リクエスト件数「L」から、最大同時実行件数「M」を減算した値「L−M」(最大キュー長を示す)を、最大同時実行件数「M」で除算し、係数「d」を乗算した値を加算して示すことができる。なお、M/M/C型の待ち行列モデルでは、最大同時実行件数を処理窓口数と呼ぶ。
式(12)の「L=M」での計算結果が、式(1)に示す近似式と接続するための係数「r」を導入すると、次の式(13)が導出される。
式(13)の「f(M,L)」の部分を、式(1)で置き換えると、次の式(14)が得られ、上記で示した式(2)が得られる。
上記の式(1)、式(2)に含まれる係数「p」、「q」、「r」は、次のようにして算出することができる。まず、Webシステム2の稼働データを収集し、収集した稼働データから、負荷量(内部保留リクエスト件数)に対する内部保留時間を抽出する。例えば、負荷量「Li」のときの内部保留時間「yi」を、Webシステム2の稼働データから抽出する。
そして、抽出した負荷量「Li」と内部保留時間「yi」とのうち、Webシステム2に設定されている現在の最大同時実行件数「M」より小さい負荷量(内部保留リクエスト件数)「Lk」と、その負荷量(内部保留リクエスト件数)「Lk」における内部保留時間の対数値「Log(yk)」と、L<Mの場合の式(1)と、を用いて回帰分析すれば、係数「p」と「q」とが求まる。
また、求めた係数「p」と「q」と、稼働データから抽出した負荷量(内部保留リクエスト件数)「Li」と内部保留時間「yi」とのうち、Webシステム2に設定されている現在の最大同時実行件数「M」を超える負荷量(内部保留リクエスト件数)「Ll」と、その負荷量(内部保留リクエスト件数)「Ll」における内部保留時間「yl」と、「L≧M」の場合の式(15)と、を用いて回帰分析し係数δを算出し、式(1)と式(2)とが「L=M」で交差することを条件とするような式(16)に示す1次方程式を解けば、係数「r」が求まる。
次に、多段待ち行列モデルの「内部保留時間」の性質について説明する。
図4は、内部保留時間の性質を説明する図である。図4の左側のグラフG11は、Webシステム2のデータ処理構造が多段待ち行列モデルであって、式(11)と式(14)の最大同時実行件数「M」を「M=3」、「M=5」、「M=10」に変えた場合の、負荷量(内部保留リクエスト件数)「L」に対する内部保留時間「y=f(M,L)」を示したグラフである。
例えば、左側のグラフG11に示すf(10,L)は、「M=10」の場合の、負荷量「L」に対する内部保留時間「y」を示したグラフである。f(10,L)は、負荷量「L」が最大同時実行件数「M=10」より小さい範囲(L<10)では、式(1)で示される。式(1)は、「L」を変数として捉えた場合、指数関数となるので、f(10,L)は、L<10の範囲では、指数関数的に変化している。
また、f(10,L)は、負荷量「L」が最大同時実行件数「M=10」以上の範囲(L≧M)では、式(2)で示される。式(2)は、「L」を変数として捉えた場合、1次関数となるので、f(10,L)は、L≧10の範囲では、線形的に変化している。f(3,L)およびf(5、L)も同様にして、L=3,5を堺として、指数関数的および直線的に変化している。
図4の右側のグラフG12は、Webシステム2のデータ処理構造が多段待ち行列モデルであって、負荷量「L」を「L=20」に固定した場合の、最大同時実行件数「M」に対する内部保留時間「y=f(M,L)」を示したグラフである。
例えば、式(2)において、負荷量「L」を定数(L=20)とし、最大同時実行件数「M」を変数とすると、内部保留時間「y」は、グラフG12に示すように、舟形曲線を描く。すなわち、内部保留時間「y」は、最大同時実行件数「M」に対して極小値を持つ。
これは、最大同時実行件数「M」が最適値(図4の場合、M=5)より小さい値に設定された場合、処理リクエストがキューで待たされる時間が長くなるからである。また、最大同時実行件数「M」が最適値(図4の場合、M=5)より大きい値に設定された場合、処理リクエストをキューから取出した後のデータ処理において、Webサーバ2a,2bの処理効率を低下させるためである。
内部保留時間「y」は、最大同時実行件数「M」を変数として捉えた場合、上記したように、式(2)に示すような指数関数と線形関数との和で表現でき、極小点を1つ持つ。従って、内部保留時間「y」を最小にするような「M」は、式(2)を「M」で微分した式が、「0」になる条件より算出することができる。
式(17)の右辺が「0」になるには、式(17)に示す分子が「0」となる場合である。従って、式(17)の分子部分を「0」と置き、Mに関する2次方程式を解くと、内部保留時間「y」が最小値となる最大同時実行件数「M」は、次の式(18)で示される。
ここで、Webシステム2の負荷量「L」が、最大同時実行件数「M」より十分大きいとすると(例えば、LがMの2倍以上等)、最大同時実行件数は、次の式(19)のLに対する極限値より、「M=q」が適正値となる。
すなわち、Webシステム2の負荷量「L」が、最大同時実行件数「M」より十分大きい場合、式(1)または式(2)に示す近似式の指数部の分母「q」を求めれば(「q」が小数であれば、例えば、その値を切り上げる)、内部保留時間「y」を最小にする最大同時実行件数「M」を算出することができる。また、「r=1」の場合、式(17)の分子部分より、「M=q」となる。なお、「r=1」となるのは、Webシステム2のリクエストによって起動される処理内容の種類が均一な場合である。
また、Webシステム2の負荷量「L」が、最大同時実行件数「M」より十分大きくない場合でも、例えば、Webシステム2で想定される負荷量(例えば、Webシステム2で想定される負荷量は、Webシステム2を管理する管理者により、チューニングポリシーパラメータの1つとして指定される内部保留リクエスト件数)に対する式(2)の内部保留時間「y」の値が最小となる最大同時実行件数「M」をシミュレートして算出することができる。
例えば、式(2)に、チューニングポリシーパラメータの1つとして指定される、Webシステム2で想定される負荷量「L」を代入し、図4のG12のグラフに示すように、いくつかの最大同時実行件数「M」の候補となる値を、式(2)に代入する。そして、内部保留時間「y」が最小となった最大同時実行件数「M」を、新たな最大同時実行件数として採用する。
また、もう1つの流量制御パラメータである最大キュー長(queue size)は、「Llimit−M」で算出される。ここで、「Llimit」は、例えば、Webシステム2で想定される最大負荷量であり、「M」は、新たに算出した最大同時実行件数である。さらに、「Llimit」は、チューニングポリシーパラメータとして与えられる、内部保留時間の許容限界「Ylimit」を超えないような値を、図22に示すように、式(2)中の「L」を変えて算出することができる。
なお、「Llimit−M」が負となる場合、最大同時実行件数「M」は、前記「Llimit」の値にする。また、この場合の最大キュー長(queue size)は、「0」にする。
[Webシステム2のデータ処理構造の説明]
次に、Webシステム2の種々のデータ処理構造について説明する。
図5は、Webシステム2のデータ処理構造例のその1を示した図である。図5に示すように、Webシステム2は、1個のキュー11aと、1個のデータ処理部12aとを有している。図5に示すデータ処理構造のプロセスは、例えば、物理的に1台またはそれ以上のWebサーバ上で動作し、さらにWebシステム2は、1台またはそれ以上の個数のWebサーバによって実現される。
キュー11aには、処理リクエストが一時記憶される。キュー11aからは、1つずつ処理リクエストが取出され、データ処理部12aに入力される。データ処理部12aは、キュー11aから取出された処理リクエストを並列処理している。データ処理部12aは、処理リクエストのデータ処理が終了すると、キュー11aに記憶されている次の処理リクエストが入力される。
図5に示すデータ処理構造のWebシステム2には、均一な処理内容に対するリクエストが入力される。そして、データ処理部12aでは、均一なデータ処理が行われる。均一な処理内容に対するリクエストとは、データ処理部12aでデータ処理される内容が、どれもほとんど同じ処理内容であることを言う。
例えば、処理リクエストa,b,cがデータ処理部12aでデータ処理されるとする。図5に示すWebシステム2の場合、処理リクエストa,b,cのいずれも、ほとんど同じ内部処理時間でデータ処理される。すなわち、図5に示すWebシステム2のキュー11aには、概ね同一の処理内容となる処理リクエストが入力されるとする。特にWebシステムでは、HTTPリクエストに含まれるHTTP_URiやhttp_query_string等の入力データが同一であれば同一の処理理内容となる。
また、ここで、全く同一の処理内容では無くても、図6に示すように、内部保留リクエスト件数「L」が稼働データ採取時の最大同時実行件数設定値「M」未満での、内部保留時間「y」を対数目盛で観た場合のグラフの傾きが概ね同じ場合も“均一な処理内容”であったとみなす。その場合、図7に示すように、内部保留リクエスト件数「L」が最大同時実行件数設定値「M」以上での、内部保留時間「y」を線形目盛で観たときの傾きも概ね同じ傾きとなる。
それは、内部保留リクエスト件数「L」が稼働データ採取時の最大同時実行件数設定値「M」未満での内部保留時間「y」を近似する式(1)の指数部係数「q」が同じ値であれば、式(1)の定数係数「p」が異なっても、あるいは、内部保留リクエスト件数「L」が稼働データ採取時の最大同時実行件数設定値「M」以上での内部保留時間「y」を近似する式(2)での「r」が1でも1以外の値であっても、最大同時実行件数設定値「M」の改善値は「q」を整数に切り上げた値であるからである。
図8は、Webシステム2のデータ処理構造例のその2を示した図である。図8に示すように、Webシステム2は、キュー13aa,13ab,13ba,13bb,13ca,13cb,13ccと、データ処理部14aa,14ab,14ba,14bb,14ca,14cb,14ccと、分散機DP1とを有している。図8に示すデータ処理構造のWebシステム2は、例えば、1台またはそれ以上のWebサーバによって実現される。図8では、Webシステム2は、WebサーバSV1〜SV3によって実現されている。
図8に示す1個のキューと1個のデータ処理部のセットは、Webシステム2(Webシステム2を構成するWebサーバSV1〜SV3)で実行されるプロセスに対応して設けられる。
例えば、図8の点線枠D1aに示す1個のキュー13aaと1個のデータ処理部14aaは、あるプロセスP1aに対応して設けられ、点線枠D1bに示す1個のキュー13abと1個のデータ処理部14abは、あるプロセスP1bに対応して設けられている。また、点線枠D2aに示す1個のキュー13baと1個のデータ処理部14baは、あるプロセスP2aに対応して設けられ、点線枠D2bに示す1個のキュー13bbと1個のデータ処理部14bbは、あるプロセスP2bに対応して設けられている。また、点線枠D3aに示す1個のキュー13caと1個のデータ処理部14caは、あるプロセスP3aに対応して設けられ、点線枠D3bに示す1個のキュー13cbと1個のデータ処理部14cbは、あるプロセスP3bに対応して設けられ、点線枠D3cに示す1個のキュー13ccと1個のデータ処理部14ccは、あるプロセスP3cに対応して設けられている。
図8に示すデータ処理構造の場合、Webシステム2には、不均一な処理内容に対するリクエストが入力される。不均一なデータ処理とは、様々な処理リクエストの処理時間(内部保留時間)が、異なっていることを言う。従って、不均一な処理内容に対するリクエストでは、各処理リクエストの処理時間は異なる処理時間(不均一な処理内容)となる。
そして、図8に示すデータ処理構造の場合、不均一な処理内容に対するリクエストは、WebサーバSV1〜SV3の各プロセス(点線D1a〜D3c)によって均一処理がされるよう、分散機DP1によって分散されている。
例えば、Webシステム2には、不均一な処理内容に対するリクエストa,b,c,d,e,fが入力されるとする。処理リクエストa,b,c,d,e,fのそれぞれは、分散機DP1によって、WebサーバSV1〜SV3の各プロセス(点線D1a〜D3c)に分散されている。これにより、キュー13aa,13ab,13ba,13bb,13ca,13cb,13ccのそれぞれには、均一な処理内容に対するリクエストが入力される。そして、データ処理部14aa,14ab,14ba,14bb,14ca,14cb,14ccのそれぞれは、均一な処理内容に対するリクエストを処理する。
なお、図8に示すデータ処理構造は、プロセスごとにおいて、図5に示したキュー11aとデータ処理部12aとを備えていると考えることができる。
図9は、Webシステム2のデータ処理構造例のその3を示した図である。図9に示すように、Webシステム2は、複数のキュー15a,15b,15cと、複数のデータ処理部16aa,16ab,16ba,16bb,16ca,16cb,16ccと、を有している。図9に示すデータ処理構造のWebシステム2は、例えば、1台またはそれ以上のWebサーバによって実現される。図9では、Webシステム2は、WebサーバSV1〜SV3によって実現されている。
図9に示す1個のキューと複数のデータ処理部のセットは、Webシステム2(Webシステム2を構成するWebサーバ)で実行されるプロセスに対応して設けられる。
例えば、図9の点線枠D1に示す1個のキュー15aと2個のデータ処理部16aa,16abは、あるプロセスP1に対応して設けられている。点線枠D2に示す1個のキュー15bと2個のデータ処理部16ba,16bbは、あるプロセスP2に対応して設けられている。点線枠D3に示す1個のキュー15cと3個のデータ処理部16ca,16cb,16ccは、あるプロセスP3に対応して設けられている。
図9に示すデータ処理構造の場合、プロセスに対応して設けられるキューには、不均一な処理内容に対するリクエストが一時記憶される。そして、各プロセスに対応して設けられている複数のデータ処理部12cのそれぞれには、均一な処理内容に対するリクエストが入力される。
例えば、プロセスP1に対応して設けられた点線枠D1のキュー15aには、不均一な処理内容に対するリクエストa,bが一時記憶される。そして、点線枠D1のデータ処理部16aaには、処理リクエストaのみが入力され、データ処理部16abには、処理リクエストbのみが入力される。すなわち、点線枠D1に示す2つのデータ処理部16aa,16abのそれぞれには、単一の処理リクエストa,bが入力され、均一処理を行う。
図10は、Webシステム2のデータ処理構造例のその4を示した図である。図10に示すように、Webシステム2は、複数のキュー17a,17b,17ca,17cbと、複数のデータ処理部18a,18b,18ca,18cbと、分散機DP2とを有している。図10に示すデータ処理構造のWebシステム2は、例えば、1台またはそれ以上のWebサーバによって実現される。図10では、Webシステム2は、WebサーバSV1,SV2,SV3a,SV3bによって実現されている。
図10に示す1個のキューと1個のデータ処理部のセットは、Webシステム2(Webシステム2を構成するWebサーバ)で実行されるプロセスに対応して設けられる。
例えば、図10の点線枠D1に示す1個のキュー17aと1個のデータ処理部18aは、あるプロセスP1に対応して設けられている。点線枠D2に示す1個のキュー17bと1個のデータ処理部18bは、あるプロセスP2に対応して設けられている。点線枠D3aに示す1個のキュー17caと1個のデータ処理部18caは、あるプロセスP3に対応して設けられる。点線枠D3bに示す1個のキュー17cbと1個のデータ処理部18cbは、あるプロセスP3に対応して設けられている。
図10に示すデータ処理構造の場合、Webシステム2には、不均一な処理内容に対するリクエストが入力される。そして、図10に示すデータ処理構造では、入力された不均一な処理内容に対するリクエストを、分散機DP2によって不均一のまま分散し、点線枠D1〜D3bのキュー17a,17b,17ca,17cbに出力する。
例えば、図10に示すように、Webシステム2には、不均一な処理内容に対するリクエストa,b,c,d,e,fが入力されるとする。不均一な処理内容に対するリクエストa,b,c,d,e,fは、分散機DP2によって分散され、処理リクエストa,bは、WebサーバSV1のキュー17aに出力される。すなわち、キュー17aには、不均一な処理内容に対するリクエストa,bが入力される。そして、データ処理部18aは、不均一な処理内容に対するリクエストa,bをデータ処理する。
また、不均一な処理内容に対するリクエストc,dは、WebサーバSV2のキュー17bに出力される。すなわち、キュー17aには、不均一な処理内容に対するリクエストc,dが入力される。そして、データ処理部18aは、不均一な処理内容に対するリクエストc,dをデータ処理する。
また、不均一な処理内容に対するリクエストe,f,gは、WebサーバSV3aのキュー17caに出力される。すなわち、キュー17caには、不均一な処理内容に対するリクエストe,f,gが入力される。そして、データ処理部18caは、不均一な処理内容に対するリクエストe,f,gをデータ処理する。
また、不均一な処理内容に対するリクエストe,f,gは、WebサーバSV3bのキュー17cbに出力される。すなわち、キュー17cbには、不均一な処理内容に対するリクエストe,f,gが入力される。そして、データ処理部18cbは、不均一な処理内容に対するリクエストe,f,gをデータ処理する。
なお、図10では、不均一な処理内容に対するリクエストe,f,gは、プロセスP3を実行する2台のWebサーバSV3a,SV3bによってデータ処理されている。
図5〜図10に示したように、Webシステム2のデータ処理構造は、一般的に4つのデータ処理構造に分類することができる。
[Webシステム2のデータ処理構造に応じた流量制御パラメータの算出の説明]
図11は、情報処理装置1の機能ブロックの一例を示した図である。図3に示すように、情報処理装置1は、受信部21と、抽出部22と、係数算出部23と、パラメータ算出部24と、送信部25と、記憶部26とを有している。
受信部21は、例えば、Webシステム2を管理する管理者から、端末装置を介して、Webシステム2に関するチューニングポリシーパラメータを受信する。例えば、受信部21は、Webシステム2に想定される負荷量を受信する。また、受信部21は、Webシステム2から、稼働データ(ログデータ)を受信する。また、受信部21は、Webシステム2から、Webシステム2に現在設定されている流量制御パラメータを受信する。
図12は、Webシステム2の稼働データの例を示した図である。図12の稼働データ31の右側には、稼働データ31を説明した欄が示してある。
稼働データ31には、Webシステム2が、端末装置3から処理リクエストを受付けた受付時刻が含まれる。また、稼働データ31には、Webシステム2が、処理リクエストをデータ処理し、そのレスポンスデータを端末装置3に送信した終了時刻が含まれる。また、稼働データ31には、Webシステム2が、処理リクエストをデータ処理したプロセスの情報が含まれる。
Webシステム2の稼働データの他の例としては、図13と同様の情報が抽出可能となるように拡張されていれば、The World Wide Web Consortium が制定した“Extended Log File Format”に準ずるフォーマットであっても良い。例えば、日立製作所製品である"Hitachi web Server"は、リクエスト処理に掛かった時間(%T)だけではなく,リクエスト処理を開始した時刻(%t)もミリ秒まで表示するように拡張されており、適用可能である。
図11の説明に戻る。抽出部22は、受信部21によって受信された稼働データから、内部保留リクエスト件数ごとにおける、Webシステム2の処理リクエストのデータ処理に要した内部保留時間の平均値を抽出する。すなわち、抽出部22は、Webシステム2の稼働データから、Webシステム2の負荷量に対する、Webシステム2の内部保留時間を抽出する。なお、抽出部22は、受信されたWebシステム2の稼働データから一時情報を抽出し、抽出した一時情報からWebシステム2の負荷量に対する、Webシステム2の内部保留時間を抽出する。
図13は、一時情報の抽出を説明する図である。抽出部22は、受信されたWebシステム2の稼働データから、図13に示す一時情報を抽出する。一時情報には、受付時刻32aと、終了時刻32bと、内部保留時間32cと、HTTPリクエスト内容(http_method32d、http_uri32e、およびhttp_query_string32f)と、処理識別情報(http_uriGroupName32g、http_queryID32h、http_status32i、remote_addr32j、およびremote_port32k)と、処理識別子単位での内部保留リクエスト件数32lと、プロセス単位での内部保留リクエスト件数32mとが含まれる。
抽出部22は、受信部21によって受信されたWebシステム2の稼働データから、Webシステム2がURLを受付けた受付時刻32aと、URLのデータ処理を終了した終了時刻32bとを抽出する。抽出部22は、抽出した受付時刻32aと終了時刻32bとから、URLの内部保留時間32cを算出する。
抽出部22は、受信部21によって受信されたWebシステム2の稼働データから、http_method32dと、http_uri32eと、http_query_string32fとを抽出する。http_method32dは、HTTPリクエストの性質を示す。http_uri32eは、URLを示す。http_query_string32fは、クエリストリングを示す。
抽出部22は、以下で説明する所定の規則に基づいて、稼働データより抽出したhttp_uri32eから、http_uriGroupName32gを抽出する。http_uri32eは、同じ処理内容であっても、ユニークな情報が付加されていることがあり、抽出部22は、そのユニークな情報を除去して、同じ処理内容を示すhttp_uri32gは、同じ処理識別情報を有するように、http_uriGroupName32gを抽出する。すなわち、抽出部22は、同じ処理内容のURLに対しては、同じ処理識別情報が付与されるようにする。
同様に、抽出部22は、以下で説明する所定の規則に基づいて、稼働データより抽出したhttp_query_string32fから、http_queryID32hを抽出する。http_query_string32fは、同じ処理内容であっても、ユニークな情報が付加されていることがあり、抽出部22は、そのユニークな情報を除去して、同じ処理内容を示すhttp_query_string32fは、同じ処理識別情報を有するように、http_queryID32hを抽出する。すなわち、抽出部22は、同じ処理内容のクエリストリングに対しては、同じ処理識別情報が付与されるようにする。
このように、同じ処理内容の処理リクエストに、同じ処理識別情報を付与することにとより、処理リクエストの種類は、いくつかの種類に分けられる。例えば、図12に示した稼働データ31をそのまま区別すると(生データのままで見ると)、数千〜数万種類存在する。これを、所定の規則に基づいて、同じ処理が行われるURLには、同じ処理識別情報を付与し、同じ処理が行われるクエリストリングには、同じ処理識別情報を付与することにより、処理リクエストの種類は、例えば、数十〜数百種類に減少する。
抽出部22は、稼働データからhttp_status32iを抽出する。http_status32iは、httpのステータスコードである。
抽出部22は、以下で説明する所定の規則に基づいて、稼働データからremote_addr32jを抽出する。remote_addr32jは、Webシステム2を構成するWebサーバの識別子である。
抽出部22は、稼働データからhttp_port32kを抽出する。http_port32kは、httpのリモートポートである。
抽出部22は、稼働データから、処理識別子単位での内部保留リクエスト件数32lを抽出する。ここでは、処理識別子は、http_uriGroupName32gとhttp_queryID32hとで示されるとする。すなわち、http_uriGroupName32gとhttp_queryID32hとを1つの情報とし、その内容が異なれば、処理識別子も異なるとする。つまり、処理リクエストは、http_uriGroupName32gおよびhttp_queryID32hでその種類が分けられるとする。従って、抽出部22は、http_uriGroupName32gおよびhttp_queryID32hで示される情報単位(処理識別子単位)で、受付時刻32aおよび終了時刻32bを参照し、処理識別子単位での処理多重数(内部保留リクエスト件数)を調べ、処理識別子単位での内部保留リクエスト件数32lを抽出する。
また、抽出部22は、稼働データから、プロセス単位での内部保留リクエスト件数32lを抽出する。ここでは、プロセスは、remote_addr32jとremote_port32kとで示されるとする。すなわち、remote_addr32jとremote_port32kとを1つの情報とし、その内容が異なれば、処理リクエストを処理するプロセスも異なる。従って、抽出部22は、remote_addr32jおよびremote_port32kで示される情報単位(プロセス単位)で、受付時刻32aおよび終了時刻32bを参照し、プロセス単位での処理多重数(内部保留リクエスト件数)を調べ、プロセス単位での内部保留リクエスト件数32lを抽出する。
図14は、所定の規則を説明する図である。図14の欄33aには、情報の抽出方法を指定する抽出指定パラメータが示してある。欄33bには、抽出指定パラメータの説明が記載されている。抽出部22は、例えば、欄33aの抽出指定パラメータが与えられることによって、稼働データから、上記したhttp_uriGroupName32gを生成する。これにより、抽出部22は、同じ処理内容を示すURLには、同じ処理識別情報を付与することがきる。その他、http_queryID32h等についても同様である。
なお、図10のデータ処理構造の場合、WebサーバSV3a,SV3bは、同じ処理リクエストを処理する。従って、WebサーバSV3a,SV3bには、同じ識別子が付与されるように、抽出指定パラメータを設定する。つまり、WebサーバSV3a,SV3bで実行されるプロセスは、同じプロセス単位の識別情報(remote_addr32jおよびremote_port32k)を持つこととなる。
図15は、URLの内部保留リクエスト件数を説明する図である。ここでは、URL単位での内部保留リクエスト件数の数え方の例を説明する。
図15の(A)〜(C)に示す矢印の始点は、URLの受付時刻32aに対応し、終点は、URLの処理の終了時刻32bに対応する。URLは、他のどのURLとも処理が重なっていない場合、1多重と数える。また、URLの多重数は、最大の多重数を採用し、採用した多重数を内部保留リクエスト件数とする。
図15の(A)の場合、URL1〜URL5のそれぞれの内部保留リクエスト件数は「1」となる。
図15の(B)の場合、URL1の内部保留リクエスト件数は「2」となる。URL2の内部保留リクエスト件数は「3」となる。URL3の内部保留リクエスト件数は「3」となる。URL4の内部保留リクエスト件数は「2」となる。URL5の内部保留リクエスト件数は「3」となる。
図15の(C)の場合、URL1〜URL5のそれぞれの内部保留リクエスト件数は「5」となる。
このようにして、抽出部22は、処理が異なるURL単位での内部保留リクエスト件数32lを抽出する。なお、図13で説明した処理識別子単位での内部保留リクエスト件数32lの抽出、および、プロセス単位での内部保留リクエスト件数32mの抽出の方法も上記と同様である。
なお、上記では、抽出部22は、稼動データから採取した、URL毎の開始時刻から終了時刻までの期間が重なるURLの最大値を数え挙げて、内部保留時クエスト件数としていたが、他の方法によっても、内部保留時クエスト件数を抽出することができる。例えば、抽出部22は、URL毎の開始時刻から終了時刻までの期間が重なるURLの走行時間の合計を各URLの処理時間で割って、平均的な内部保留リクエスト件数を算出してもよい。
また、内部保留リクエスト件数の算出は、適用対象のWebシステム2のデータ処理構造における流量制御パラメータ(最大同時実行件数とキュー長)によって管理されるリソースの数を、データ処理構造のシミュレートによって算出するものである。従って、リクエストデータの受信時刻より受付時刻が遅かった別のリクエストデータの処理がより早く終了しうるならば、独立したキューに一時記憶されるリクエストとして、内部保留リクエスト件数を算出する。
また、Webシステム2を構成するWebサーバが複数台場合、各Webサーバの時計が同時刻を表示しない場合もあるので、時計が異なりうるWebサーバの稼働データから正確な内部保留時クエスト件数を抽出する為には、Webサーバ毎に順次処理する必要がある。
抽出部22は、上記したように、稼働データのリクエストデータから一旦一時情報を抽出し、当該リクエストデータの開始時刻から終了時刻までの期間が重なる期間に走行していたリクエストデータと突き合せて、Webシステム2におけるリクエストデータ走行期間中のプロセス毎の内部保留リクエスト件数および処理識別子毎の内部保留時クエスト件数を算出し、図13に示すデータとして稼働データのリクエストデータに1対1に対応するレコードを記録する。
図13は、抽出部22における第1の抽出結果を示すデータ構成例を示した図である。
ここで、図13中の処理識別情報列に含まれる「http_status32i」が「エラー応答時間」の様に流量制御パラメータの制御によらない内部保留時間を記録していたレコードであった場合は、早期段階で取り除かれても良い。
図13中の処理識別情報列に含まれるカラムの内「remote_addr32j」「remote_port32k」の組合せは、特に「プロセス単位の識別情報」とする。その他のカラムの組合せは、チューニングポリシーパラメータとして与えられる処理識別子の抽出条件に従って、「処理識別子」の生成に用いる。
図13に示す稼働データのリクエストデータに1対1に対応するレコード数のデータを、「プロセス単位の識別情報」と「プロセス単位での内部保留リクエスト件数32m」の組合せ、「処理識別子」と「処理識別子単位での内部保留リクエスト件数」の組合せ毎に、内部保留時間の平均値を集計して、図16に示す構造のデータを得る。
前記抽出部22を構成する処理によって、図16に示す回帰分析用情報は、図13に示した一時情報から抽出され、記憶部26に記憶される。
図16の識別情報34aは、プロセス単位の識別情報と、処理識別子単位の識別情報とを有する。プロセス単位の識別情報34aは、図13に示したremote_addr32jおよびremote_port32kに対応する。処理識別子単位の識別情報34aは、図13に示したhttp_uriGroupName32gおよびhttp_queryID32hに対応する。なお、処理識別子単位の識別情報34aには、その処理識別子が処理されるプロセスの情報も含まれている。例えば、矢印A23に示す処理識別子「/context001/svcName99;pgCode=xxP11」は、プロセス「/context001/svcName99;pgCode=xxP11」で処理されることを示している。図16の識別情報34aの値は、チューニングポリシーパラメータとして与えられた条件に従って図13の「処理識別情報」の幾つかを連結した文字列である。以下では、プロセス単位の行における識別情報34aを、プロセスの処理識別子と呼ぶことがある。
内部保留リクエスト件数ごとの内部保留時間の平均値34cは、内部保留リクエスト件数(負荷量)に対する、Webシステム2の内部保留時間の平均値を示す。例えば、図16の例の場合、矢印A21に示すプロセスの内部保留時間の平均値は、内部保留リクエスト件数が「2」の場合、「0.347」である。また、内部保留リクエスト件数が「3」の場合、「0.426」である。
また、矢印A23に示す処理識別子の内部保留時間の平均値は、内部保留リクエスト件数が「2」の場合、「16.674」である。また、内部保留リクエスト件数が「3」の場合、「27.518」である。
なお、図16の空欄は、Webシステム2から受信した稼働データに、対応する内部保留リクエスト件数がなかった(例えば、Webシステム2から受信した稼働データの範囲には、その内部保留リクエスト件数が発生しなかった)ことを示す。
ここで、チューニングポリシーパラメータとして与えられる条件に従って図16に記録されたデータの内、回帰分析用情報として用いないデータを除外しても良い。あるいは、カスタマイズ可能な除外方法として、内部保留リクエスト件数が1以下の平均内部保留時間や稼働データ採取時の最大同時実行件数「M」に等しい内部保留リクエスト件数の平均内部保留時間を回帰分析用情報として用いないデータを除外しても良い。
図11の説明に戻る。係数算出部23は、Webシステム2のデータ処理構造に応じた近似式と、抽出部22によって抽出された回帰分析用情報とに基づいて、近似式の係数を算出する。なお、係数算出部23は、内部保留リクエスト件数が最大同時実行件数より小さい場合の式(1)を近似式として仮係数を算出し、算出した仮係数に基づいて、Webシステム2のデータ処理構造に応じた近似式を選択する。近似式の仮係数および係数の算出については、以下でフローチャートを用いて詳細に説明する。
パラメータ算出部24は、係数算出部23によって係数が算出された近似式から、Webシステム2の新たな最大同時実行件数と最大キュー長とを算出する。Webシステム2の新たな最大同時実行件数と最大キュー長との算出については、以下でフローチャートを用いて詳細に説明する。
送信部25は、パラメータ算出部24によって算出された最大同時実行件数と最大キュー長とをWebシステム2(Webシステム2を構成するWebサーバ2a,2b)に送信する。
記憶部26には、上記で説明した回帰分析用情報が記憶される。
図17は、情報処理装置1の動作例を示したフローチャートである。図17に示すフローチャートは、例えば、Webシステム2を管理する管理者の開始の指示に応じて実行される。
まず、受信部21は、Webシステム2の管理者から、Webシステム2のチューニングポリシーパラメータを受信する(ステップS21)。Webシステム2のチューニングポリシーパラメータには、例えば、Webシステム2で許容される内部保留時間「yLimit」が含まれる。
次に、受信部21は、Webシステム2から、稼働データとWebシステム2に現在設定されている流量制御パラメータとを受信する(ステップS22)。
次に、抽出部22は、Webシステム2から受信した稼働データに基づいて、一時情報を抽出する(ステップS23)。例えば、抽出部22は、図14に示した抽出指定パラメータに基づいて、図13に示すような一時情報を抽出する。
次に、抽出部22は、稼働データより抽出した一時情報から、回帰分析用情報を抽出する(ステップS24)。例えば、抽出部22は、図16に示すような回帰分析用情報を抽出する。
次に、係数算出部23は、Webシステム2のデータ処理構造の判別前に、抽出部22によって抽出された図16に示す回帰分析用情報の内の稼働データ採取時の最大同時実行件数「M」未満のプロセス単位での内部保留リクエスト件数「L」に対する平均内部保留時間から、式(1)を近似式とする回帰分析によって図16の仮近似式34bの仮係数「p,q」を算出する(ステップS25)。
ここで、「内部保留時間」の近似式の一般式は、上記したように式(1),(2)で示される。従って、処理識別子ごとの「内部保留時間」の近似式は、式(1),(2)の「p,q,r」を、処理識別子「i」ごとの定数「ai,bi,ci」に置き換えて、次の式(20),(21)で示される。
また、プロセスごとの「内部保留時間」の近似式は、式(1),(2)の「p,q,r」を、プロセス「j」ごとの定数「vj,wj,rj」に置き換えて、次の式(22),(23)で示される。
式(20)に処理識別子単位での、L<Mにおける内部保留リクエスト件数ごとの内部保留時間の平均値34cを代入して回帰分析を行えば、式(20)の係数(仮係数)が求まる。求めた仮係数を式(20)に代入すれば、図16の矢印A23〜A30に示すような、L<Mでの内部保留時間の仮近似式34bが求まる。
また、式(22)にプロセス単位での、L<Mにおける内部保留リクエスト件数ごとの内部保留時間の平均値34cを代入して回帰分析を行えば、式(22)の係数(仮係数)が求まる。求めた仮係数を式(22)に代入すれば、図16の矢印A21,A22に示すような、L<Mでの内部保留時間の仮近似式34bが求まる。
もし、図16に示す回帰分析用情報が、図5に示したデータ処理構造の稼働データから抽出されたものである場合、図16の仮近似式34bの指数部の分母は、どれも概ね同じ値となる。
例えば、図16に示す矢印A21〜A22に示すプロセス単位の仮近似式34bの指数部の分母(式(22)の係数「wj」)と、図16に示す矢印A23〜A30に示す処理識別子単位の近似式34bの指数部の分母(式(20)の係数「bi」)とは、概ね同じ値となる。
これは、図5のデータ処理構造では、Webシステム2を構成するどのプロセスでも均一な処理内容に対するリクエストが処理され、図6に示したように、図16の仮近似式の分母が示す内部保留リクエスト件数「L」に対する内部保留時間「y」が同じ傾きとなるからである。
なお、図5に示したデータ処理構造における「内部保留時間」の近似式は、式(20),式(21)で示される。図5のデータ処理構造の場合、流量制御パラメータの数は、Webシステム2全体で1個となる。
もし、図16に示す回帰分析用情報が、図8に示したデータ処理構造の稼働データから抽出されたものである場合、図16の仮近似式34bの指数部の分母は、同一プロセス内の処理識別子ごとにおいて、概ね同じ値となる。
例えば、図16の矢印A23〜A25,A27,A28の仮近似式34bの指数部の分母は、同一プロセス「WebAPSv01;8009」における処理識別子の、仮近似式34bの指数部の分母であり、どれも概ね同じ値となる(図16では、矢印A23〜A25,A27,A28の仮近似式34bの指数部の分母は概ね同じ値となっていない)。また、図16の矢印A26,A29,A30の仮近似式34bの指数部の分母は、同一プロセス「WebAPSv01;8008」における処理識別子の、仮近似式34bの指数部の分母であり、どれも概ね同じ値となる(図16では、矢印A26,A29,A30の仮近似式34bの指数部の分母は概ね同じ値となっていない)。これは、図8のデータ処理構造では、プロセス毎に均一な処理内容に対するリクエストが処理され、図6に示したように、図16の仮近似式の分母が示す内部保留リクエスト件数「L」に対する内部保留時間「y」が同じ傾きとなるからである。
なお、図8に示したデータ処理構造における「内部保留時間」の近似式は、式(22),式(23)で示される。なお、図8のデータ処理構造の場合、流量制御パラメータの数は、プロセスの種類の数分存在する。例えば、図8の例の場合、流量制御パラメータの数は、7個となる。
もし、図16に示す回帰分析用情報が、図9、図10に示したデータ処理構造の稼働データから抽出されたものである場合、図16の仮近似式34bの指数部の分母は、同一プロセス内の処理識別子ごとにおいて異なる値をとる。例えば、矢印A21〜A30に示す仮近似式34bの指数部の分母は、ばらばらの値となる。これは、図9、図10に示すデータ処理構造では、プロセスごとにおいて、不均一な処理内容に対するリクエストが入力されるからである。
なお、図9、図10に示したデータ処理構造における「内部保留時間」の近似式は、次の式(24),(25)で示される。
図9、図10のデータ処理構造に対応する近似式(24),(25)には、処理識別子「i」ごとの定数とプロセス「j」ごとの定数が含まれる。これは、プロセスごとのキューに、不均一な処理識別子単位の処理リクエストが入力されるためである。つまり、図9、図10に示したデータ処理構造では、ある処理識別子「i」における処理リクエストの内部保留時間は、自分自身以外の処理識別子による処理リクエストの内部保留時間に依存するからである。
例えば、処理識別子「a」,「b」の不均一な処理内容に対するリクエストが、処理識別子「a」,「b」の順にデータ処理されるよう、あるプロセスのキューに一時記憶されたとする。この場合、処理識別子「b」の処理リクエストの内部保留時間「y2」は、処理識別子「a」の処理リクエストの内部保留時間「y1」に依存する。具体的には、処理識別子「a」の内部保留時間が短ければ、処理識別子「b」の処理リクエストのデータ処理が早く開始され、処理識別子「b」の処理リクエストの内部保留時間は短くなる。また、処理識別子「a」の処理リクエストの内部保留時間が長ければ、処理識別子「b」の処理リクエストのデータ処理開始時間が遅くなり、処理識別子「b」の処理リクエストの内部保留時間は長くなる。
このように、図9、図10に示したデータ処理構造では、内部保留時間は、自分自身以外の処理識別子にも依存する。そのため、式(25)には、自分自身以外の全ての処理識別子の平均的な依存度を考慮したプロセス「j」ごとの係数「vj」と「wj」を導入し、さらに式(21)における処理識別子「i」毎の係数「ri」とは異なる値となるような式(25)における処理識別子「i」毎の係数「ri」を、「L=M」において式(24)と式(25)とが交差するような値として算出する。つまり、式(25)の処理識別子「i」毎の係数「ri」および当該処理識別子「i」が属するプロセス「j」毎の係数「vj」「wj」は、自分自身以外の処理識別子の処理リクエストが、算出しようとする自分自身の内部保留時間に干渉する構造を反映している。
次に、係数算出部23は、ステップS25にて算出した仮係数に基づいて、Webシステム2のデータ処理構造に応じた近似値の係数を算出する。そして、パラメータ算出部24は、算出された係数から、流量制御パラメータを算出する(ステップS26)。
次に、送信部25は、パラメータ算出部24によって算出された、新たな流量制御パラメータをWebシステム2に送信する(ステップS27)。
図18は、係数算出部23とパラメータ算出部24の動作例を示したフローチャートである。図18のフローチャートは、図17のステップS26の詳細な動作例を示している。
まず、係数算出部23は、プロセスごとにおける仮近似式34bの係数(指数部の分母)と、処理識別子ごとにおける仮近似式34bの係数(指数部の分母)とが、概ね同じか否か判定する(ステップS31)。例えば、係数算出部23は、図16の矢印A21〜A30に示す仮近似式34bの指数部の分母を切り上げて整数値化した値が、概ね同じであるか否か判定する。係数算出部23は、プロセスごとにおける仮近似式34bの係数と、処理識別子ごとにおける仮近似式34bの係数とが、概ね同じであると判定した場合、ステップS32の処理へ移行する。係数算出部23は、プロセスごとにおける仮近似式34bの係数と、処理識別子ごとにおける仮近似式34bの係数とが、概ね同じでないと判定した場合、ステップS34の処理へ移行する。なお、複数の値が概ね同じであるか否かは(同様の値であるか否かは)、例えば、複数の値の平均値を算出し、複数の値のそれぞれと平均値との差が、所定の範囲内であれば、複数の値は、概ね同じであるとする等、チューニングポリシーパラメータの一つとして与えられる条件またはカスタマイズ可能なロジックで判別する。
ステップS31にて、係数算出部23は、プロセスごとにおける仮近似式34bの係数と、処理識別子ごとにおける仮近似式34bの係数とが、概ね同じであると判定した場合(ステップS31の「Yes」の場合)、回帰分析により、図5のデータ処理構造に応じた近似式(20)の係数「ai」および「bi」を算出する(ステップS32)。図5のデータ処理構造の場合、処理識別子ごとの仮近似式34bの係数およびプロセスごとの仮近似式34bの係数は、概ね同じとなるからである。なお、係数「ai」および「bi」は、図16の矢印A23〜A30に示す仮近似式34bの係数の算出段階で求まっている。
次に、パラメータ算出部24は、ステップS32にて算出された係数より、図5のデータ処理構造に応じた、新たな流量制御パラメータを算出する(ステップS33)。例えば、パラメータ算出部24は、新たな流量制御パラメータの最大同時実行件数「M」を、M=max(ceiling(bi))で算出する。なお、上記したように、Webシステム2のリクエストされる処理の種類が均一の場合である場合、式(17)の「r」は、「r=1」となる。そして、「r=1」の場合、式(17)が「0」となる条件は、q=Mとなる。従って、図5のデータ処理構造における最大同時実行件数「M」は、M=max(ceiling(bi))で算出することができる。
また、パラメータ算出部24は、式(21)に、ステップS33で算出した最大同時実行件数「M」を代入し、図17のステップS21でチューニングポリシーパラメータの一つとして入力されるWebシステム2で許容される内部保留時間「yLimit」を超えないような内部保留リクエスト件数「L」をシミュレーションによって求める。
例えば、パラメータ算出部24は、ステップS33にて、図22のグラフに示すように、いくつかの「L」の値を式(21)に代入し、内部保留時間「yLimit」を超えないような内部保留リクエスト件数「LLimit」を求める。そして、パラメータ算出部24は、(LLimit−M)により、最大キュー長(QueueSize)を算出する。もし、(LLimit−M)が0以下になった場合、最大キュー長(QueueSize)は0、最大同時実行件数「M」は「LLimit」の値で、再度置き換える。
前記のステップS33において、図5の流量制御パラメータ「M,QueueSize」が求まる。図5のデータ処理構造の場合、Webシステム2全体で1種類の値の流量制御パラメータを反映する。
ステップS31にて、係数算出部23は、プロセスごとにおける仮近似式34bの係数と、処理識別子ごとにおける仮近似式34bの係数とが、概ね同じでないと判定した場合(ステップS31の「No」の場合)、処理識別子ごとの仮係数が、同一プロセス内において概ね同じであるか否か判定する(ステップS34)。例えば、係数算出部23は、図16の矢印A23〜A30に示す仮近似式34bの指数部の分母を切り上げて整数値化した値が、同一プロセス内において、概ね同じであるか否か判定する。具体的には、係数算出部23は、チューニングポリシーパラメータの一つとして与えられる処理識別子毎の類似度判定条件に従って、図16の矢印A23〜A25,A27,A28に示すプロセス「WebAPSv01;8009」の仮近似式34bの指数部の分母を切り上げて整数値化した値が、概ね同じ値であるか否か判定し、また、図16の矢印A26,A29,A30に示すプロセス「WebAPSv02;8008」の仮近似式34bの指数部の分母を切り上げて整数値化した値が、概ね同じ値であるか否か判定する。係数算出部23は、処理識別子ごとの仮近似式34bの係数が、同一プロセス内において概ね同じであると判定した場合、ステップS35の処理へ移行する。係数算出部23は、処理識別子ごとの仮近似式34bの係数が、同一プロセス内において概ね同じでないと判定した場合、ステップS37の処理へ移行する。
係数算出部23は、ステップS34にて、処理識別子「i」ごとの仮近似式34bの係数「bi」が、処理識別子「i」が属する同一プロセス「j」内において概ね同じであると判定した場合(ステップS34の「Yes」の場合)、ステップS35において、図5のデータ処理構造に応じた近似式(22)と近似式(23)の係数を算出する。
ただし、「L<M」、すなわち内部保留リクエスト件数「L」が稼働データ採取時の最大同時実行件数「M」の値未満である場合、近似式(22)は、先行ステップS25で用いた仮近似式(1)と同形であるので、係数「vj」および「wj」、図16の矢印A21,A22に示す仮近似式34bの係数の算出段階で求まっている。
従って、図16の矢印A21,A22に示す仮近似式34bの係数の算出段階で求まっており、仮近似式34bの定数項の係数「p」を近似式(22)での係数「vj」、仮近似式34bの指数部分母の係数「q」を近似式(22)での係数「wj」として引き当てる。
次に、稼働データから抽出した負荷量(内部保留リクエスト件数)と内部保留時間とのうち、Webシステム2に設定されている現在の最大同時実行件数「M」を超える負荷量(内部保留リクエスト件数)「Lk」と、その負荷量(内部保留リクエスト件数)「Lk」における内部保留時間「yk」と、「L≧M」の場合の式(15)と、を用いて回帰分析し係数δを算出し、式(22)と式(23)とが「L=M」で交差することを条件とするような式(16)に示す1次方程式を解いて、係数「rj」を算出する。
次に、パラメータ算出部24は、ステップS35までに算出された係数を式(23)に代入し、図8のデータ処理構造に応じた、新たな流量制御パラメータを算出する(ステップS36)。
例えば、パラメータ算出部24は、ステップS25にて算出された係数「vj、wj」と、ステップS35にて算出された係数「r」と、図17のステップS21でチューニングポリシーパラメータの一つとして入力された想定負荷量「L」とを式(23)に代入し、図4のG12のグラフに示すように、いくつかの「M」値を式(23)に代入し、内部保留時間「y」が最少となるような「M」の値を最大同時実行件数「Mj」の改善値として採択する。
また、パラメータ算出部24は、式(23)中の「M」をステップS36で算出した最大同時実行件数「Mj」の値で固定し、図17のステップS21でチューニングポリシーパラメータの一つとして入力されたプロセス「j」で許容される内部保留時間「yLimit」を超えないような内部保留リクエスト件数「Lj」をシミュレーションによって求める。
例えば、パラメータ算出部24は、ステップS36にて、図22のグラフに示すように、いくつかの「L」の値を式(23)に代入し、内部保留時間「yLimit」を超えないような内部保留リクエスト件数「Lj」を求める。そして、パラメータ算出部24は、(Lj−Mj)により、最大キュー長(QueueSizeJ)を算出する。もし、(Lj−M)が0以下になった場合、最大キュー長(QueueSizeJ)は0、最大同時実行件数「Mj」は「Lj」の値で、再度置き換える。
前記のステップS36において、図8のプロセス「j」ごとの流量制御パラメータ「Mj、QueueSizeJ」が求まる。図8のデータ処理構造の場合、プロセス毎に異なりうる値の流量制御パラメータをWebシステム2に反映する。
ステップS34にて、係数算出部23は、処理識別子ごとの仮近似式34bの係数が、同一プロセス内において概ね同じでないと判定した場合(ステップS34の「No」の場合)、図17のステップS22で受信したWebシステム2の流量制御パラメータの種類が、プロセスごとのみか否か判定する(ステップS37)。
ここで、ステップS34にて、係数算出部23が、処理識別子ごとの仮近似式34bの係数が、同一プロセス内において概ね同じでないと判定したということは、Webシステム2のデータ処理構造は、プロセス(キュー)に不均一な処理内容に対するリクエストが入力されるということになる。すなわち、Webシステム2は、図9または図10のどちらかのデータ処理構造を有することになる。
係数算出部23は、図17のステップS22で受信したWebシステム2の流量制御パラメータの種類が、プロセスごとのみにおいて存在するか否か判定することによって、Webシステム2のデータ処理構造が、図9のデータ処理構造であるか、または、図10のデータ処理構造であるか、を判定する。係数算出部23は、図17のステップS22で受信したWebシステム2の流量制御パラメータの種類が、プロセスごとのみであると判定した場合、ステップS38の処理へ移行する。係数算出部23は、図17のステップS22で受信したWebシステム2の流量制御パラメータの種類が、プロセスごとのみでないと判定した場合、ステップS40の処理へ移行する。
なお、図9のデータ処理構造の場合、プロセスの種類ごとにおける流量制御パラメータと、処理識別子の種類ごとにおける流量制御パラメータとが存在する。例えば、図9では、点線枠D1全体(プロセスP1)における流量制御パラメータ(1個)と、処理リクエスト(処理識別子)a,bごとにおける流量制御パラメータ(2個)が存在する。また、点線枠D2全体(プロセスP2)における流量制御パラメータ(1個)と、処理リクエスト(処理識別子)c,dごとにおける流量制御パラメータ(2個)が存在する。また、点線枠D3全体(プロセスP3)における流量制御パラメータ(1個)と、処理リクエスト(処理識別子)e,f,gごとにおける流量制御パラメータ(3個)が存在する。すなわち、図9では、合計10個の流量制御パラメータが存在する。
一方、図10のデータ処理構造の場合、プロセスの種類ごとにおける流量制御パラメータが存在する。例えば、図10では、点線枠D1(プロセスP1)における流量制御パラメータ(1個)と、点線枠D2(プロセスP2)における流量制御パラメータ(1個)と、点線枠D3a,S3b(プロセスP3)における流量制御パラメータ(1個)とが存在する。すなわち、図10では、合計3個の流量制御パラメータが存在する。
係数算出部23は、ステップS37にて、Webシステム2の流量制御パラメータの種類が、プロセスごとのみであると判定した場合(ステップS37の「Yes」の場合)、ステップS38において、図10のデータ処理構造に応じた近似式(24)の係数「ai」「bi」と、処理識別子「i」が属するプロセス「j」毎の近似式(25)の係数「vj」「wj」と、処理識別子「i」毎の係数「ri」と、を算出する。
ただし、「L<M」、すなわち内部保留リクエスト件数「L」が稼働データ採取時の最大同時実行件数「M」の値未満である場合、近似式(24)は、先行ステップS25で用いた仮近似式(1)と同形であるので、処理識別子「i」毎の係数「ai」および「bi」は、図16の矢印A23〜A30に示す仮近似式34bの係数の算出段階で求まっている。同様に、処理識別子「i」が属するプロセス「j」毎の係数「vj」とおよび「wj」も、図16の矢印A21,A22に示す仮近似式34bの係数の算出段階で求まっている。
次に、稼働データから抽出した負荷量(内部保留リクエスト件数)と内部保留時間とのうち、稼動データ採取時に処理識別子「i」毎に設定されていた最大同時実行件数「M」を超える負荷量(内部保留リクエスト件数)「Lk」と、その負荷量(内部保留リクエスト件数)「Lk」における内部保留時間「yk」と、「L≧M」の場合の式(15)と、を用いて回帰分析し係数δを算出し、式(24)と式(25)とが「L=M」で交差することを条件とするような式(16)に示す1次方程式を解いて、係数「ri」を算出する。
次に、パラメータ算出部24は、ステップS38までに算出された係数を式(25)に代入し、図10のデータ処理構造に応じた、新たな流量制御パラメータを算出する(ステップS39)。
例えば、パラメータ算出ステップS39は、ステップS25にて算出された「ai、bi、vj、wj」とステップS38にて算出された係数「ri」と、チューニングポリシーパラメータの一つとして与えられる想定負荷量「L」とを式(25)に代入し、図4のG12のグラフに示すように、いくつかの「M」値を式(25)に代入し、内部保留時間「y」が最少となるような「M」の値を最大同時実行件数「Mj」の改善値として採択する。
また、パラメータ算出部24は、式(23)中の「M」をステップS39で算出した最大同時実行件数「Mi」の値で固定し、図17のステップS21でチューニングポリシーパラメータの一つとして入力される処理識別子「i」が属するプロセス「j」で許容される内部保留時間「yLimit」を超えないような内部保留リクエスト件数「Li」をシミュレーションによって求める。
例えば、パラメータ算出部24は、ステップS39にて、図22のグラフに示すように、いくつかの「L」の値を式(23)に代入し、内部保留時間「yLimit」を超えないような内部保留リクエスト件数「Li」を求める。そして、パラメータ算出部24は、(Li−Mi)により、最大キュー長(QueueSizei)を算出する。もし、(Li−Mi)が0以下になった場合、最大キュー長(QueueSizei)は0、最大同時実行件数「Mi」は「Li」の値で、再度置き換える。
そして、パラメータ算出部24(ステップS41)は、プロセス「j」に属する処理識別子「i」についての最大同時実行件数「Mi」の加重平均を算出し、算出した加重平均をプロセス「j」における最大同時実行件数「Mj」として採用する。また、パラメータ算出部24は、プロセス「j」に属する処理識別子「i」についての最大キュー長(QueueSizei)の加重平均を算出し、算出した加重平均をプロセス「j」における最大キュー長(QueueSizej)として採用する。
ここで、「処理識別子毎の改善値に対する加重の係数」については、チューニングポリシーパラメータの1つとして直接的または間接的に入力される、あるいは、処理装置の中のカスタマイズ可能なロジックとして組込んで、入力操作を省力化しても良い。
図10のデータ処理構造では、プロセス「j」毎の流量制御パラメータである最大同時実行件数「Mj」と最大キュー長(QueueSizej)のみをWebシステム2に反映し、処理識別子「i」毎の流量制御パラメータは反映しない。
係数算出部23は、ステップS37にて、Webシステム2の流量制御パラメータの種類が、プロセスごとのみであると判定した場合(ステップS37の「Yes」の場合)、ステップS40において、図9のデータ処理構造に応じた近似式(24)の係数「ai」「bi」と、処理識別子「i」が属するプロセス「j」毎の近似式(25)のの係数「vj」「wj」と、処理識別子「i」毎の係数「ri」と、を算出する。
ただし、「L<M」、すなわち内部保留リクエスト件数「L」が稼働データ採取時の最大同時実行件数「M」の値未満である場合、近似式(24)は、先行ステップS25で用いた仮近似式(1)と同形であるので、処理識別子「i」毎の係数「ai」および「bi」は、図16の矢印A23〜A30に示す仮近似式34bの係数の算出段階で求まっている。同様に、処理識別子「i」が属するプロセス「j」毎の係数「vj」とおよび「wj」も、図16の矢印A21,A22に示す仮近似式34bの係数の算出段階で求まっている。
次に、稼働データから抽出した負荷量(内部保留リクエスト件数)と内部保留時間とのうち、稼動データ採取時に処理識別子「i」毎に設定されていた最大同時実行件数「M」を超える負荷量(内部保留リクエスト件数)「Lk」と、その負荷量(内部保留リクエスト件数)「Lk」における内部保留時間「yk」と、「L≧M」の場合の式(15)と、を用いて回帰分析し係数δを算出し、式(24)と式(25)とが「L=M」で交差することを条件とするような式(16)に示す1次方程式を解いて、係数「ri」を算出する。
次に、パラメータ算出部24は、ステップS40までに算出された係数を式(25)に代入し、図9のデータ処理構造に応じた、新たな流量制御パラメータを算出する(ステップS41)。
例えば、パラメータ算出部24は、ステップS25にて算出された係数「ai、bi、vj、wj」と、ステップS40にて算出された係数「ri」と、図17のステップS21でチューニングポリシーパラメータの一つとして入力された想定負荷量「L」とを、式(25)に代入し、図4のG12のグラフに示すように、いくつかの「M」値を式(25)に代入し、内部保留時間「y」が最少となるような「M」の値を最大同時実行件数「Mi」の改善値として採択する。
また、パラメータ算出部24は、式(25)中の「M」をステップS41で算出した最大同時実行件数「Mi」の値で固定し、図17のステップS21でチューニングポリシーパラメータの一つとして入力される処理識別子「i」で許容される内部保留時間「yLimit」を超えないような内部保留リクエスト件数「Li」をシミュレーションによって求める。
例えば、パラメータ算出部24は、ステップS41にて、図22のグラフに示すように、いくつかの「L」の値を式(23)に代入し、内部保留時間「yLimit」を超えないような内部保留リクエスト件数「Li」を求める。そして、パラメータ算出部24は、(Li−Mi)により、最大キュー長(QueueSizei)を算出する。もし、(Li−Mi)が0以下になった場合、最大キュー長(QueueSizei)は0、最大同時実行件数「Mi」は「Li」の値で、再度置き換える。
また、パラメータ算出部24は、プロセス「j」に属する処理識別子「i」毎の最大同時実行件数「Mi」の最大値を、そのプロセス「j」における最大同時実行件数「Mj」とする。また、パラメータ算出部24は、プロセス「j」に属する処理識別子「i」における最大キュー長(QueueSizei)の最大値を、そのプロセス「j」における最大キュー長(QueueSizej)とする。
これにより、図9のデータ処理構造に対して、処理識別子「i」の種類ごとにおける流量制御パラメータ「Mi,QueueSizeMi」と、プロセス「j」の種類ごとにおける流量制御パラメータ「Mj,QueueSizej」が求まる。
図9のデータ処理構造では、プロセス「j」毎の流量制御パラメータである最大同時実行件数「Mj」と最大キュー長だけではなく、処理識別子「i」毎の流量制御パラメータも、Webシステム2に反映する。
なお、図9のデータ処理構造に対する流量制御パラメータの算出手順と、図10のデータ処理構造に対する流量制御パラメータの算出手順とは、適用する近似式も処理識別子毎の流量制御パラメータの算出も同一処理であって、処理識別子毎の流量制御パラメータからプロセス単位の流量制御パラメータを算出する加重を最大値に固定している処が異なる。
以上、図18に示したフローチャートの動作により、Webシステム2のデータ処理構造に応じた流量制御パラメータを算出することができる。
なお、図10のデータ処理構成では、チューニングポリシーパラメータの一つとして与えられる条件に従って流量制御パラメータを加重平均して求めるとしたが、加重平均の仕方には、例えば、次のような方法がある。例えば、処理識別子「i」の処理リクエストの発生比率を加重パラメータとする。または、処理識別子「i」ごとの合計処理時間の比率を加重パラメータとする。または、想定内部保留リクエスト件数「L」において、最も遅い処理識別子「i」に対する加重パラメータを「1」、その他の処理識別子に対する加重パラメータを「0」とする。または、稼働データ中で内部保留時間の合計が最も長かった処理識別子「i」に対する加重パラメータを「1」、その他の処理識別子に対する加重パラメータを「0」とする。または、処理識別子「i」に対する最大同時実行件数の新たな候補値「Mi」の最小値に対する加重パラメータを「1」、その他の処理識別子に対する加重パラメータを「0」とする。または、処理識別子「i」に対する最大同時実行件数の新たな候補値「Mi」の最大値に対する加重パラメータを「1」、その他の処理識別子に対する加重パラメータを「0」とする。または、最大同時実行件数の新たな候補値「Mi」の中央値を最大同時実行件数の新たな値とする。または、指定された処理識別子「i」に対する最大同時実行件数の新たな候補値「Mi」の加重パラメータを1、その他の処理識別子に対する加重パラメータを「0」とする。
上述したフロー図の各処理単位は、情報処理装置1の処理を理解容易にするために、主な処理内容に応じて分割したものである。処理単位の分割の仕方や名称によって、本願発明が制限されることはない。情報処理装置1の処理は、処理内容に応じて、さらに多くの処理単位に分割することもできる。また、1つの処理単位がさらに多くの処理を含むように分割することもできる。
図19は、情報処理装置1の機能を実現するハードウェア構成の一例を示した図である。情報処理装置1は、例えば、図19に示すような、CPU等の演算装置41と、RAM(Random Access Memory)などの主記憶装置42と、HDD(Hard Disk Drive)等の補助記憶装置43と、有線又は無線により通信ネットワークと接続するための通信インターフェイス(I/F)44と、マウス、キーボード、タッチセンサーやタッチパネルなどの入力装置45と、液晶ディスプレイなどの表示装置46と、DVD(Digital Versatile Disk)などの持ち運び可能な記憶媒体に対する情報の読み書きを行う読み書き装置47と、有している。
例えば、情報処理装置1の抽出部22と、係数算出部23と、パラメータ算出部24との機能は、補助記憶装置43などから主記憶装置42にロードされた所定のプログラムを演算装置41が実行することで実現される。記憶部26は、例えば、演算装置41が主記憶装置42または補助記憶装置43を利用することで実現される。受信部21と送信部25は、演算装置41が通信I/F64を利用することで実現される。
なお、上記の所定のプログラムは、例えば、読み書き装置47により読み取られた記憶媒体からインストールされてもよいし、通信I/F44を介してネットワークからインストールされてもよい。
また、抽出部22と、係数算出部23と、パラメータ算出部24との一部またはすべての機能は、例えば、演算装置、記憶装置、駆動回路などを備えるASIC(Application Specific Integrated Circuit)を備えるコントローラー基板等により実現してもよい。
上述した情報処理装置1の機能構成は、情報処理装置1の構成を理解容易にするために、主な処理内容に応じて分類したものである。構成要素の分類の仕方や名称によって、本願発明が制限されることはない。情報処理装置1の構成は、処理内容に応じて、さらに多くの構成要素に分類することもできる。また、1つの構成要素がさらに多くの処理を実行するように分類することもできる。また、各構成要素の処理は、1つのハードウェアで実行されてもよいし、複数のハードウェアで実行されてもよい。
このように、情報処理装置1は、Webシステム2の稼働データから、内部保留リクエスト件数「L」が最大同時実行件数「M」より小さい場合の近似式の仮係数を算出し、算出した仮係数に基づいて、Webシステム2のデータ処理構造に応じた近似式を選択する。そして、情報処理装置1は、選択した近似式の係数を算出し、係数を算出した近似式から、Webシステム2の新たな流量制御パラメータを算出する。これにより、Webシステム2のデータ処理構造に応じた適切な流量制御パラメータを算出することができる。
また、情報処理装置1は、Webシステム2の稼働データから、Webシステム2の新たな流量制御パラメータを算出する。すなわち、情報処理装置1は、端末装置3とWebシステム2との間に依存するデータ(例えば、図2のステップS1〜S4,S9〜S11間)を含まないWebシステム2のデータから、Webシステム2の新たな流量制御パラメータを算出する。 これにより、情報処理装置1は、Webシステム2のデータ処理構造に応じた、高精度な流量制御パラメータを算出することができる。
図20は、端末装置3からWebシステム2に負荷を与えた場合の最大同時実行件数と応答時間との関係を示した図である。図20の実線で示すグラフは、端末装置3から負荷を与え、端末装置3において、処理の応答時間を測定した、Webシステム2の最大同時実行件数と応答時間との関係を示したグラフである。また、図20の点線で示すグラフは、Webシステム2に直接負荷を与え、Webシステム2において、処理の応答時間を測定した、Webシステム2の最大同時実行件数と応答時間との関係を示したグラフである。
端末装置3から、Webシステム2に負荷を与え、端末装置3において応答時間を測定し、Webシステム2の最適な最大同時実行件数を求めようとすると、矢印A41a,41bに示すように、誤差を含む恐れがある。これは、Webシステム2以外の端末装置3やネットワーク4による、応答時間の誤差が含まれるからである。
一方、本願発明の情報処理装置1は、上記したように、Webシステム2の稼働データの内の流量制御パラメータによって制御される内部処理の開始時刻と終了時刻とから、Webシステム2の新たな流量制御パラメータを算出するので、誤差の少ない高精度な流量制御パラメータを算出することができる。
また、情報処理装置1は、上記したように、Webシステム2の稼働データから、Webシステム2のデータ処理構造に応じた近似式の係数を算出し、流量制御パラメータ変更後の内部保留時間をシミュレートして、内部保留時間が短くなるような流量制御パラメータを採用するので、大量のデータ投入が必要となる負荷投入実験の繰り返しによる応答時間の比較を行う必要がなく、流量制御パラメータを容易に求めることができる。
また、専門家の分析により、流量制御パラメータを求めることは容易ではなかった。
図21は、流量制御パラメータのチューニング例を説明する図である。図21には、遅い処理のプロセスと早い処理のプロセスの、負荷量に対する内部保留時間の関係が示してある。
現在、1つの流量制御パラメータで制御されるプロセスに早い処理と遅い処理とが含まれるようなWebシステムに、最大同時実行件数として、「6」が設定されているとする。この場合において、早い処理のプロセスの内部保留時間を短くするため、最大同時実行件数を「6」から「20」へ変更するとする。この場合、早い処理のプロセスの内部保留時間は、矢印A42aに示すように短くなるが、遅い処理のプロセスの内部保留時間は、矢印A42bに示すように長くなる。すなわち、流量制御パラメータのチューニングは、トレードオフの関係を有する場合があり、流量制御パラメータを求めることは容易ではなかった。特に、図9に示すデータ処理構造の場合、多くの負荷投入実験と専門家の高度な分析を必要とし、流量制御パラメータを求めることは容易でなかった。これに対し、情報処理装置1によれば、高精度な流量制御パラメータを容易に求めることができる。
また、1段のM/M/Cモデルだけでは、処理窓口に入っている処理リクエストの処理時間を見積もることはできない。すなわち、1段のM/M/Cモデルだけでは、内部保留リクエスト件数「L」と、最大同時実行件数「M」とに対する内部保留時間の式f(M,L)は、内部保留リクエスト件数「L」が最大同時実行件数「M」を超える部分の傾きしか得られず、L<Mの場合の内部保留時間を算出できない。
図22は、許容待ち時間による最大キュー長の算出を説明する図である。図22には、最大同時実行件数が「10」の場合の、内部保留リクエスト件数に対する内部保留時間の関係の例が示してある。図22において、例えば、Webシステムで許容される内部保留時間を「8秒」とした場合、最大同時実行件数を「9」、最大キュー長を「0」とすることはできなかった。一方、情報処理装置1では、最大同時実行件数において変曲点がある場合でも、流量制御パラメータを算出することができる。
以上、本発明について実施形態を用いて説明したが、本発明の技術的範囲は上記実施形態に記載の範囲には限定されない。上記実施形態に多様な変更または改良を加えることが可能であることが当業者には明らかである。また、そのような変更または改良を加えた形態も本発明の技術的範囲に含まれ得ることが、特許請求の範囲の記載から明らかである。
例えば、内部保留リクエスト件数の発生頻度が少ないものに対しては、仮近似式を算出する際、その内部保留リクエスト件数の内部保留時間の平均値を用いないようにしてもよい。例えば、図16の1マスの斜線に示す内部保留リクエスト件数「8」の発生頻度がチューニングポリシーパラメータの一つとして与えられた閾値より少なかった場合、係数算出部23は、1マスの斜線の平均値を回帰分析用のデータとして用いないで、矢印A27に示す仮近似式を算出する。
また、係数算出部23は、内部保留リクエスト件数の種類が少ないものに対しては、仮近似式を算出しないようにしてもよい。例えば、図16の5マスの斜線に示す内部保留リクエスト件数は、5種類しかない。この場合、係数算出部23は、チューニングポリシーパラメータの一つとして与えられた閾値より内部保留リクエスト件数の種類が少ないもデータを、矢印A28に示す行の仮近似式を算出しないようにしてもよい。
また、内部保留リクエスト件数に対する内部保留時間の平均値が、隣接する内部保留リクエスト件数に対する内部保留時間の平均値から予想される値の範囲から外れている場合、その平均値を除いて、仮近似式を算出するようにしてもよい。ここで除外する条件もチューニングポリシーパラメータの一つとして与えられてよい。
図23は、内部保留リクエスト件数に対する内部保留時間の平均値をグラフ化した図である。内部保留リクエスト件数に対する内部保留時間の平均値をグラフ化すると、例えば、図23のようになる。
図23の内部保留リクエスト件数「5」、「11」に示す矢印A51a,51bは、平均値を結ぶ曲線から外れている。すなわち、矢印A51,A52に示す内部保留リクエスト件数「5」、「11」に対する平均値は、予想される値から外れていると考えられる。この場合、係数算出部23は、矢印A51a,51bに示す内部保留リクエスト件数「5」、「11」に対する平均値を除いて、仮近似式を算出するようにしてもよい。
また、図23では、内部保留リクエスト件数「2」において変曲点が存在する。このように、内部保留リクエスト件数に対する平均値に変曲点が存在する場合、係数算出部23は、変曲点の内部保留リクエスト件数を、仮近似式を算出する下限値として、再度、仮近似式を算出するようにしてもよい。例えば、係数算出部23は、内部保留リクエスト件数「2」以上の平均値を用いて、仮近似式を算出するようにする(図23の内部保留リクエスト件数「1」の平均値を除いて、仮近似式を算出する)。
また、上記では、受信部21は、Webシステム2から稼働データを受信するとしたが、例えば、Webシステム2の稼働データをCD−ROMなどの記憶媒体に記憶し、読み書き装置47から、記憶媒体に記憶された稼働データを受信(入力)するようにしてもよい。
また、受信部21は、Webシステム2から、Webシステム2に現在設定されている流量制御パラメータを受信するとしたが、Webシステム2の管理者から、Webシステム2に現在設定されている流量制御パラメータを受付けるようにしてもよい。
また、上記では、送信部25は、新たに算出された流量制御パラメータをWebシステム2に送信するとしたが、例えば、端末装置のディスプレイに表示するようにしてもよい。そして、例えば、Webシステム2を管理する管理者が、ディスプレイに表示された流量制御パラメータを、Webシステム2に設定するようにしてもよい。
また、情報処理装置1は、Webシステム2から、稼働データとWebシステム2に現在設定されている流量制御パラメータとを受信するとしたが、Webシステム2の管理者が、情報処理装置1に入力するようにしてもよい。例えば、Webシステム2の管理者は、Webシステム2の稼働データをCD−ROM等の記憶媒体に記憶し、そのCD−ROMを情報処理装置1に読み込ませるようにしてもよい。
また、送信部25は、パラメータ算出部24によって算出された流量制御パラメータをWebシステム2に送信するとしたが、Webシステム2の管理者が、パラメータ算出部24によって算出された流量制御パラメータを、Webシステム2に設定してもよい。
また、チューニングポリシーパラメータには、少なくとも以下のものが含まれる。
・処理識別情報の抽出条件
・処理識別子毎の流量制御パラメータを適用可能か否かの情報
・想定負荷量
・内部保留時間の許容限界(内部保留時間の許容限界「Ylimit」)
(処理識別子毎に異なるキューサイズが設定可能(=処理識別子毎の流量制御パラメータが有るWebシステム)な場合、処理識別子毎の内部保留時間の許容限界
また、チューニングポリシーパラメータは、以下の情報を、直接的、または、間接的に含み、さらに、処理装置の中のカスタマイズ可能なロジックとして組込んで、入力操作を省力化しても良い。
<稼働データの入力先に関する指定内容>
・読み込み可能な場所に有る稼働データの内、処理対象とするWebサーバやプロセスを選択する手段
・読み込み可能な稼働データの内、分析対象とする期間
(ログレコードに記録されている処理終了時刻の下限と上限)
<処理識別情報の抽出指定パラメータ>
・稼働データの採取元の、物理的なWebサーバの識別情報やプロセスの識別情報から、回帰分析用の情報における、プロセス単位の処理識別子を付与する、情報抽出規則(例えば、負荷分散機を適用するWebシステムで、複数台のWebサーバを、1種類のWebサーバと見なす、等)
・稼働データから、処理識別情報を抽出する条件(図14の33a)、および、処理識別子の付与規則(図14の33b)
・稼働データのログファイルに記録されるダウンロードデータ長等の数量を、処理識別子に反映する条件(例えば、ダウンロードしたデータ長の対数を有効数字2ケタで切り上げた数を、処理識別情報の一部にする、等)
<想定負荷量に関する指定内容>
・内部保留時間の近似式(f(M,L))与えるLの値を直接指定する。
・稼働データ中の内部保留リクエスト件数(L)の最大値を用いる。
・稼働データ中の内部保留リクエスト件数(L)の平均値を用いる。
・許容する内部保留時間の上限値(YLimit)に達するような内部保留リクエスト件数(L)を用いる。
(例えば、流量制御パラメータ設定値を変更する前の稼働システムで、処理識別子「i」の内部保留時間が平均10秒であった内部保留リクエスト件数(Li))
・処理識別子毎のジョブミックス(処理識別子毎のリクエスト発生頻度)
<処理識別子毎の改善値に対する加重を間接的に指定する内容>
・処理識別子毎の流量制御パラメータの加重和によってシステム全体の流量制御パラメータを算出する為の係数、または、下段に示すような、係数を導出できるような条件
・採取データの稼働期間のジョブミックスに応じた平均
処理識別子「i」毎の発生比率を加重とする。
・採取データの稼働期間の処理識別子「i」毎の延べ走行時間に応じた平均
処理識別子「i」毎の合計処理時間の比率を加重とする。
・最遅い応答時間の最小化を優先する
想定内部保留リクエスト件数「L」において、最も遅い処理識別子「i」に対する加重を1、その他の処理識別子に対する加重を0とする。
・稼働データ中で内部保留時間の合計が最も長かった処理識別子「i」に対する加重を1、その他の処理識別子に対する加重を0とする。
・最急勾配の処理時間の最小化
処理識別子「i」に対する最大同時実行件数設定値の改善値の候補「Mi」が最少値に対する加重を1、その他の処理識別子に対する加重を0とする。
・内部保留リクエスト件数の最大化
処理識別子「i」に対する最大同時実行件数設定値の改善値の候補「Mi」が最大値に対する加重を1、その他の処理識別子に対する加重を0とする。
(特に、この選択肢は、uCosminexus(登録商標)の例のように、URLグループ毎の流量制御パラメータと、プロセス全体の流量制御パラメータ等で、多重に内部保留リクエスト件数を制御するパラメータがある場合にも必要となる)
・中央値
最大同時実行件数設定値の改善値の候補「Mi」の中央値を最大同時実行件数設定値の改善値とする。
・処理識別子が指定された処理の内部保留時間の最小化
指定された処理識別子「i」に対する最大同時実行件数設定値の改善値の候補「Mi」の加重を1、その他の処理識別子に対する加重を0とする。
<処理識別子毎の類似度判定条件>
・同一プロセス「j」に属する処理識別子「i」が「均一処理」であるか否かを判別する条件
処理識別子が「均一処理」であるか否か、仮近似式34bの指数部係値が「概ね同じ」であるか否かを判別する条件として、指数部係数「bi」の逆数を整数に切り上げた値の差異が1以内である場合を均一であると見なす、あるいは、「bi」の比率の差異が10%以内である場合を均一であると見なす、等の条件。
また、本発明は、情報処理装置1の流量制御パラメータを算出する方法、プログラム、および当該プログラムを記憶した記憶媒体として提供することもできる。