(57)【要約】【課題】  サーバにおいて実行可能なトランザクションの数の最大許容値であるローカル多重度の上限値を効果的に制御する。【解決手段】  複数のサーバに対して、同時に実行可能なトランザクションの合計数の最大許容値であるグローバル多重度の上限値が設定されている。複数のサーバを管理する管理サーバは、複数のサーバにおいて実行されているトランザクションの合計数であるグローバル多重度の現在値を監視する。管理サーバは、グローバル多重度の現在値がグローバル多重度の上限値に等しいかまたは超えていることを条件として、サーバにおいて実行されているトランザクションの数であるローカル多重度の現在値に当該サーバのローカル多重度の上限値を変更する第１の命令を生成する。好適には、管理サーバは、第１の命令を複数のサーバの１つに送信する。第１の命令を受信したことに応じて、サーバは、ローカル多重度の現在値にローカル多重度の上限値を変更する。【選択図】  図１
2006243781.tif 000002
【特許請求の範囲】
【請求項１】
複数の第１のサーバを管理する管理サーバにおいて、第１のサーバのローカル多重度の上限値を制御するための方法であって、
前記複数の第１のサーバのグローバル多重度の現在値を監視するステップと、
前記グローバル多重度の現在値が前記複数の第１のサーバのグローバル多重度sの上限値に等しいかまたは超えていることを条件として、前記第１のサーバのローカル多重度の現在値に、当該第１のサーバのローカル多重度の上限値を変更する第１の命令を生成するステップと、
を含む方法。
【請求項２】
前記グローバル多重度の現在値は、前記複数の第１のサーバにおいて実行されているトランザクションの合計数を意味し、
前記ローカル多重度の現在値は、前記第１のサーバにおいて実行されているトランザクションの数を意味し、
前記グローバル多重度の上限値は、前記複数の第１のサーバにおいて同時に実行可能なトランザクションの合計数の最大許容値を意味し、
前記ローカル多重度の上限値は、前記第１のサーバにおいて同時に実行可能なトランザクションの数の最大許容値を意味する、
請求項１に記載の方法。
【請求項３】
前記第１の命令を、前記複数の第１のサーバの１つに送信するステップをさらに含む、請求項１に記載の方法。
【請求項４】
前記グローバル多重度の現在値が前記グローバル多重度の上限値より小さいことを条件として、前記第１のサーバに対してあらかじめ定められたデフォルトのローカル多重度の上限値に、当該第１のサーバのローカル多重度の上限値を変更する第２の命令を生成するステップをさらに含む、請求項１に記載の方法。
【請求項５】
前記第２の命令を、前記複数の第１のサーバの１つに送信するステップをさらに含む、請求項４に記載の方法。
【請求項６】
前記複数の第１のサーバにおいて処理されるトランザクションのグループを定義するステップと、
前記トランザクション・グループに対して、前記第１のサーバのローカル多重度の上限値を設定するステップと、
前記トランザクション・グループに対して、グローバル多重度の上限値を設定するステップと、
をさらに含む請求項１に記載の方法。
【請求項７】
前記トランザクションを、前記トランザクション・グループのいずれかにマップするステップをさらに含み、
前記監視するステップおよび前記第１の命令を生成するステップが、前記トランザクション・グループごとに行われる、
請求項６に記載の方法。
【請求項８】
前記複数の第１のサーバのうちの１つが、１以上の第２のサーバのうちの１つにリクエストを送信するステップをさらに含む、請求項１に記載の方法。
【請求項９】
前記第１のサーバが、アプリケーション・サーバであり、前記第２のサーバが、データベース・サーバである、請求項８に記載の方法。
【請求項１０】
前記トランザクションの少なくとも一部が、１以上のクライアント・コンピュータからのリクエストによって起動される、請求項１に記載の方法。
【請求項１１】
前記監視するステップは、
前記複数の第１のサーバのそれぞれから受領したローカル多重度の現在値の合計を算出するステップと、
前記算出するステップをあらかじめ定められた時間間隔で繰り返すステップと、
を含む、請求項１に記載の方法。
【請求項１２】
グローバル多重度の上限値が設定された複数のサーバを管理する管理サーバであって、
前記複数のサーバのグローバル多重度の現在値を監視する手段と、
前記グローバル多重度の現在値が前記複数のサーバのグローバル多重度の上限値に等しいかまたは超えていることを条件として、前記サーバのローカル多重度の現在値に、当該サーバのローカル多重度の上限値を変更する命令を生成する手段と、
を含む管理サーバ。
【請求項１３】
グローバル多重度の上限値が設定された複数のサーバのうちの１つであって、
１以上のトランザクションを実行する手段と、
前記実行する手段によって実行されているトランザクションの数であるローカル多重度の現在値を管理サーバにレポートする手段と、
前記複数のサーバのグローバル多重度の現在値が前記グローバル多重度の上限値に等しいかまたは超えていることを条件として前記管理サーバから送信された命令を受信したことに応じて、前記ローカル多重度の現在値に前記実行する手段で同時に実行可能なトランザクションの最大数であるローカル多重度の上限値を変更する手段と、
を含むサーバ。
【請求項１４】
グローバル多重度の上限値が設定された複数のサーバうちの少なくとも１つのローカル多重度の上限値を制御するためのプログラムであって、
前記複数のサーバのグローバル多重度の現在値を監視するステップと、
前記グローバル多重度の現在値が前記グローバル多重度の上限値に等しいかまたは超えていることを条件として、前記サーバのローカル多重度の現在値に、当該サーバのローカル多重度の上限値を変更する命令を生成するステップと、
を情報処理装置に実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的には、情報処理技術に関する。より詳細には、本発明は、サーバにおいて同時に実行可能なトランザクションの数の最大許容値であるローカル多重度の上限値を制御する技術に関する。
【背景技術】
【０００２】
近年、インターネットやイントラネットの普及に伴い飛躍的に発展した分散コンピューティング技術が業務システムに適用されている。一般的に、分散コンピューティング環境は、多数のトランザクションを分散処理するための複数のアプリケーション・サーバを含んでいる。通常、分散コンピューティング環境では、アプリケーション・サーバは、必要に応じてデータベース・サーバにネットワークを介してデータの照会、更新その他の操作（以下、「データベース処理」と呼ぶ）を行い、データ処理の結果得られたデータを使用して、トランザクションを処理する。
【０００３】
分散コンピューティング環境の負荷を制御する技術として、１台のコンピュータ上でサーバ・プログラムを実行させ、サーバ・プログラムが当該コンピュータのＣＰＵを使用する使用率が高い場合にサーバ・プログラムの多重度を増加させる技術が開示されている（特許文献１）。また、ＬＡＮ接続された負荷分散装置とサーバ・コンピュータとを備えるクライアント・サーバ・システムにおいて、サーバ・コンピュータの負荷がしきい値を超える場合に、負荷分散装置が端末からのトランザクションの受け入れを中断する技術が開示されている（特許文献２）。
【特許文献１】特開２００１−１６００４０号公報
【特許文献２】特開２０００−２６８０１２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
既に述べたように、通常、分散コンピューティング環境では、アプリケーション・サーバは、必要に応じてデータベース・サーバにネットワークを介してデータベース処理を行うことによって、トランザクションを処理する。ここで、データベース・サーバには各アプリケーション・プログラムないし各アプリケーション・サーバに共通して使用するデータが格納されるので、データベース・サーバは、各アプリケーション・サーバに共通で設けられることが多い。そのため、各アプリケーション・サーバにおいて同時に実行可能であるトランザクションの数であるローカル多重度の上限値を設定したとしても、システム全体では多数のデータベース処理が発生することがあり、データベース・サーバの応答がトランザクション処理のボトルネックとなるという課題が生じていた。
【０００５】
特に、分散コンピューティング環境が多数のアプリケーション・サーバを含む場合、たとえ各アプリケーション・サーバのローカル多重度の上限値を１にしたとしても、分散コンピューティング環境全体の多重度を、アプリケーション・サーバの数より少なくすることはできないという課題があった。
【０００６】
また、分散コンピューティング環境では、いずれのアプリケーション・サーバにトランザクション処理を割り振るかについて、同一のクライアント・コンピュータからの複数のトランザクションの処理の間でデータの受け渡しが必要となるため、これらのトランザクションは同一のアプリケーション・サーバで処理する必要がある（一般的に、このようなトランザクション処理の性質はセッション・スティッキー（ＳＥＳＳＩＯＮ  ＳＴＩＣＫＹ）特性と称される）。このようなセッション・スティッキー特性のためトランザクションを各アプリケーション・サーバに割り振ることについてバラつきが生じることがある。望ましい分散コンピューティング環境全体の多重度がアプリケーション・サーバの数より大きいときでも、このようなバラつきのために、各サーバにシステム全体に要求される多重度の平均値に近い値を多重度の上限値に設定した場合、システム全体では処理能力に余裕があり、一部のサーバで空きがあっても、他のサーバでは待ちが発生する事態が生じる可能性があるという課題があった。また、その事態を避けるために各サーバの多重度の上限値を大きくするとシステム全体の処理能力を超えてしまうという課題があった。
【０００７】
本発明は、上記の課題を解決するためのサーバの多重度の上限値を制御する方法、管理サーバ、サーバおよびプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記の課題を解決するために、ネットワーク・システムに含まれる複数のサーバのそれぞれについて設定された、各サーバで同時に実行可能なトランザクションの数の最大許容値であるローカル多重度の上限値を制御するための方法が提供される。
【０００９】
複数のサーバに対して、同時に実行可能なトランザクションの合計数の最大許容値であるグローバル多重度の上限値が設定されている。複数のサーバを管理する管理サーバは、複数のサーバにおいて実行されているトランザクションの合計数であるグローバル多重度の現在値を監視する。管理サーバは、グローバル多重度の現在値がグローバル多重度の上限値に等しいかまたは超えていることを条件として、サーバにおいて実行されているトランザクションの数であるローカル多重度の現在値に当該サーバのローカル多重度の上限値を変更する第１の命令を生成する。
【００１０】
好適には、管理サーバは、第１の命令を複数のサーバの１つに送信する。第１の命令を受信したことに応じて、サーバは、ローカル多重度の現在値にローカル多重度の上限値を変更する。
【００１１】
さらに、管理サーバは、グローバル多重度の現在値がグローバル多重度の上限値より小さいことを条件として、サーバに対してあらかじめ定められたデフォルトのローカル多重度の上限値に当該サーバのローカル多重度の上限値を変更する第２の命令を生成する。
【００１２】
好適には、管理サーバは、第２の命令を、ネットワーク・システムに含まれる複数のサーバに送信する。管理サーバより送信された第２の命令を受信したことに応じて、各サーバは、当該サーバに対してあらかじめ定められたデフォルトのローカル多重度の上限値に、ローカル多重度の上限値を変更する。
【００１３】
以上、ローカル多重度の上限値を制御するための方法として本発明を説明したが、本発明は、管理サーバ、サーバ、プログラム、またはプログラム製品として把握することもできる。プログラム製品は、例えば、前述のプログラムを格納した記憶媒体を含めることができる。
【００１４】
上記の発明の概要は、本発明の必要な特徴の全てを列挙したものではなく、これらの特徴群のサブコンビネーションもまた、発明となり得ることに留意すべきである。
【発明の効果】
【００１５】
本発明によれば、サーバのローカル多重度の上限値を効果的に制御することができる。
【発明を実施するための最良の形態】
【００１６】
以下、本発明を実施するための最良の形態を図面に基づいて詳細に説明するが、以下の実施形態は特許請求の範囲にかかる発明を限定するものではなく、また実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
【００１７】
また、本発明は多くの異なる態様で実施することが可能であり、実施の形態の記載内容に限定して解釈されるべきものではない。また、実施の形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須とは限らないことに留意されたい。実施の形態の説明の全体を通じて同じ要素には同じ番号を付している。
【００１８】
以下の実施の形態では、主にコンピュータ・システムまたは方法について説明するが、当業者であれば明らかな通り、本発明はその一部をコンピュータで使用可能なプログラムとして実施することができる。したがって、本発明は、ハードウェアとしての実施形態、ソフトウェアとしての実施形態またはソフトウェアとハードウェアとの組合せの実施形態をとることができる。プログラムは、ハードディスク、ＤＶＤ−ＲＯＭ、ＣＤ−ＲＯＭ、光記憶装置または磁気記憶装置等の任意のコンピュータ可読媒体に記録できる。
【００１９】
図１は、本発明の実施の形態による分散コンピューティング環境であるネットワーク・システム１０００のハイレベル概念図である。ネットワーク・システム１０００は、それぞれがネットワーク６００で接続された、管理サーバ１００、複数のアプリケーション・サーバ２００−１乃至２００−Ｎ（以下、アプリケーション・サーバ２００と総称することがある）、データベース・サーバ３００、複数のクライアント・コンピュータ４００−１乃至４００−Ｎ（以下、クライアント・コンピュータ４００と総称することがある）、負荷分散サーバ５００を含んでいる。なお、クライアント・コンピュータは、ネットワーク・システム１０００に１つだけ存在していてもよい。
【００２０】
管理サーバ１００は、アプリケーション・サーバ２００の負荷を監視する機能を有する。より詳細には、管理サーバ１００は、あらかじめ設定されたグルーピング・ルールに従ってトランザクション・グループごとに、各アプリケーション・サーバ２００において実行されているトランザクションの数であるローカル多重度の現在値を監視することで、負荷の監視を実現する。また、管理サーバ１００は、監視結果に基づいて、アプリケーション・サーバ２００のローカル多重度の上限値を変更する命令を生成する。さらに、管理サーバ１００は、生成したローカル多重度の上限値を変更する命令を、ネットワーク６００を介してアプリケーション・サーバ２００に送信する機能を有する。
【００２１】
本発明の実施の形態のアプリケーション・サーバ２００は、クライアント・コンピュータ４００からのリクエストに応じて、トランザクションを起動することによって、アプリケーション・サービスを提供するコンピュータである。本実施形態のアプリケーション・サーバ２００は、クライアント・コンピュータ４００にサービスを提供する必要に応じて、データベース・サーバ３００に格納されたデータ・レコードを処理または更新するために、データベース・サーバ３００にリクエストを送信する機能を有する。それぞれのアプリケーション・サーバ２００に対して、実行可能なトランザクションの最大数であるローカル多重度の上限値が設定されている。また、アプリケーション・サーバ２００全体に対して、トランザクション・グループごとに実行可能なトランザクションの最大数であるグローバル多重度の上限値が設定されている。好適には、それぞれのアプリケーション・サーバ２００は、各トランザクション・グループについて、自身が現在実行しているトランザクションの数を管理サーバ１００にレポートする機能を有する。
【００２２】
データベース・サーバ３００は、アプリケーションの実行に必要なデータをレコードとして記憶している。データベース・サーバ３００は、アプリケーション・サーバ２００からのデータベース処理リクエストに応じて、適切なレコードに対してデータベース処理を実行する。
【００２３】
クライアント・コンピュータ４００は、アプリケーション・サーバ２００−１乃至２００−Ｎのいずれかにトランザクション処理をさせるために、ユーザによって操作されることによって、負荷分散サーバ５００にトランザクション処理リクエストを送信する。クライアント・コンピュータ４００は、アプリケーション・サーバから受信したトランザクション処理の結果を表示し、ユーザに提示する機能を有する。
【００２４】
負荷分散サーバ５００は、論理的にクライアント・コンピュータ４００とアプリケーション・サーバ２００の間に設けられる。負荷分散サーバ５００は、ネットワーク６００を介して受信したクライアント・コンピュータ４００からのトランザクション処理リクエストを、アプリケーション・サーバ２００−１乃至２００−Ｎのいずれかに割り当てる。トランザクション処理リクエストを割り当てられたアプリケーション・サーバ２００は、サービスの処理を実行し、結果をクライアント・コンピュータ４００に返す。
【００２５】
ネットワーク・システム１０００において、管理サーバ１００、アプリケーション・サーバ２００、データベース・サーバ３００、クライアント・コンピュータ４００、および負荷分散サーバ５００は、ネットワーク６００を介して、相互に通信をすることができる。一例として、ネットワーク６００は、よく知られたインターネットまたはイントラネットとして実現することができる。インターネットまたはイントラネットであるネットワーク６００は、ＴＣＰ／ＩＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ／Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）を用いてコンピュータの間を接続する。ネットワーク２００ではグローバル・アドレスまたはローカル・アドレスで表されるＩＰアドレスによって相互に通信するシステムが特定される。
【００２６】
図２は、本発明の実施の形態による管理サーバ１００、アプリケーション・サーバ２００、データベース・サーバ３００、クライアント・コンピュータ４００、および負荷分散サーバ５００を実現するのに好適な情報処理装置のハードウェア構成の一例を示した図である。情報処理装置は、バス２に接続されたＣＰＵ（中央処理装置）１とメインメモリ３を含んでいる。ハードディスク装置６、ＣＤ−ＲＯＭ装置７のようなリムーバブル・ストレージ（記録メディアを交換可能な外部記憶システム）がＩＤＥコントローラ５を経由してバス２へ接続されている。当業者には明らかなように、ＣＤ−ＲＯＭ装置７と同時にまたは代えて、フレキシブル・ディスク装置、ＭＯ装置、ＤＶＤ−ＲＯＭ装置のような他の種類のリムーバブル・ストレージをバス２に接続することもできる。
【００２７】
フレキシブル・ディスク、ＭＯ、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭのような記憶メディアが、リムーバブル・ストレージに挿入される。これらの記憶メディアやハードディスク装置７、ＲＯＭ４には、オペレーティング・システムと協働してＣＰＵ等に命令を与え、本発明を実施するためのコンピュータ・プログラムのコードを記録することができる。メインメモリ４にロードされることによってコンピュータ・プログラムは実行される。コンピュータ・プログラムは圧縮し、また複数に分割して複数の媒体に記録することもできる。
【００２８】
情報処理装置は、キーボード／マウス・コントローラ９を経由して、キーボード１３やマウス１４のようなユーザ・インターフェイス・デバイスからの入力を受ける。情報処理装置は、視覚データをユーザに提示するための表示装置１５にビデオ・コントローラ１０を経由して接続される。コンピュータ装置２００は、種々のＵＳＢ機器１２を接続するためのＵＳＢポート８を備える。
【００２９】
情報処理装置は、ネットワーク・アダプタ１１（イーサネット（Ｒ）・カードやトークンリング・カード）等を介してネットワークに接続し、他のコンピュータ等と通信を行うことが可能である。図示はされていないが、パラレルポートを介してプリンタと接続することや、シリアルポートを介してモデムを接続することも可能である。
【００３０】
以上の説明により、本発明の実施の形態による管理サーバ１００、アプリケーション・サーバ２００、データベース・サーバ３００、クライアント・コンピュータ４００、および負荷分散サーバ５００を実現するのに好適な情報処理装置は、メインフレーム、ワークステーション、通常のパーソナルコンピュータ等の情報処理装置、または、これらの組み合わせによって実現されることが容易に理解されるであろう。ただし、これらの構成要素は例示であり、そのすべての構成要素が本発明の必須構成要素となるわけではない。
【００３１】
本発明の実施の形態において使用される情報処理装置の各ハードウェア構成要素を、複数のマシンを組み合わせ、それらに機能を配分し実施する等の種々の変更は当業者によって容易に想定され得ることは勿論である。それらの変更は、当然に本発明の思想に包含される概念である。
【００３２】
情報処理装置は、オペレーティング・システムとして、マイクロソフト・コーポレーションが提供するＷｉｎｄｏｗｓ（Ｒ）オペレーティング・システム、インターナショナル・ビジネス・マシーンズ・コーポレーションが提供するＡＩＸ（Ｒ）、アップル・コンピュータ・インコーポレイテッドが提供するＭａｃＯＳ（Ｒ）、あるいはＬｉｎｕｘ（Ｒ）などのＧＵＩ（グラフィカル・ユーザ・インターフェース）マルチウィンドウ環境をサポートするものを採用することができる。
【００３３】
情報処理装置は、オペレーティング・システムとして、インターナショナル・ビジネス・マシーンズ・コーポレーションが提供するＰＣ−ＤＯＳ、マイクロソフト・コーポレーションが提供するＭＳ−ＤＯＳなどのキャラクタ・ベース環境のものを採用することもできる。さらに、サーバ３００は、インターナショナル・ビジネス・マシーンズ・コーポレーションが提供するＯＳ  Ｏｐｅｎ、Ｗｉｎｄ  Ｒｉｖｅｒ  Ｓｙｓｔｅｍｓ，Ｉｎｃ．のＶｘ  ＷｏｒｋｓなどのリアルタイムＯＳ、Ｊａｖａ（Ｒ）ＯＳなどのネットワーク・コンピュータに組込みオペレーティング・システムを採用することもできる。
【００３４】
以上から、本発明の実施の形態において使用される情報処理装置は、特定のオペレーティング・システム環境に限定されるものではないことを理解することができる。
【００３５】
図３は、本発明の実施の形態の管理サーバ１００の機能ブロック図である。なお、図３乃至図７の各機能ブロック図に示す各要素は、図２に例示したハードウェア構成を有する情報処理装置において、ハードディスク装置６に格納されたコンピュータ・プログラムをメインメモリ３にロードした上でＣＰＵ１に読み込ませることによって、ハードウェア資源とソフトウェアを協働させることで実現することができる。管理サーバ１００は、トランザクション監視部１１０、グローバル多重度上限値記憶部１２０、ローカル多重度上限値変更命令生成部１３０、およびローカル多重度上限値変更命令送信部１４０を含む。
【００３６】
トランザクション監視部１１０は、アプリケーション・サーバ２００のトランザクションの処理状況を監視する。より具体的には、トランザクション監視部１１０は、あらかじめ定められた時間間隔で、アプリケーション・サーバ２００−１乃至２００−Ｎのそれぞれに実行中のトランザクションの数すなわちローカル多重度の現在値をトランザクション・グループごとにレポートするよう命令を送信する。トランザクション監視部１１０は、各アプリケーション・サーバのトランザクション数計測部から、当該命令の応答として、当該アプリケーション・サーバ２００のローカル多重度の現在値の情報を受信する。
【００３７】
グローバル多重度上限値記憶部１２０は、システム管理者によって設定されたあるアプリケーション・プログラムについて、アプリケーション・サーバ２００−１乃至２００−Ｎを含むサーバ・グループで同時に実行可能なトランザクションの最大数であるグローバル多重度の上限値を記憶する。
【００３８】
ローカル多重度上限値変更命令生成部１３０は、トランザクション監視部１１０によって把握されたアプリケーション・サーバで実行されているトランザクション数の情報およびグローバル多重度上限値記憶部１２０に記憶されたグローバル多重度の上限値に基づいて、各アプリケーション・サーバに対するローカル多重度上限値変更命令を生成する。
【００３９】
具体的には、ローカル多重度上限変更命令生成部１３０は、アプリケーション・サーバ２００−１乃至２００−Ｎにおいて実行されているトランザクションの数の合計すなわちグローバル多重度の現在値がグローバル多重度の上限値に等しいかまたは超えていることを条件として、各アプリケーション・サーバのローカル多重度の現在値に、当該アプリケーション・サーバのローカル多重度の上限値を変更する命令（本明細書において「第１の命令」と称する）を生成する。
【００４０】
ローカル多重度上限変更命令生成部１３０は、アプリケーション・サーバ２００−１乃至２００−Ｎのグローバル多重度の現在値がグローバル多重度の上限値より少なくなったことを条件として、それぞれのアプリケーション・サーバに対してあらかじめ定められたデフォルトのローカル多重度の上限値に、当該アプリケーション・サーバのローカル多重度の上限値を変更する命令（本明細書において「第２の命令」と称する）を生成する。ローカル多重度変更命令送信部１４０は、ローカル多重度変更命令生成部１３０によって生成されたローカル多重度変更命令を各アプリケーション・サーバに送信する。
【００４１】
図４は、本発明の実施の形態のアプリケーション・サーバ２００の機能ブロック図である。アプリケーション・サーバ２００は、リクエスト受信部２１０、グルーピング・ルール記憶部２１５、アプリケーション・プログラム格納部２２０、トランザクション処理部２３０、データベース処理要求部２４０、実行トランザクション数計測部２５０、ローカル多重度デフォルト上限値記憶部２６０、ローカル多重度上限値記憶部２７０、ローカル多重度上限値変更部２８０、およびローカル多重度上限値変更命令受信部２９０を含んでいる。
【００４２】
リクエスト受信部２１０は、負荷分散サーバ６００から割り当てられた、トランザクション処理リクエストを受信する。受信されたトランザクション処理リクエストは、トランザクション処理部２３０へ送られ、処理される。
【００４３】
グルーピング・ルール記憶部２１５は、アプリケーション・サーバ２００において処理されるトランザクションをグルーピングするためのルールを記憶する。すなわち、トランザクションをグルーピング・ルールに従って分類することによって、トランザクション・グループが形成される。なお、ローカル多重度の現在値およびグローバル多重度の現在値は、トランザクション・グループごとに監視される。また、ローカル多重度の上限値およびグローバル多重度の上限値は、トランザクション・グループごとに設定される。
【００４４】
アプリケーション・プログラム格納部２２０は、種々の業務の処理に適合するように開発されたアプリケーション・プログラムを格納する。当業者は、アプリケーション・プログラム格納部２２０に格納されるアプリケーション・プログラムを、Ｊａｋａｒｔａ  Ｐｒｏｊｅｃｔによって開発されているＳｔｒｕｔｓのようなアプリケーション開発フレームワークを用いて、適宜開発することができる。なお、Ｓｔｒｕｔｓとは、周知のＪａｖａ  Ｓｅｒｖｌｅｔ／ＪＳＰ技術を用いたウェブ・アプリケーション開発を行う上で有用な、よく知られたオープンソースのアプリケーション・フレームワークである。
【００４５】
トランザクション処理部２３０は、リクエスト受信部２１０で受信されたトランザクション処理リクエストを処理する。具体的には、トランザクション処理リクエストの内容に基づいて、アプリケーション・プログラム格納部２２０から適切なアプリケーション・プログラムを呼び出し、トランザクション処理を行う。トランザクション処理部２３０は、ローカル多重度上限値記憶部２７０に記憶されている、トランザクション・グループごとに存在するローカル多重度の上限値の数まで、同時にそのトランザクション・グループに属するトランザクションの処理を行うことができる。
【００４６】
また、トランザクション処理部２３０は、必要に応じてデータベース処理を行うようデータベース処理要求部２４０に命令を発する。データベース処理要求部２４０は、トランザクション処理部２３０からの命令に基づいて生成したデータベース処理リクエストを、データベース・サーバ３００へ送信する。好適には、データベース処理リクエストは、よく知られたＳＱＬ（Ｓｔｒｕｃｔｕｒｅｄ  Ｑｕｅｒｙ  Ｌａｎｇｕａｇｅ）形式で生成される。また、データベース処理要求部２４０は、送信したデータベース処理リクエストのデータベース・サーバ３００からの応答を受領し、トランザクション処理部２３０に渡すこともする。
【００４７】
実行トランザクション数計測部２５０は、トランザクション処理部に２３０において実行中のトランザクションの数すなわちローカル多重度の現在値を、トランザクション・グループごとに計測する。実行トランザクション数計測部２５０は、管理サーバ１００からのリクエストに応じて、ローカル多重度の現在値を、トランザクション・グループごとに管理サーバ１００にレポートすることができる。
【００４８】
ローカル多重度デフォルト上限値記憶部２６０は、管理者によって設定された当該アプリケーション・サーバ２００のデフォルトのローカル多重度の上限値をトランザクション・グループごとに記憶する。本発明の実施の形態では、デフォルトのローカル多重度の上限値は、ネットワーク・システム１０００のグローバル多重度の現在値がグローバル多重度の上限値より小さいときに、当該アプリケーション・サーバ２００において同時に実行することをシステム管理者が許可した当該トランザクション・グループに属するトランザクションの数を意味している。
【００４９】
ローカル多重度上限値記憶部２７０は、当該アプリケーション・サーバで同時に実行可能なトランザクションの最大数であるローカル多重度の上限値を記憶する。ローカル多重度上限値変更部２８０は、ローカル多重度上限値変更命令受信部２９０によって受信されたローカル多重度上限値変更命令を解釈し、ローカル多重度上限値記憶部２７０に記憶された当該アプリケーション・サーバのローカル多重度の上限値を変更する命令を発する。ローカル多重度上限値変更命令受信部２９０は、ローカル多重度上限値変更命令を管理サーバ１００から受信する。ローカル多重度上限値変更命令には、既に述べた第１の命令および第２の命令が含まれる。
【００５０】
図５は、本発明の実施の形態のデータベース・サーバ３００の機能ブロック図である。データベース・サーバ３００は、リクエスト受信部３１０、データベース・エンジン３２０、データベース３３０、およびリクエスト応答部３４０を含む。なお、当業者は、インターナショナル・ビジネス・マシーンズ・コーポレーションが提供するＤＢ２（Ｒ）ユニバーサル・データベース製品、マイクロソフト・コーポレーションが提供するＡｃｃｅｓｓ（Ｒ）製品、オラクル・コーポレーションが提供するＯｒａｃｌｅ（Ｒ）  Ｄａｔａｂａｓｅ  １０ｇ製品のようなリレーショナル・データベース型のデータベース管理システム（ＤＢＭＳ）ソフトウェアを使用して、データベース・サーバ３００を適宜構築できるが、それらに限定されない。
【００５１】
リクエスト受信部３１０は、アプリケーション・サーバ２００のデータベース処理要求部２４０から送信されたデータベース処理リクエストを受信する。データベース・エンジン３２０は、リクエスト受信部３１０が受信したデータベース処理リクエストを解釈し、データベース３３０に格納されたデータから適切なものを入手する。データベース３４０は、トランザクション処理に必要なデータをデータベース・レコードとして格納している。リクエスト応答部３４０は、データベース・エンジン３２０が入手したデータを、アプリケーション・サーバ２００に返すことができる。
【００５２】
図６は、本発明の実施の形態のクライアント・コンピュータ４００の機能ブロック図である。クライアント・コンピュータ４００は、リクエスト送信部４１０、ユーザ操作部４２０、処理結果受信部４３０、および処理結果表示部４４０を含む。
【００５３】
リクエスト送信部４１０は、クライアント・コンピュータ４００のユーザがキーボード、マウス等のユーザ・インターフェース４２０を操作することによって送信するよう指示したトランザクション処理リクエストを負荷分散サーバ６００に送信する。処理結果受信部４３０は、リクエスト送信部４１０が送信したトランザクション処理リクエストの処理結果をアプリケーション・サーバ２００のいずれかより受信する。処理結果表示部４４０は、処理結果受信部４３０が受信した処理結果をディスプレイ装置などに表示する。
【００５４】
図７は、本発明の実施の形態の負荷分散サーバ５００の機能ブロック図である。負荷分散サーバ５００は、リクエスト受信部５１０、負荷監視部５２０、リクエスト送信先決定部５３０、およびリクエスト送信部５４０を含む。
【００５５】
リクエスト受信部５１０は、クライアント・コンピュータ４００のリクエスト送信部４１０より、トランザクション処理リクエストを受信する。負荷監視部５２０は、各アプリケーション・サーバ２００の負荷状況を監視する。リクエスト送信先決定部５３０は、リクエスト受信部５１０によって受信されたトランザクション処理リクエストの内容および負荷監視部５２０によって得られた各アプリケーション・サーバ２００の負荷状況に基づいて、所定のアルゴリズムに従って、当該リクエストが処理されるべきアプリケーション・サーバを決定する。リクエスト送信先となるべきアプリケーション・サーバの決定のアルゴリズムは、負荷状況を考慮したラウンドロビン方式など周知のものが多数存在し、当業者は適宜設計することができるので、ここでは詳細は説明しない。リクエスト送信部５４０は、リクエスト受信部５１０によって受信されたトランザクション処理リクエストを、リクエスト送信先決定部５３０によって決定されたアプリケーション・サーバに送信する。
【００５６】
図８は、本発明の実施の形態のネットワーク・システム１０００における、パラメータ設定処理の流れを示すフローチャート８０００である。本発明の実施の形態では、パラメータは、管理者が管理サーバのキーボード、マウス等の入力装置を操作して集中的に設定されることを想定しているが、これに限られない。具体的には、ローカル多重度の上限値は、各アプリケーション・サーバの入力装置を使用して、アプリケーション・サーバごとに異なる管理者が設定してもよいことは勿論である。
【００５７】
処理は、ステップ８０１０からスタートし、ステップ８０２０で、トランザクションのグルーピングのルールを定義することによって、トランザクション・グループを定義する。グルーピングのルールは、例えば、特定のアプリケーション・プログラムによって処理されるトランザクションをグルーピングするよう定義することができる。定義されたグルーピング・ルールは、グルーピング・ルール記憶部２１５に記憶される。処理は、ステップ８０３０に進み、ステップ８０２０でルールを設定したトランザクション・グループに関し、あるアプリケーション・サーバに対してローカル多重度の上限値を設定する。設定されたローカル多重度の上限値は、当該アプリケーション・サーバに送信され、ローカル多重度デフォルト上限値記憶部２６０に当該アプリケーション・サーバのデフォルトのローカル多重度の上限値として記憶される。
【００５８】
ステップ８０４０で、まだ設定が必要なアプリケーション・サーバがある場合は、”Ｙｅｓ”の矢印からステップ８０３０に戻り、ローカル多重度の上限値の設定が行われる。ステップ８０４０でもう設定が必要なアプリケーション・サーバが存在しない場合は、”Ｎｏ”の矢印からステップ８０５０へ進む。ステップ８０５０では、ステップ８０２０でルールを設定したトランザクション・グループに関し、グローバル多重度の上限が設定される。設定されたグローバル多重度は、管理サーバ１００のグローバル多重度上限値記憶部１２０に記憶される。処理は、ステップ８０６０へ進み、トランザクション・グループをさらに設定するかどうかが管理者によって入力される。ステップ８０６０において、管理者がさらにトランザクション・グループの定義を希望する場合は、”Ｙｅｓ”の矢印からステップ８０２０へ戻り、上述のステップ８０３０乃至ステップ８０５０が繰り返される。ステップ８０６０において、管理者がさらにトランザクション・グループの定義を希望しない場合は、ステップ８０７０に進み、処理は終了する。
【００５９】
図９は、本発明の実施の形態のネットワーク・システム１０００における、ローカル多重度の変更処理の流れを示すフローチャート９０００である。なお、フローチャート９０００の処理に際して、トランザクションはステップ８０２０において定義したトランザクション・グループのいずれかにグルーピング・ルールに従ってマップされ、フローチャート９０００の各ステップは、フローチャート８０００のステップ８０２０において定義したトランザクション・グループごとに独立して行われることに留意されたい。処理は、ステップ９０１０からスタートし、ステップ９０２０で、各アプリケーション・サーバ２００において実行しているトランザクション数すなわちローカル多重度の現在値を、トランザクション・グループごとに監視している。
【００６０】
ステップ９０３０において、あるトランザクション・グループについてシステム全体があるビジー状態であるかどうかを判断するために、各アプリケーション・サーバ２００で実行しているトランザクション数の合計すなわちグローバル多重度の現在値を算出し、算出されたトランザクションの数の合計がアプリケーション・サーバ２００に対して設定されたグローバル多重度の上限値に等しいかまたは超えているかどうかを判定する。いずれのトランザクション・グループについても、グローバル多重度の現在値がグローバル多重度の上限値に等しくなく、かつ超えていない場合は、まだビジー状態になっていないと判断されるので、”Ｎｏ”の矢印からステップ９０２０に戻り、トランザクション数の監視が続けられる。いずれかのトランザクション・グループについて、グローバル多重度の現在値がグローバル多重度の上限値に等しいかまたは超えている場合は、ビジー状態になったと判断されるので、”Ｙｅｓ”の矢印に沿ってステップ９０４０へ進む。
【００６１】
ステップ９０４０では、それぞれのアプリケーション・サーバ２００において実行されているトランザクションの数に、当該アプリケーション・サーバ２００のローカル多重度の上限値を変更する「第１の命令」が生成される。処理は、ステップ９０５０に進み、ステップ９０４０で生成された第１の命令が、各アプリケーション・サーバ２００に送信される。ステップ９０６０では、第１の命令を受信したアプリケーション・サーバ２００が、当該アプリケーション・サーバ２００のローカル多重度の現在値に、当該アプリケーション・サーバ２００のローカル多重度の上限値を変更する。
【００６２】
ステップ９０７０に進み、管理サーバは、各アプリケーション・サーバ２００のローカル多重度の現在値を監視する。ステップ９０８０において、あるトランザクション・グループについてシステム全体があるビジー状態から脱したかどうかを判断するために、グローバル多重度の現在値を算出し、グローバル多重度の現在値がグローバル多重度の現在値をより小さいかどうかを判定する。グローバル多重度の現在値がグローバル多重度の上限値に等しいか超えている場合、すなわちグローバル多重度の現在値がグローバル多重度の上限値より小さくない場合は、いまだビジー状態と判断されるので、”Ｎｏ”の矢印からステップ９０７０に戻り、トランザクション数の監視が続けられる。グローバル多重度の現在値がグローバル多重度の上限値をよりも小さい場合は、ビジー状態を脱したと判断されるので、”Ｙｅｓ”の矢印に沿ってステップ９０９０へ進む。
【００６３】
ステップ９０９０では、それぞれのアプリケーション・サーバ２００に対してあらかじめ定められたデフォルトのローカル多重度の上限値に、当該アプリケーション・サーバ２００のローカル多重度の値を変更する「第２の命令」が生成される。処理は、ステップ９１００に進み、ステップ９０９０で生成された第２の命令が、各アプリケーション・サーバ２００に送信される。ステップ９１１０では、第２の命令を受信したアプリケーション・サーバ２００が、当該アプリケーション・サーバ２００に対してあらかじめ設定されたデフォルトのローカル多重度の上限値に、当該アプリケーション・サーバ２００のローカル多重度の上限値を変更する。その後、処理はステップ９０２０に戻り、同様の処理が繰り返される。
【００６４】
図１０は、本発明の実施の形態におけるアプリケーション・サーバ２００におけるトランザクション処理の手順を示したフローチャート１００００である。なお、フローチャート９０００と同様、フローチャート１００００の処理に際して、トランザクションはステップ８０２０において定義したトランザクション・グループのいずれかにグルーピング・ルールに従ってマップされ、フローチャート１００００の各ステップは、フローチャート８０００のステップ８０２０において定義したトランザクション・グループごとに独立して行われることに留意されたい。
【００６５】
処理は、ステップ１００１０からスタートし、ステップ１００２０で、負荷分散サーバ５００からのトランザクション処理リクエストの受信、または既に実行中のトランザクションの実行処理が終了したことを示す終了イベントの発生を待機する。
【００６６】
ステップ１００３０において、負荷分散サーバ５００からのトランザクション処理リクエストを受信したと判定された場合は、”Ｙｅｓ”の矢印に沿ってステップ１００４０へ進む。ステップ１００４０では、受信したトランザクション処理リクエストの処理が可能かどうかが判定される。具体的には、アプリケーション・サーバのローカル多重度の現在値が、当該アプリケーション・サーバのローカル多重度の上限値よりも小さい場合に、トランザクション処理リクエストの処理が可能と判断される。一方、アプリケーション・サーバのローカル多重度の現在値が、当該アプリケーション・サーバのローカル多重度の上限値に達している場合、トランザクション処理リクエストの処理が不可能と判断される。
【００６７】
ステップ１００４０でトランザクション処理リクエストが処理可能と判断された場合、”Ｙｅｓ”の矢印に沿ってステップ１００５０へ進む。ステップ１００５０では、当該アプリケーション・サーバで計測している実行トランザクション数を１だけ増分する。処理は、ステップ１００６０へ進み、トランザクション処理リクエストの処理が開始される。その後、処理は、ステップ１００２０へ進み、再び待機状態に戻ることになる。
【００６８】
ステップ１００４０でトランザクション処理リクエストが処理不可能と判断された場合、”Ｎｏ”の矢印に沿ってステップ１００７０へ進む。ステップ１００７０では、アプリケーション・サーバは、ステップ１００３０で受信したトランザクション処理リクエストを待ち行列の最後尾に入れる。待ち行列内のリクエストを処理するアルゴリズムは、最大待ち数の上限値を設定する手法、最大待ち時間の上限値を設定して、それを超えたリクエストを破棄するなどの手法が存在し、当業者は適宜設計することができるので、ここでは詳細を説明しない。その後、処理は、ステップ１００２０へ進み、再び待機状態に戻ることになる。
【００６９】
ステップ１００３０において、負荷分散サーバ５００からのトランザクション処理リクエストを受信していないと判定された場合は、”Ｎｏ”の矢印に沿ってステップ１００８０へ進む。ステップ１００８０においては、既に実行中のトランザクションの実行処理が終了したことを示す終了イベントが発生したかどうかが判定される。ステップ１００８０において終了イベントが発生していないと判定された場合、”Ｎｏ”の矢印に沿ってステップ１００２０へ進み、再び待機状態に戻ることになる。
【００７０】
ステップ１００８０において終了イベントが発生したと判定された場合、”Ｙｅｓ”の矢印に沿ってステップ１００９０へ進む。ステップ１００９０では、当該アプリケーション・サーバで計測しているローカル多重度を１だけ減じる。処理は、ステップ１０１００へ進み、待ち行列にトランザクション処理リクエストが存在するかどうかが判定される。
【００７１】
ステップ１０１００において待ち行列にトランザクション処理リクエストが存在していないと判定された場合、”Ｎｏ”の矢印に沿ってステップ１００２０へ進み、再び待機状態に戻ることになる。ステップ１０１００において待ち行列にトランザクション処理リクエストが存在していると判定された場合、”Ｙｅｓ”の矢印に沿ってステップ１００５０へ進む。
【００７２】
ステップ１００５０では、当該アプリケーション・サーバで計測しているローカル多重度の現在値を１だけ増分する。処理は、ステップ１００６０へ進み、トランザクション処理リクエストの処理が開始される。その後、処理は、ステップ１００２０へ進み、再び待機状態に戻ることになる。
【００７３】
以上、本発明によれば、複数のサーバを含むサーバ・グループに含まれるサーバそれぞれに設定された同時に実行可能なトランザクションの最大数であるローカル多重度の上限値を効果的に制御することができることが容易に理解できる。
【００７４】
以上、本発明の実施の形態を用いて説明したが、本発明の技術範囲は上記実施の形態に記載の範囲には限定されない。例えば、本発明の実施の形態における管理サーバの機能を負荷分散サーバあるいはデータベース・サーバ上に実装することもできるし、複数のアプリケーション・サーバのうちの１つにおいて実装することも可能である。上記の実施の形態に、そのような種々の変更または改良を加えることが可能であることが当業者に明らかである。従って、そのような変更または改良を加えた形態も当然に本発明の技術的範囲に含まれる。
【図面の簡単な説明】
【００７５】
【図１】本発明の実施の形態によるネットワーク・システムのハイレベル概念図である。
【図２】本発明の実施の形態による管理サーバ、アプリケーション・サーバ、データベース・サーバ、クライアント・コンピュータ、および負荷分散サーバを実現するのに好適なコンピュータのハードウェア構成の一例を示した図である。
【図３】本発明の実施の形態による管理サーバの機能ブロック図である。
【図４】本発明の実施の形態によるアプリケーション・サーバの機能ブロック図である。
【図５】本発明の実施の形態によるデータベース・サーバの機能ブロック図である。
【図６】本発明の実施の形態によるクライアントの機能ブロック図である。
【図７】本発明の実施の形態による負荷分散・サーバの機能ブロック図である。
【図８】本発明の実施の形態のネットワーク・システムにおける、パラメータ設定処理の流れを示すフローチャートである。
【図９】本発明の実施の形態のネットワーク・システムにおける、ローカル多重度の変更処理の流れを示すフローチャートである。
【図１０】本発明の実施の形態におけるアプリケーション・サーバにおけるトランザクション処理の手順を示したフローチャートである。
【図１】
2006243781.tif 000003
【図２】
2006243781.tif 000004
【図３】
2006243781.tif 000005
【図４】
2006243781.tif 000006
【図５】
2006243781.tif 000007
【図６】
2006243781.tif 000008
【図７】
2006243781.tif 000009
【図８】
2006243781.tif 000010
【図９】
2006243781.tif 000011
【図１０】
2006243781.tif 000012