(57)【特許請求の範囲】
【請求項１】
外部からの処理要求に応じてサービスを提供するシステムを構成し、且つ、前記サービスを提供するためのアプリケーションプログラムを実行する、サーバ装置であって、
当該サーバ装置のリソースの使用状況を特定するリソース情報を取得する、リソース情報取得部と、
処理要求が書き込まれたレコードを保持するデータベースサーバから、ステータスが未処理となっている前記レコードを、前記アプリケーションプログラムの処理対象となるジョブとして取得し、その際、前記データベースサーバから、更に、前記レコードの総数と、ステータスが未処理となっているレコードの総数とを取得し、そして、取得したジョブを前記アプリケーションプログラムに渡して実行させる、処理制御部と、
前記処理制御部に対して、取得された前記リソース情報が特定する前記リソースの使用状況が、第１の条件である適正値に最も近くなるように、前記処理対象となるジョブの取得を行なわせ、そして、
取得された前記リソース情報が特定する前記リソースの使用状況が、第２の条件である上限値を越える場合に、前記処理制御部に対して、前記リソースの使用状況が前記適正値に近づくように、前記アプリケーションプログラムに前記ジョブの実行をサスペンドさせる、リソース監視部と、
前記レコードの総数から、当該サーバ装置が処理したレコードの数と、ステータスが未処理となっているレコードの総数と、を減算して得られた値を、前記システムを構成する他のサーバ装置の能力として計算する、能力計算部と、
計算された前記他のサーバ装置の能力と、当該サーバ装置の能力である、当該サーバ装置が同時に実行できるレコード数と、を比較し、比較結果に応じて、前記処理制御部が次に前記ジョブを取得する際における、前記ジョブの数を計算する、ジョブ数計算部と、
を備えている、ことを特徴とするサーバ装置。
【請求項２】
前記リソース情報が、前記リソースの使用状況として、当該サーバ装置における、ＣＰＵ使用率、メモリ使用率、スワップメモリ使用率、オープンファイル数、オープンスレッド数、当該サーバ装置が備える記憶装置の使用量、及び、要求元が同一であり、且つ同時に実行されているプロセスの数、のうちの少なくとも一つを特定する、
請求項１に記載のサーバ装置。
【請求項３】
外部からの処理要求に応じてサービスを提供するシステムであって、
前記サービスを提供するためのアプリケーションプログラムを実行する、複数のサーバ装置を備え、
前記複数のサーバ装置それぞれは、
当該サーバ装置のリソースの使用状況を特定するリソース情報を取得する、リソース情報取得部と、
処理要求が書き込まれたレコードを保持するデータベースサーバから、ステータスが未処理となっている前記レコードを、前記アプリケーションプログラムの処理対象となるジョブとして取得し、その際、前記データベースサーバから、更に、前記レコードの総数と、ステータスが未処理となっているレコードの総数とを取得し、そして、取得したジョブを前記アプリケーションプログラムに渡して実行させる、処理制御部と、
前記処理制御部に対して、取得された前記リソース情報が特定する前記リソースの使用状況が、第１の条件である適正値に最も近くなるように、前記処理対象となるジョブの取得を行なわせ、そして、
取得された前記リソース情報が特定する前記リソースの使用状況が、第２の条件である上限値を越える場合に、前記処理制御部に対して、前記リソースの使用状況が前記適正値に近づくように、前記アプリケーションプログラムに前記ジョブの実行をサスペンドさせる、リソース監視部と、
前記レコードの総数から、当該サーバ装置が処理したレコードの数と、ステータスが未処理となっているレコードの総数と、を減算して得られた値を、前記システムを構成する他のサーバ装置の能力として計算する、能力計算部と、
計算された前記他のサーバ装置の能力と、当該サーバ装置の能力である、当該サーバ装置が同時に実行できるレコード数と、を比較し、比較結果に応じて、前記処理制御部が次に前記ジョブを取得する際における、前記ジョブの数を計算する、ジョブ数計算部と、
を備えている、ことを特徴とするコンピュータシステム。
【請求項４】
外部からの処理要求に応じてサービスを提供するシステムにおける負荷を軽減するための方法であって、
（ａ）前記システムを構成し、且つ、前記サービスを提供するためのアプリケーションプログラムを実行する、サーバ装置によって、当該サーバ装置のリソースの使用状況を特定するリソース情報を取得する、ステップと、
（ｂ）前記サーバ装置によって、前記（ａ）のステップで取得された前記リソース情報が特定する前記リソースの使用状況が、第１の条件である適正値に最も近くなるように、処理要求が書き込まれたレコードを保持するデータベースサーバから、ステータスが未処理となっている前記レコードを、前記アプリケーションプログラムの処理対象となるジョブとして取得し、その際、前記データベースサーバから、更に、前記レコードの総数と、ステータスが未処理となっているレコードの総数とを取得する、ステップと、
（ｃ）前記サーバ装置によって、前記（ａ）のステップで取得された前記リソース情報が特定する前記リソースの使用状況が、第２の条件である上限値を越える場合に、前記リソースの使用状況が前記適正値に近づくように、前記アプリケーションプログラムにおいて、前記ジョブの実行をサスペンドさせる、ステップと、
（ｄ）前記サーバ装置によって、前記レコードの総数から、当該サーバ装置が処理したレコードの数と、ステータスが未処理となっているレコードの総数と、を減算して得られた値を、前記システムを構成する他のサーバ装置の能力として計算する、ステップと、
（ｅ）前記サーバ装置によって、前記（ｄ）のステップで計算された前記他のサーバ装置の能力と、前記サーバ装置の能力である、当該サーバ装置が同時に実行できるレコード数と、を比較し、比較結果に応じて、次の前記（ｂ）のステップで前記ジョブを取得する際における、前記ジョブの数を計算する、ステップと、
を有し、
前記（ｄ）のステップ及び前記（ｅ）のステップを、前記（ａ）〜（ｃ）のステップが少なくとも一回実行された後に、実行する、ことを特徴とする負荷分散方法。
【請求項５】
前記リソース情報が、前記リソースの使用状況として、当該サーバ装置における、ＣＰＵ使用率、メモリ使用率、スワップメモリ使用率、オープンファイル数、オープンスレッド数、当該サーバ装置が備える記憶装置の使用量、及び、要求元が同一であり、且つ同時に実行されているプロセスの数、のうちの少なくとも一つを特定する、
請求項４に記載の負荷分散方法。
【請求項６】
外部からの処理要求に応じてサービスを提供するシステムを構成し、且つ、前記サービスを提供するためのアプリケーションプログラムを実行する、コンピュータに、
（ａ）当該コンピュータのリソースの使用状況を特定するリソース情報を取得する、ステップと、
（ｂ）前記（ａ）のステップで取得された前記リソース情報が特定する前記リソースの使用状況が、第１の条件である適正値に最も近くなるように、処理要求が書き込まれたレコードを保持するデータベースサーバから、ステータスが未処理となっている前記レコードを、前記アプリケーションプログラムの処理対象となるジョブとして取得し、その際、前記データベースサーバから、更に、前記レコードの総数と、ステータスが未処理となっているレコードの総数とを取得する、ステップと、
（ｃ）前記（ａ）のステップで取得された前記リソース情報が特定する前記リソースの使用状況が、第２の条件である上限値を越える場合に、前記リソースの使用状況が前記適正値に近づくように、前記アプリケーションプログラムにおいて、前記ジョブの実行をサスペンドさせる、ステップと、
（ｄ）前記レコードの総数から、当該コンピュータが処理したレコードの数と、ステータスが未処理となっているレコードの総数と、を減算して得られた値を、前記システムを構成する他のコンピュータの能力として計算する、ステップと、
（ｅ）前記（ｄ）のステップで計算された前記他のコンピュータの能力と、当該コンピュータの能力である、当該コンピュータが同時に実行できるレコード数と、を比較し、比較結果に応じて、次の前記（ｂ）のステップで前記ジョブを取得する際における、前記ジョブの数を計算する、ステップと、
を実行させ、
前記（ｄ）のステップ及び前記（ｅ）のステップを、前記（ａ）〜（ｃ）のステップが少なくとも一回実行された後に、実行する、プログラム。
【請求項７】
前記リソース情報が、前記リソースの使用状況として、当該コンピュータにおける、ＣＰＵ使用率、メモリ使用率、スワップメモリ使用率、オープンファイル数、オープンスレッド数、当該コンピュータが備える記憶装置の使用量、及び、要求元が同一であり、且つ同時に実行されているプロセスの数、のうちの少なくとも一つを特定する、
請求項６に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のサーバ装置を備えたコンピュータシステム、それに用いられるサーバ装置、コンピュータシステムにおける負荷を分散させるための負荷分散方法、及びこれらを実現するためのプログラムに関する。
【背景技術】
【０００２】
従来から、複数のクライアントからの大量の処理要求に対応するため、複数台のアプリケーションサーバ（以下「ＡＰサーバ」と表記する。）とロードバランサとで構築されたシステムが利用されている。このうち、ロードバランサは、クライアントからの処理要求を一元的に管理する装置であり、Ｐｕｓｈ型でリクエストをＡＰサーバに送信する。複数のクライアントから送信されてきた処理要求は、ロードバランサによって、各ＡＰに均等に振分けられる。この結果、システムの負荷分散が図られる。
【０００３】
但し、ロードバランサは、各ＡＰサーバのリソース状況及び負荷状況を考慮する機能を備えていないため、各ＡＰサーバに処理可能量以上の処理要求が送信されてしまう場合がある。この場合、処理速度が低下したり、オーバーフローによって処理が不能となったりする可能性がある。
【０００４】
このため、特許文献１は、ロードバランサを設置せず、ＡＰサーバ自体に処理要求を分散処理させる機能を備えさせたシステムを提案している。具体的には、特許文献１に開示されたシステムでは、クライアントからの処理要求を受信したＡＰサーバは、各ＡＰサーバの負荷状況に応じて、処理要求に対する処理を行なうＡＰサーバを決定し、そこに処理要求を送信する。また、各ＡＰサーバは、他のＡＰサーバからリクエストを受信すると、自己の負荷状況に応じて、自身で処理を行なうか、別のＡＰサーバに処理の代行を求めるかを決定することもできる。
【０００５】
特許文献１に開示されたシステムによれば、各ＡＰサーバに処理可能量以上の処理要求が送信されてしまう事態が回避されるので、システムにおける処理速度の低下及びオーバーフローの発生は抑制されると考えられる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】国際公開２００９／０３４９９４号
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、特許文献１に開示されたシステムにおいては、各ＡＰサーバは、自身又は他のＡＰサーバのリソースの使用状況を動的に監視しているわけではない。このため、特許文献１に開示されたシステムでは、一時的な処理速度の低下及びオーバーフローの発生は抑制できたとしても、システム全体における負荷分散を行なうことは困難である。
【０００８】
本発明の目的の一例は、上記問題を解消し、複数のサーバ装置で構成されたシステムにおいて、各サーバ装置のリソースの使用状況を動的に鑑みた負荷分散を実施し得る、コンピュータシステム、サーバ装置、負荷分散方法、及びプログラムを提供することにある。
【課題を解決するための手段】
【０００９】
上記目的を達成するため、本発明におけるサーバ装置は、外部からの処理要求に応じてサービスを提供するシステムを構成し、且つ、前記サービスを提供するためのアプリケーションプログラムを実行する、サーバ装置であって、
当該サーバ装置のリソースの使用状況を特定するリソース情報を取得する、リソース情報取得部と、
前記アプリケーションプログラムの処理対象となるジョブを外部から取得し、取得したジョブを前記アプリケーションプログラムに渡して実行させる、処理制御部と、
前記処理制御部に対して、取得された前記リソース情報に基づいて、前記リソースの使用状況の目標となるように設定された第１の条件を満たすように、前記処理対象となるジョブの取得を行なわせ、そして、
取得された前記リソース情報が、前記リソースの使用状況についての上限として設定された第２の条件を越える場合に、前記アプリケーションプログラムに前記ジョブの実行をサスペンドさせる、リソース監視部と、
を備えている、ことを特徴とする。
【００１０】
上記目的を達成するため、本発明におけるコンピュータシステムは、外部からの処理要求に応じてサービスを提供するシステムであって、
前記サービスを提供するためのアプリケーションプログラムを実行する、複数のサーバ装置を備え、
前記複数のサーバ装置それぞれは、
当該サーバ装置のリソースの使用状況を特定するリソース情報を取得する、リソース情報取得部と、
前記アプリケーションプログラムの処理対象となるジョブを外部から取得し、取得したジョブを前記アプリケーションプログラムに渡して実行させる、処理制御部と、
前記処理制御部に対して、取得された前記リソース情報に基づいて、前記リソースの使用状況の目標となるように設定された第１の条件を満たすように、前記処理対象となるジョブの取得を行なわせ、そして、
取得された前記リソース情報が、前記リソースの使用状況についての上限として設定された第２の条件を越える場合に、前記アプリケーションプログラムに前記ジョブの実行をサスペンドさせる、リソース監視部と、
を備えている、ことを特徴とする。
【００１１】
また、上記目的を達成するため、本発明における負荷分散方法は、外部からの処理要求に応じてサービスを提供するシステムにおける負荷を軽減するための方法であって、
（ａ）前記システムを構成し、且つ、前記サービスを提供するためのアプリケーションプログラムを実行する、サーバ装置によって、当該サーバ装置のリソースの使用状況を特定するリソース情報を取得する、ステップと、
（ｂ）前記サーバ装置によって、前記（ａ）のステップで取得された前記リソース情報に基づいて、前記リソースの使用状況の目標となるように設定された第１の条件を満たすように、前記アプリケーションプログラムの処理対象となるジョブを外部から取得する、ステップと、
（ｃ）前記サーバ装置によって、前記（ａ）のステップで取得された前記リソース情報が、前記リソースの使用状況についての上限として設定された第２の条件を越える場合に、前記アプリケーションプログラムにおいて、前記ジョブの実行をサスペンドさせる、ステップと、
を有する、ことを特徴とする。
【００１２】
更に、上記目的を達成するため、本発明におけるプログラムは、外部からの処理要求に応じてサービスを提供するシステムを構成し、且つ、前記サービスを提供するためのアプリケーションプログラムを実行する、コンピュータに、
（ａ）当該コンピュータのリソースの使用状況を特定するリソース情報を取得する、ステップと、
（ｂ）前記（ａ）のステップで取得された前記リソース情報に基づいて、前記リソースの使用状況の目標となるように設定された第１の条件を満たすように、前記アプリケーションプログラムの処理対象となるジョブを外部から取得する、ステップと、
（ｃ）前記（ａ）のステップで取得された前記リソース情報が、前記リソースの使用状況についての上限として設定された第２の条件を越える場合に、前記アプリケーションプログラムにおいて、前記ジョブの実行をサスペンドさせる、ステップと、
を実行させる、ことを特徴とする。
【発明の効果】
【００１３】
以上のように、本発明によれば、複数のサーバ装置で構成されたシステムにおいて、各サーバ装置のリソースの使用状況を動的に鑑みた負荷分散を実施することができる。
【図面の簡単な説明】
【００１４】
【図１】図１は、本発明の実施の形態におけるコンピュータシステムの全体構成を示すブロック図である。
【図２】図２は、本発明の実施の形態におけるサーバ装置の構成を示すブロック図である。
【図３】図３は、本実施の形態におけるコンピュータシステム及びサーバ装置の動作を示すフロー図である
【図４】図４は、本発明の実施の形態におけるサーバ装置を実現するコンピュータの一例を示すブロック図である。
【発明を実施するための形態】
【００１５】
（実施の形態）
以下、本発明の実施の形態における、コンピュータシステム、サーバ装置、負荷分散方法、及びプログラムについて、図１〜図４を参照しながら説明する。
【００１６】
［システム構成］
最初に、本発明の実施の形態におけるコンピュータシステムの構成について図１を用いて説明する。図１は、本発明の実施の形態におけるコンピュータシステムの全体構成を示すブロック図である。
【００１７】
図１に示すように、本実施の形態におけるコンピュータシステム１００は、外部のユーザからの処理要求に応じてサービスを提供するためのシステムである。コンピュータシステム１００は、サービスの提供のためのアプリケーションプログラムを実行するサーバ装置（以下「ＡＰサーバ」と表記する。）４０を備えている。
【００１８】
このコンピュータシステム１００においては、後述するように、ＡＰサーバ４０の負荷の分散を図ることが目的とされている。なお、図１の例では、３台のサーバ装置４０が例示されているが、本実施の形態においてサーバ装置４０の台数は特に限定されるものではない。
【００１９】
また、図１に示すように、本実施の形態では、コンピュータシステム１００は、ＡＰサーバ４０に加えて、データベースサーバ（以下「ＤＢサーバ」と表記する）３０と、複数のＷｅｂサーバ２０とを備えている。また、Ｗｅｂサーバ２０は、互いに接続されず、ＤＢサーバ２０に接続されている。同様に、ＡＰサーバ４０も、互いに接続されず、ＤＢサーバ２０に接続される。つまり、ＤＢサーバ３０は、Ｗｅｂサーバ２０とＡＰサーバ４０との間に介在するように配置されており、コンピュータシステム１００は、三層構造によって構築されている。
【００２０】
また、Ｗｅｂサーバ２０には、ユーザのクライアント端末１０が接続されており、ユーザの処理要求は、クライアント端末１０から、Ｗｅｂサーバ２０へと送信される。そして、Ｗｅｂサーバ２０は、送信されたユーザの処理要求を受け取り、これをＤＢサーバ３０に送信する。
【００２１】
図１に示すように、ＤＢサーバ３０は、記憶装置（図１において図示せず）の記憶領域に構築されたデータベース３３を備え、データベース３３上には、「ページ」と呼ばれるデータ領域３２が作成されている。また、データ領域３２内には、データが書き込まれ、書き込まれたデータは、「レコード」と呼ばれる単位で保持される。なお、以降においては、データ領域３２は、「ページ３２」と表記する。また、１レコード単位で保持されているデータを「レコード３１」と表記する。
【００２２】
ＤＢサーバ３０のページ３２へのレコード３１の書込みは、上述のＷｅｂサーバ２０によって行なわれている。Ｗｅｂサーバ２０は、クライアント端末１０から処理要求を受け付けると、ＤＢサーバ３０にアクセスし、データベース３３上に、受け付けた処理要求をレコード３１として（１処理要求＝１レコード）書き込みを実行する。また、データベース３３には、書き込みが必要な項目として、処理要求の状態を表すステータスが設けられている。よって、Ｗｅｂサーバは、受け付けた処理要求をレコード３１に書き込む際は、ステータスに「未処理」と書き込む。
【００２３】
ＡＰサーバ４０は、ＤＢサーバ３０のページ３２に保持されているレコード３１のうち、ステータスが未処理となっているレコード３１を、処理対象となるジョブとして取得する。このとき、ＡＰサーバ４０は、レコード３１を取得すると同時に、該当するステータスに「処理中」と書き込む。また、ＡＰサーバ４０は、取得したレコード３１の処理が完了すると、更に該当するステータスに「完了」と書き込む。
【００２４】
［装置構成］
続いて、本実施の形態におけるＡＰサーバ（サーバ装置）４０の構成について図２を用いて説明する。図２は、本発明の実施の形態におけるサーバ装置の構成を示すブロック図である。
【００２５】
図２に示す各ＡＰサーバ４０は、上述したように、コンピュータシステム１００の一部を構成し、サービスを提供するためのアプリケーションプログラム（以下「業務処理実行アプリケーション」と表記する。）４２を実行する。また、図２に示すように、ＡＰサーバ４０は、リソース情報取得部４８と、処理制御部４３と、リソース監視部４７とを備えている。また、４１は、これらを一括りとする監視処理部を示している。
【００２６】
リソース情報取得部４８は、リソースの使用状況を特定するリソース情報を取得する。また、処理制御部４３は、業務処理実行アプリケーション４２の処理対象となるジョブを外部から取得し、取得したジョブを業務処理実行アプリケーション４２に渡して実行させる。
【００２７】
リソース監視部４７は、処理制御部４３に対して、取得されたリソース情報に基づいて、リソース使用状況の目標となるように設定された第１の条件を満たすように、処理対象となるジョブの取得を行なわせる。
【００２８】
また、リソース監視部４７は、取得されたリソース情報が、リソースの使用状況についての上限として設定された第２の条件を越える場合には、業務処理実行アプリケーションにジョブの実行をサスペンドさせる。
【００２９】
このように、本実施の形態では、各ＡＰサーバ４０は、それぞれ独立に、リソースの使用状況を監視している。また、各ＡＰサーバは、第１の条件に基づくリソースの使用状況を適切なものにするための監視と、第２の条件に基づく突発的な高負荷状態の監視とを行なっており、リソースの使用状況は動的に監視されている。
【００３０】
ここで、本実施の形態におけるＡＰサーバ（サーバ装置）４０の構成について更に具体的に説明する。まず、本実施の形態においては、各ＡＰサーバ４０は、リソース情報取得部４８、処理制御部４３、及びリソース監視部４７に加えて、能力計算部４４と、ジョブ数計算部４５と、入力受付部４６とを備えている。
【００３１】
リソース情報取得部４８は、本実施の形態では、システムの管理者が設定したポーリング間隔で、それが備えられたＡＰサーバ４０のリソース情報を取得する。また、監視対象とすべきリソースの使用状況は、ＡＰサーバ４０のシステム環境に応じて異なる。このため、リソース情報によって特定されるリソースの使用状況は、システムの管理者が、ＡＰサーバ４０のシステム環境に応じて適宜選択することができる。
【００３２】
具体的には、管理者は、以下の（１）〜（７）の中から、システムの環境に応じて、リソース情報によって特定されるリソースの使用状況を選択することができる。
（１）ＣＰＵ使用率
（２）メモリ使用率
（３）スワップメモリ使用率
（４）オープンファイル数
（５）オープンスレッド数
（６）ハードディスクの使用量
（７）要求元が同一であり、且つ同時に実行されているプロセスの数
【００３３】
また、本実施の形態では、リソース情報取得部４８は、例えば、ＯＳ標準コマンドの実行、カーネルパラメータの参照などによって、リソース情報を取得することができる。但し、リソース情報取得部４８がリソース情報を取得する際の具体的な手法は、ＡＰサーバ４０が搭載するオペレーティングシステム（ＯＳ）によって異なっており、特に限定されるものではない。
【００３４】
入力受付部４６は、外部から入力される情報のインターフェースである。システムの管理者が、システムの運用を開始する際に、入力機器又は端末装置を用いて、第１の条件及び第２の条件を入力すると、入力受付部４６は、これらを受け付けてリソース監視部４７に入力する。第１の条件及び第２の条件は、システムの管理者によって、適宜設定される。
【００３５】
本実施の形態において、第１の条件としては、リソースの使用状況の適正値（適正使用量、適正使用率）例えば、適正ＣＰＵ使用率、適正メモリ使用率、適正オープンファイル数等が挙げられる。第１の条件は、ＡＰサーバ４０が使用を求めるリソースの適正な使用量（又は使用率）である。また、第２の条件としては、リソースの使用状況の上限値、例えば、ＣＰＵ使用率の上限値、メモリ使用率の上限値、オープンファイル数の上限値等が挙げられる。第２の条件は、ＡＰサーバ４０が使用を許可するリソースの使用量（又は使用率）の上限値である。
【００３６】
また、管理者は、更に、リソース情報取得部４８がリソース情報の取得を行う際のポーリング間隔を設定することもできる。この場合、管理者は、入力機器又は端末装置を用いて、設定したポーリング間隔を、入力受付部４６に入力する。
【００３７】
また、本実施の形態では、リソース監視部４７は、リソース情報で特定されるリソースの使用状況が、第１の条件である適正値に最も近くなるように、処理制御部４３によるジョブの取得を制御する。これにより、コンピュータシステム１００における負荷分散が行なわれる。
【００３８】
具体的には、リソース監視部４７は、リソース情報取得部４８が取得したリソース情報で特定されるリソースの使用状況と、第１の条件である適正値とを比較し、リソースの使用状況が適切かどうかを判定する。
【００３９】
そして、判定の結果、リソースの使用状況が適正値を上回っている場合は、リソース監視部４７は、リソースの使用状況が適正値に近づくように、処理制御部４３に対して、処理対象となるジョブの取得をサスペンドさせる。
【００４０】
具体的には、処理制御部４３は、ＳＱＬ文の発行によってＤＢサーバ３０とデータのやり取りを行なうので、リソース監視部４７は、処理制御部４３に対して、未処理レコード取得のためのＳＥＬＥＣＴ文の発行をサスペンドするようにメッセージを送信する。そして、リソースの使用状況が適正値を下回った時点で、リソース監視部４７は、処理制御部４３に対して、サスペンドしていたＳＥＬＥＣＴ文の発行を再開するようメッセージを送信する。
【００４１】
また、本実施の形態では、リソース監視部４７は、リソース情報で特定されるリソースの使用状況が、第２の条件である上限値を超えた場合に、業務処理実行アプリケーション４２に対して実行中のジョブをサスペンドさせる。具体的には、リソース監視部４７は、処理制御部４３から、業務処理実行アプリケーション４２に対して、実行中のジョブをサスペンドする旨のメッセージを送信する。これにより、ＡＰサーバ４０がリソースの枯渇を原因としてダウンする事が防止される。
【００４２】
なお、この時の実行中のジョブのサスペンドは、後から実行されたジョブから順に行なわれる。そして、リソース監視部４７は、リソースの使用状況が上限値を下回った時点で、サスペンドされたジョブが、先にサスペンドされたジョブから順に再開されるように、処理制御部４３を通じて、業務処理実行アプリケーション４２に対してメッセージを送信する。
【００４３】
また、本実施の形態では、処理制御部４３は、上述したように、ＤＢサーバ３０に対してＳＱＬ文を発行することによって、クライアント端末１０からの処理要求のレコード３１をジョブとして取得する。そして、処理制御部４３は、レコード３１を取得すると、リソース監視部４７からＳＱＬ文の発行をサスペンドするメッセージを受け取らない限り、取得したレコード３１を、ＡＰサーバ４０の業務処理実行アプリケーション４２に引き渡し、実行させる。
【００４４】
また、処理制御部４３は、ステータスが「未処理」であり、且つ、他のＡＰサーバ４０のトランザクションによってロックがかけられていないレコード３１を取得する。なお、この時、何らかの理由で、ＤＢサーバ３０のＤＢＭＳ（Data Base Management System）のロックが使用できない場合がある。この場合は、処理制御部４３は、レコード３１を取得する際、明示的にロックを宣言することができ、これにより、複数のＡＰサーバ４０によって重複して同じレコード３１が取得される事態は回避される。
【００４５】
なお、上述したように、処理制御部４３は、リソース監視部４７からＳＱＬ文（ＳＥＬＥＣＴ文）の発行をサスペンドするメッセージを受け取った場合は、ＳＱＬ文の発行を再開するメッセージを受け取るまで、ＳＱＬ文の発行をサスペンドする。
【００４６】
また、上述したように、処理制御部４３は、リソース監視部４７から、実行中のジョブをサスペンドする旨のメッセージを送信するように指示されると、メッセージを送信する。これにより、処理制御部４３が、リソース監視部４７からの指示によって、サスペンドしたジョブを再開する旨のメッセージを送信するまで、業務処理実行アプリケーション４２は、実行開始時間が最も遅いジョブから順にジョブの実行をサスペンドする。
【００４７】
更に、本実施の形態では、レコード３１の取得時において、処理制御部４３は、ＤＢサーバ３０から、レコード３１の総数と、ステータスが未処理になっているレコード３１の総数とを取得し、これらを、ジョブ数計算部４５と、能力計算部４４とに送信することができる。
【００４８】
能力計算部４４は、コンピュータシステム１００を構成する他のＡＰサーバ４０の能力（例えば、同時処理ジョブ件数等）Ａを計算することができる。具体的には、能力計算部４４は、処理制御部４３から受け取ったレコード３１の総数Ｒ１とステータスが未処理になっているレコード３１の総数Ｒ３とを用いて、以下の式（１）に基づいて、他のＡＰサーバの処理能力Ａを算出する。
【００４９】
Ａ＝（Ｒ１−Ｒ２）−Ｒ３・・・・・（１）
Ｒ１：総レコード数
Ｒ２：自サーバで処理したレコードの数
Ｒ３：ステータスが未処理のレコードの数
【００５０】
ジョブ数計算部４５は、それを備えているＡＰサーバ４０の能力（例えば、同時実行可能ジョブ数）Ｂと、能力計算部４４によって計算された他のＡＰサーバ４０の能力Ａと、を比較し、比較結果に応じて、制御処理部４３が取得するジョブの数を計算することができる。
【００５１】
具体的には、まず、ジョブ数計算部４５は、他のＡＰサーバ４０の処理能力も鑑みて、自ＡＰサーバ４０によって取得及び処理するレコードの数（ジョブ数）を決定すべく、α（＝Ａ−Ｂ）を算出する。そして、ジョブ数計算部４５は、算出したαの値に基づいて、以下の（ａ）〜（ｂ）に示すように、制御処理部４３によって取得すべきジョブの数を決定する。
【００５２】
（ａ）α＞０の場合（Ａ＞Ｂ）
この場合は、他のＡＰサーバの処理能力が、自ＡＰサーバの処理能力を上回るので、まず、ジョブ数計算部４５は、ステータスが「未処理」のレコードの数Ｒ３から、他のＡＰサーバの処理能力Ａを減算する。そして、ジョブ数計算部４５は、減算によって得られたレコード数と、自ＡＰサーバの処理能力（同時実行可能ジョブ数）Ｂとを比較し、Ｂが大きければ「減算によって得られたレコード数」を、Ｂが小さければ「Ｂ」を、制御処理部４３が次回取得すべきジョブの数として設定する。
（ｂ）α＜０の場合（Ａ＜Ｂ）
この場合は、他のＡＰサーバの処理能力が、自ＡＰサーバの処理能力を下回るので、ジョブ数計算部４５は、自サーバの処理能力（同時実行可能ジョブ数）Ｂを制御処理部４３が次回取得すべきジョブの数として設定する。但し、このとき、ジョブ数計算部４５は、次回取得すべきジョブの数が、ステータスが「未処理」のレコードの数Ｒ３を越えないようにする。
（ｃ）α＝０の場合（Ａ＝Ｂ）
この場合は、他のＡＰサーバの処理能力と、自ＡＰサーバの処理能力とが同じとなるので、ジョブ数計算部４５は、自ＡＰサーバの処理能力（同時実行可能ジョブ数）Ｂの半数を制御処理部４３が次回取得すべきジョブの数として設定する。但し、このとき、ジョブ数計算部４５は、次回取得すべきジョブの数が、ステータスが「未処理」のレコードの数Ｒ３を越えないようにする。
【００５３】
［システム動作及び装置動作］
次に、本実施の形態におけるコンピュータシステム１００及びＡＰサーバ４０の動作について図３を用いて説明する。図３は、本実施の形態におけるコンピュータシステム及びサーバ装置の動作を示すフロー図である。以下の説明においては、適宜図１及び図２を参酌する。また、本実施の形態では、コンピュータシステム１００を動作させることによって、負荷分散方法が実施される。よって、本実施の形態における負荷分散方法の説明は、以下のコンピュータシステム１００の動作説明に代える。
【００５４】
最初に、図３に示すように、Ｗｅｂサーバ２０は、クライアント端末１０から処理要求を受け付けると、受け付けた処理要求を、ＤＢサーバ３０にレコード３１として書き込む（ステップＡ１）。この時、Ｗｅｂサーバ２０は、１つの処理要求を１つのレコード３１として書き込む。
【００５５】
次に、各ＡＰサーバ４において、処理制御部４３は、ＤＢサーバ３０にアクセスし、ステータスが「未処理」であり、且つ、他のＡＰサーバ４０のトランザクションによってロックがかけられていないレコード３１を取得する（ステップＡ２）。
【００５６】
なお、ステップＡ２によるレコード３１の取得に際して、通常あるサーバが取得したレコードは、ＤＢＭＳによってロックが掛けられ、複数のサーバで同一のレコードが取得される事態は発生しない。但し、何らかの理由でＤＢＭＳのロックが使用できない場合は、処理制御部４３は、レコード３１を取得する際に、明示的にロックを宣言する。
【００５７】
次に、ＡＰサーバ４０においては、ステップＡ２で取得されたジョブの実行に先立ち、リソース監視部４７は、リソース情報取得部４８によって取得されたリソース情報に基づいて、それが備えられたＡＰサーバ４０のリソースの使用状況を監視する。そして、リソース監視部４７は、ＡＰサーバ４０のリソースの使用状況（システム負荷）が予め設定された基準値以下であるかどうかを判定する（ステップＡ３）。なお、「基準値」は、例えば、第１の条件である適正値と第２の条件である上限値との間の値に設定される。
【００５８】
ステップＡ３の判定の結果、ＡＰサーバ４０のリソースの使用状況が基準値を超えている場合は、リソース管理部４７は、リソースの使用状況が基準値を下回るまで待機状態となる。一方、ステップＡ３の判定の結果、ＡＰサーバ４０のリソースの使用状況が基準値を超えていない場合は、リソース監視部４７は、処理制御部４３に対して、処理を実行するようメッセージを送信する。
【００５９】
リソース監視部４７から処理実行のメッセージを受け取ると、処理制御部４３は、ＡＰサーバ４０にインストールされている業務処理実行アプリケーション４２に対して、処理を実行するようメッセージを送信する（ステップＡ４）。この後、業務処理実行アプリケーション４２は、取得されたレコードの処理を実行する。
【００６０】
次に、業務処理実行アプリケーション４２によってレコードの処理が開始されると、リソース監視部４７は、ジョブ（レコード）の実行中における、ＡＰサーバ４０のリソースの使用状況を監視する。そして、リソース監視部４７は、リソースの使用状況が設定された適正値（第１の条件）以下かどうかを判定する（ステップＡ５）。
【００６１】
ステップＡ５の判定の結果、適正値以下でない場合（越えている場合）は、リソース監視部４７は、処理制御部４３に対して次回のＳＱＬ文の発行をサスペンドするよう、メッセージを送信する（ステップＡ６）。
【００６２】
次に、ステップＡ５が実行されると、処理制御部４３は、ＡＰサーバ４０のリソース使用状況が適正値を超えた時点における実行中のジョブの数を特定する（ステップＡ７）。そして、処理制御部４３は、特定したジョブ数を同時実行可能ジョブ数Ｂとし、これを能力計算部４４及びジョブ数計算部４５に送信する。
【００６３】
次に、能力計算部４４は、処理制御部４３を通じてＤＢサーバ３０にアクセスし、総レコード数Ｒ１を取得する。同時に、能力計算部４４は、ステータスが「未処理」であり、且つ他のサーバのトランザクションによってロックがかけられていないレコード３１を検索し、そのレコード数Ｒ３も取得する。
【００６４】
次に、能力計算部４４は、取得した総レコード数Ｒ１と、ステータスが「未処理」のレコード数Ｒ３とを、上述した式（１）に適用して、他のＡＰサーバの処理能力Ａを算出する（ステップＡ８）。
【００６５】
次に、ジョブ数計算部４５は、ステップＡ７で計算した同時実行可能ジョブ数Ｂと、ステップＡ８で計算された他のＡＰサーバの処理能力Ａとを用いて、α（＝Ａ−Ｂ）を算出する。そして、ジョブ数計算部４５は、算出したαの値に基づいて、上述した（ａ）〜（ｂ）の条件を用いて、制御処理部４３によって次回に取得すべきジョブの数を決定する（ステップＡ９）。
【００６６】
ステップＡ９が実行されると、ジョブ数計算部４５は、設定した取得すべきジョブ数を、処理制御部４３に送信する。これにより、処理制御部４３は、ステップＡ２を再度実行する。具体的には、処理制御部４３は、ＳＱＬ文を発行して、取得すべきジョブ数の数だけレコード３１を取得する。
【００６７】
また、上述したステップＡ５の判定の結果、適正値以下である場合は、リソース監視部４７は、処理制御部４３に対して、発行がサスペンドされているＳＱＬ文の発行を再開するようメッセージを送信する（ステップＡ１０）。なお、発行はサスペンドされているＳＱＬ文が存在しない場合は、ステップＡ１０の処理は省略される。
【００６８】
次に、リソース監視部４７は、ＡＰサーバ４０のリソース使用状況が上限値（第２の条件）以下であるかどうかを判定する（ステップＡ１１）。ステップＡ１１の判定の結果、リソースの使用状況が上限値を超えていない場合は、リソース監視部４７は、処理制御部４３に、再度ステップＡ２を実行するよう指示を行なう。これにより、処理制御部４３は、ＤＢサーバ３０にアクセスし、ステータスが「未処理」であり、他のＡＰサーバ４０のトランザクションによってロックがかけられていないレコード３１を取得する。
【００６９】
一方、ステップＡ１１の判定の結果、ＡＰサーバ４０のリソース使用状況が上限値以下でない場合（上限値を超えている場合）は、リソース監視部４７は、処理制御部４３を通じて、業務処理実行アプリケーション４２に対して、実行中のジョブを実行開始時間が遅いものから順にサスペンドするよう、メッセージを送信する（ステップＡ１２）。
【００７０】
また、ステップＡ１２の実行後、監視部４７は、更に、ＡＰサーバ４０のリソース使用状況が上限値を下回った場合は、サスペンドしたジョブを先にサスペンドした物から順に再開する旨のメッセージを、処理制御部４３を通じて、業務処理実行アプリケーション４２に送信する。その後、リソース監視部４７は、処理制御部４３に、再度ステップＡ２を実行するよう指示を行なう。
【００７１】
［実施の形態における効果］
以上説明したように、本実施の形態では、ロードバランサを用いることなく、各ＡＰサーバ４０がリソースの使用状況を動的に監視している。また、各ＡＰサーバは、リソース使用状況の上限値に基づく監視だけでなく、リソース使用状況の適正値に基づく監視も行なっているため、一時的な処理速度の低下及びオーバーフローの発生の抑制だけでなく、システム全体における負荷の分散も可能となる。
【００７２】
［変形例］
上述の図１〜図３に示した例では、コンピュータシステム１００は、ＤＢサーバ３０を備えているが、本実施の形態はこの例に限定されるものではない。本実施の形態におけるコンピュータシステムは、ＤＢサーバ３０の代わりに、クライアント端末１０から受け付けた処理要求を中継する機能を有する中継サーバを備えていても良い。その場合、各ＡＰサーバ４０は、ＤＢサーバ３０にアクセスする代わりに、中継サーバの共有メモリに対してアクセスして、ジョブを取得する。この点以外については、図１〜図３に示した例と同様である。
【００７３】
［プログラム］
本発明の実施の形態におけるプログラムは、コンピュータに、図３に示すステップＡ２〜Ａ１２を実行させるプログラムであれば良い。このプログラムをコンピュータにインストールし、実行することによって、本実施の形態におけるＡＰサーバを実現することができる。この場合、コンピュータのＣＰＵ（Central Processing Unit）は、処理制御部４３、能力計算部４４、ジョブ数計算部４５、入力受付部４６、リソース監視部４７、及びリソース情報取得部４８として機能し、処理を行なう。
【００７４】
ここで、本実施の形態におけるプログラムを実行することによって、ＡＰサーバ４０を実現するコンピュータについて図４を用いて説明する。図４は、本発明の実施の形態におけるサーバ装置を実現するコンピュータの一例を示すブロック図である。
【００７５】
図４に示すように、コンピュータ１１０は、ＣＰＵ１１１と、メインメモリ１１２と、記憶装置１１３と、入力インターフェース１１４と、表示コントローラ１１５と、データリーダ／ライタ１１６と、通信インターフェース１１７とを備える。これらの各部は、バス１２１を介して、互いにデータ通信可能に接続される。
【００７６】
ＣＰＵ１１１は、記憶装置１１３に格納された、本実施の形態におけるプログラム（コード）をメインメモリ１１２に展開し、これらを所定順序で実行することにより、各種の演算を実施する。メインメモリ１１２は、典型的には、ＤＲＡＭ（Dynamic Random Access Memory）等の揮発性の記憶装置である。また、本実施の形態におけるプログラムは、コンピュータ読み取り可能な記録媒体１２０に格納された状態で提供される。なお、本実施の形態におけるプログラムは、通信インターフェース１１７を介して接続されたインターネット上で流通するものであっても良い。
【００７７】
また、記憶装置１１３の具体例としては、ハードディスクの他、フラッシュメモリ等の半導体記憶装置が挙げられる。入力インターフェース１１４は、ＣＰＵ１１１と、キーボード及びマウスといった入力機器１１８との間のデータ伝送を仲介する。表示コントローラ１１５は、ディスプレイ装置１１９と接続され、ディスプレイ装置１１９での表示を制御する。
【００７８】
データリーダ／ライタ１１６は、ＣＰＵ１１１と記録媒体１２０との間のデータ伝送を仲介し、記録媒体１２０からのプログラムの読み出し、及びコンピュータ１１０における処理結果の記録媒体１２０への書き込みを実行する。通信インターフェース１１７は、ＣＰＵ１１１と、他のコンピュータとの間のデータ伝送を仲介する。
【００７９】
また、記録媒体１２０の具体例としては、ＣＦ（Compact Flash（登録商標））及びＳＤ（Secure Digital）等の汎用的な半導体記憶デバイス、フレキシブルディスク（Flexible Disk）等の磁気記憶媒体、又はＣＤ−ＲＯＭ（Compact Disk Read Only Memory）などの光学記憶媒体が挙げられる。
【産業上の利用可能性】
【００８０】
以上のように、本発明によれば、複数のサーバ装置で構成されたシステムにおいて、各サーバ装置のリソースの使用状況を動的に鑑みた負荷分散を実施することができる。本発明は、Ｗｅｂアプリケーションサーバを備えたシステムに利用でき、このようなシステムの構築及び保守を行なう情報通信業のＳＩ部門などで特に有用である。
【符号の説明】
【００８１】
１０  クライアント端末
２０  Ｗｅｂサーバ
３０  ＤＢサーバ
３１  レコード
３２  ページ
３３  データベース
４０  ＡＰサーバ（サーバ装置）
４１  監視処理部
４２  業務処理実行アプリケーション
４３  処理制御部
４４  能力計算部
４５  ジョブ数計算部
４６  入力受付部
４７  リソース監視部
４８  リソース情報取得部
１００  コンピュータシステム
１１０  コンピュータ
１１１  ＣＰＵ
１１２  メインメモリ
１１３  記憶装置
１１４  入力インターフェース
１１５  表示コントローラ
１１６  データリーダ／ライタ
１１７  通信インターフェース
１１８  入力機器
１１９  ディスプレイ装置
１２０  記録媒体
１２１  バス
【図１】
0005939620.tif 000002
【図２】
0005939620.tif 000003
【図３】
0005939620.tif 000004
【図４】
0005939620.tif 000005