(57)【要約】【課題】負荷分散システムを安定的に運転できるようにする。【解決手段】負荷分散システム１は、ジョブの情報や複数のバッチサーバ５の情報を登録するデータベースサーバ４を有する。バッチサーバ５は、データベースサーバ４にジョブの情報が登録されたら、自身が実行中のジョブ数と実施可能なジョブの最大数から現在利用率を算出し、現在利用率の大小に応じて処理を行うか、他のバッチサーバ５に処理を任せるか判定する。現在利用率の情報は、他のバッチサーバ５が参照できるように、定期的にデータベースサーバ４に登録する。【選択図】図１
2015005008.tif 000002
【特許請求の範囲】
【請求項１】
複数のコンピュータがアクセス可能なデータ領域に格納されるジョブの情報を取得し、
複数の前記コンピュータが実行中のジョブ数と前記複数のコンピュータ毎に予め定められた実施可能最大ジョブ数から算出される前記コンピュータ毎の前記ジョブの利用率を前記データ領域にアクセスして参照し、
前記ジョブの利用率が前記他のコンピュータの前記ジョブの利用率より少ない場合に、前記ジョブを処理対象と決定する処理をコンピュータに実行させることを特徴とする負荷分散システムのプログラム。
【請求項２】
前記ジョブの利用率に予め定められた係数を掛算して判定値を算出し、前記判定値が１００％未満である場合に、前記他のコンピュータに前記ジョブを実行させずに、前記ジョブを処理対象と決定する処理をコンピュータに実行させることを特徴とする負荷分散システムのプログラム。
【請求項３】
ジョブについて実行中のジョブ数と予め定められた実施可能最大ジョブ数から前記ジョブの利用率を算出する利用率計算部と、
前記利用率を用いてジョブの実行の可否を判定する実施判定部と、
前記実施判定部の判定結果に基づいてジョブの実行を管理するジョブ管理部と、
前記利用率を他のコンピュータで参照可能にデータベースに登録するデータ更新部と、を含むことを特徴とする負荷分散システム。
【請求項４】
前記実施判定部は、
前記ジョブの利用率に予め定められた係数を掛算して判定値を算出し、前記判定値が１００％未満である場合に、前記他のコンピュータに前記ジョブを実行させずに、前記ジョブを処理対象と決定し、
前記判定値が１００％以上の場合には、前記ジョブの利用率が前記他のコンピュータの前記ジョブの利用率より少ないときに、前記ジョブを処理対象と決定するように構成したことを特徴とする請求項４に記載の負荷分散システム。
【請求項５】
データベースに登録されたジョブの情報を取得し、
実行中のジョブ数と予め定められた実施可能最大ジョブ数から前記ジョブの利用率を算出し、前記ジョブの利用率が所定位置以下の場合に前記ジョブを実行し、
前記ジョブの利用率が所定位置より大きく、かつ他のコンピュータの前記ジョブの利用率以上の場合に前記ジョブを実行せず、
前記ジョブの利用率が所定位置より大きいが、他のコンピュータの前記ジョブの利用率より小さい場合に前記ジョブを実行することを特徴とする負荷分散方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、負荷分散システムのプログラム及び負荷分散システム並びに負荷分散方法に関する。
【背景技術】
【０００２】
コンピュータシステムを用いて業務用のデータを処理する方法としては、一定期間に集まったデータを一括処理するバッチ処理が知られている。一般に、バッチ処理では、大量のデータを処理対象とするため、処理を実行するバッチサーバの負荷が大きくなる。このために、バッチサーバにかかる負荷を事前に見積もって、適正なスペックのバッチサーバを用意する必要がある。しかしながら、バッチデータの処理量が大きくなると、バッチサーバを安定稼働させて処理を一定時刻までに完了させることが難しくなる。そこで、近年では、複数のバッチサーバと、各バッチサーバの負荷を制御する管理サーバとで負荷分散システムを構築し、管理サーバで各バッチサーバの負荷を分散させてバッチ処理を安定的に実施させている。
【０００３】
例えば、従来の負荷分散システムにおける管理サーバは、新しいジョブの情報を取得したら、そのジョブに要求される実行時間を見積もり、ジョブを複数のバッチサーバに振り分け、各バッチサーバの負荷を均等化させる。各バッチサーバにおける負荷は、それぞれのバッチサーバのＣＰＵ（Central Processing Unit）使用率、メモリ使用率、Ｉ／Ｏ（Input/Output）使用率のデータを定期的に取得することによって判定する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００１−１４７９０１号公報
【特許文献２】特開２０１０−２３８０５１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ここで、管理サーバと複数バッチサーバとで負荷分散システムを構築する場合、バッチサーバの数が多くなると管理サーバの負荷が増大する。そして、管理サーバのシステムがダウンすると、負荷分散システム全体が止まってしまう。さらに、バッチサーバを増築するときに、管理サーバに新しいバッチサーバの情報を追加する作業が発生し、管理が煩雑となる。
１つの側面では、本発明は、複数のコンピュータの間の負荷分散処理が可能になる。
【課題を解決するための手段】
【０００６】
複数のコンピュータがアクセス可能なデータ領域に格納されるジョブの情報を取得し、複数の前記コンピュータが実行中のジョブ数と前記複数のコンピュータ毎に予め定められた実施可能最大ジョブ数から算出される前記コンピュータ毎の前記ジョブの利用率を前記データ領域にアクセスして参照し、前記ジョブの利用率が前記他のコンピュータの前記ジョブの利用率より少ない場合に、前記ジョブを処理対象と決定する処理をコンピュータに実行させることを特徴とする負荷分散システムのプログラムが提供される。
【０００７】
また、ジョブについて実行中のジョブ数と予め定められた実施可能最大ジョブ数から前記ジョブの利用率を算出する利用率計算部と、前記利用率を用いてジョブの実行の可否を判定する実施判定部と、前記実施判定部の判定結果に基づいてジョブの実行を管理するジョブ管理部と、前記利用率を他のコンピュータで参照可能にデータベースに登録するデータ更新部と、を含むことを特徴とする負荷分散システムが提供される。
【０００８】
さらに、データベースに登録されたジョブの情報を取得し、実行中のジョブ数と予め定められた実施可能最大ジョブ数から前記ジョブの利用率を算出し、前記ジョブの利用率が所定位置以下の場合に前記ジョブを実行し、前記ジョブの利用率が所定位置より大きく、かつ他のコンピュータの前記ジョブの利用率以上の場合に前記ジョブを実行せず、前記ジョブの利用率が所定位置より大きいが、他のコンピュータの前記ジョブの利用率より小さい場合に前記ジョブを実行することを特徴とする負荷分散方法が提供される。
【発明の効果】
【０００９】
複数のコンピュータの間の負荷分散処理が可能になる。
【図面の簡単な説明】
【００１０】
【図１】図１は、本発明の実施の形態に係る負荷分散システムの概略構成の一例を示す図である。
【図２】図２は、本発明の実施の形態に係る負荷分散システムのキュー定義マスタの構成の一例を示す図である。
【図３】図３は、本発明の実施の形態に係る負荷分散システムのジョブスタックテーブルの構成の一例を示す図である。
【図４】図４は、本発明の実施の形態に係る負荷分散システムのバッチサーバの構成の一例を示す図である。
【図５】図５は、本発明の実施の形態に係る負荷分散システムの初期値定義ファイルの構成の一例を示す図である。
【図６】図６は、本発明の実施の形態に係る負荷分散システムの処理の一例を示すフローチャートである。
【図７】図７は、本発明の実施の形態に係る負荷分散システムにおいて他バッチサーバにジョブを任せるか判定する処理の一例を説明する図である。
【図８】図８は、本発明の実施の形態に係る負荷分散システムにおいて複数のジョブが登録された例を説明する図である。
【発明を実施するための形態】
【００１１】
発明の目的及び利点は、請求の範囲に具体的に記載された構成要素及び組み合わせによって実現され達成される。
前述の一般的な説明及び以下の詳細な説明は、典型例及び説明のためのものであって、本発明を限定するためのものではない。
【００１２】
図１に負荷分散システムの概略構成を示す。
負荷分散システム１は、利用者が使用するコンピュータである業務端末２に接続されたオンラインサーバ３と、オンラインサーバ３に接続された１つのデータベースサーバ４と、データベースサーバ４に接続された複数のバッチサーバ５とを含んで構成されている。
【００１３】
オンラインサーバ３は、複数の業務端末２に接続され、業務端末２からの処理依頼を受け付け、データベースサーバ４に送信するコンピュータである。また、オンラインサーバ３は、データベースサーバ４のジョブスタックテーブル１１のデータを更新する機能を有する。
【００１４】
データベースサーバ４は、オンラインサーバ３やバッチサーバ５と通信可能に構成されたコンピュータであり、本実施の形態に特徴的な構成として、キュー定義マスタ１０（第２のデータ領域）と、ジョブスタックテーブル１１（第１のデータ領域）とを有する。キュー定義マスタ１０及びジョブスタックテーブル１１は、データベースサーバ４のメモリやＨＤＤ（Hard Disk Drive）等の記憶装置を用いて構築されている。ジョブスタックテ
ーブル１１に、ＲＤＢ（リレーショナルデータベース）を採用すると、レコード更新時に排他制御できるので好適である。しかしながら、ジョブスタックテーブル１１は、レコード更新時に排他制御に構成されていれば、ＲＤＢ以外を採用しても良い。
【００１５】
図２に一例を示すように、キュー定義マスタ１０は、バッチサーバ情報２１と、キュー名称情報２２と、優先度情報２３と、多重度情報２４と、有効期限情報２５と、現在利用率情報２６と、最終投入時刻情報２７とが関連付けられたデータベースである。ここで、バッチサーバ情報２１には、例えば、「１号機」や、「２号機」、「３号機」といったバッチサーバ５毎に付与されたユニークな識別情報が格納されている。例えば、バッチサーバ５が４つ以上の場合には、バッチサーバ情報２１には４種類のデータのいずれか１つが格納される。
【００１６】
キュー名称情報２２は、キューを特定する情報が格納される。優先度情報２３は、キュー名称毎に定義された処理の優先度であり、数値化されたデータが格納されている。優先度は、「１」が最も高く、以降は「５」、「１０」の順番に優先度が低くなる。例えば、キュー「Ａ」がファイル転送を指令するもので、優先度の高いものである場合には、キュー名称情報２２の「Ａ」に対して、優先度情報２３が「１」に設定される。なお、優先度を特定する情報には、不連続の数字を使用しても良いし、連続した数字を採用しても良い。さらに、優先度は、数値が大きい程優先度が高くなるように設定しても良いし、記号で優先度を分類しても良い。
【００１７】
多重度情報２４は、１つのキューに対して実行可能なジョブの最大数を示す。多重度は、優先度の高さとの相関はなく、優先度が高くても多重度が高く設定されることもある。有効期限情報２５は、キュー定義マスタ１０に登録されたデータの有効期限を示す情報、具体的には日時が格納される。現在利用率情報２６は、現時点においてバッチサーバ５が処理中のジョブの利用率を示す情報が格納される。例えば、現在利用率は、実行中のジョブの数を多重度で割った値が使用される。最終投入時刻情報２７は、最後にジョブがバッチサーバ５に投入された時刻が格納される。
【００１８】
例えば、図２に示すキュー定義マスタ１０の一行目のデータは、「１号機」のバッチサーバ５のキュー名称「Ａ」についての情報が格納されている。ここでは、「１号機」のバッチサーバ５において、優先度が「１（高）」で、多重度が「１０」に設定されているキュー「Ａ」について、この情報の有効期限は、前回の更新時刻から５分以内であり、現在の利用率が５０％で、ジョブが最後に投入されたのは２０１２／１２／０７の１０時１５分１３秒であることが示されている。ここで、現在利用率が５０％とは、１号機のバッチサーバ５は、キュー「Ａ」については多重度で特定される「１０」個までジョブを実行することが可能であるが、現段階では５個のみ実行していることを示している。また、二列目のデータは、１号機のバッチサーバ５において、優先度が「中」のキュー「Ｂ」についての現在利用率が４０％であることが示されている。
【００１９】
図２に例示するキュー定義マスタ１０では、３つのバッチサーバ５のそれぞれについて、キュー名称毎の優先度及び多重度は同じになっている。しかしながら、バッチサーバ５毎に、キュー名称毎の優先度及び多重度を変更しても良い。特に、バッチサーバ５毎に性能が異なる場合、より高性能のバッチサーバ５の多重度を大きくし、より多数のジョブを実行可能に設定することによって、高性能のバッチサーバ５でより多くの処理を実行させると、複数のバッチサーバ５の処理能力が個々に異なる場合であってバッチサーバ５間の負荷を均等化できる。なお、現在利用率情報２６の代わりに、現在空き率情報を使用しても良い。現在空き率情報には、現在実行可能なジョブの数（空き数）を多重度で割った値が格納される。
【００２０】
次に、図３を参照してジョブスタックテーブル１１について説明する。
図３に一例を示すジョブスタックテーブル１１は、依頼時刻情報３１と、起動予定ジョブ名情報３２と、処理状態情報３３と、投入時刻情報３４と、投入キュー名称情報３５とが関連付けられたデータベース構造を有する。ここで、依頼時刻情報３１は、業務端末２から出力された処理依頼を受け付けた時間を示す。起動予定ジョブ名情報３２は、バッチサーバ５で処理する処理を特定する情報である。処理状態情報３３は、いずれかのバッチサーバ５が処理依頼された起動予定ジョブの処理を開始している場合には、「起動済み」が格納される。一方、いずれのバッチサーバ５も未だ処理を開始していない場合には、「未処理」が格納される。投入時刻情報３４は、バッチサーバ５にジョブが投入された時刻、即ちバッチサーバ５がジョブの処理を開始した時刻が格納される。投入キュー名称情報３５は、キューを特定する情報が格納される。
【００２１】
例えば、図３に示すジョブスタックテーブル１１の一行目のデータは、２０１２年１２月０７日の１０時００分に処理依頼があったジョブ名「ＪＯＢ０００１」についてのステータスを示すデータである。さらに、このジョブのキュー名称が「Ａ」であること、処理状態が「未処理」であることから、いずれのバッチサーバ５もこのジョブの処理を開始していないことが示されている。
【００２２】
次に、図１及び図４を参照し、バッチサーバ５について説明する。
各バッチサーバ５は、１つのデータベースサーバ４に通信可能に複数接続されており、業務端末２からの処理依頼を実際に処理するコンピュータである。図４に一例を示すように、バッチサーバ５は、ＣＰＵ及びＲＡＭなどのメモリによって形成される制御部４１と、ＨＤＤなどの記憶装置４３と、データの入力を制御する入力装置４４と、データを表示又は出力する出力装置４５と、通信制御装置４６とを含んで構成されている。
【００２３】
この実施の形態におけるバッチサーバ５は、制御部４１に負荷分散プログラムを実行させることによって、この実施の形態に特徴的な構成として、スタック監視アプリケーション５１と、初期値定義ファイル５２と、キュー制御アプリケーション５３とにおける処理が可能に構成されている。なお、負荷分散プログラムは、コンピュータ読取可能な記録媒体に記録可能で、バッチサーバ５にインストールすることにより実行することが可能である。なお、負荷分散プログラムは、スタック監視アプリケーション５１のみを実行させるプログラムであっても良い。
【００２４】
スタック監視アプリケーション５１は、バッチサーバ５内で使用する定数として、有効期限間隔、係数Ｎ、所定の依頼待ち時間を有し、データベースサーバ４にアクセスしてバッチサーバ５間の負荷分散を制御する。さらに、データベースサーバ４からジョブのデータを受け取ったり、ジョブの処理結果をデータベースサーバ４に受け渡したりする。
【００２５】
キュー制御アプリケーション５３は、キュー毎に実行可能なジョブ数から自身のバッチサーバ５について算出される現在利用率を算出する利用率計算部５６と、現在利用率を用いて自バッチサーバ５でジョブを実行する判定する実施判定部５７と、処理依頼の読み込みや、判定結果に基づいてジョブのバッチサーバ５のＯＳ（Operating System）５４に対してジョブの実行を指令するジョブ管理部５８と、キュー定義マスタやジョブスタックテーブルのデータを更新するデータ更新部５９とに機能分割できる。なお、バッチサーバ５は、キュー制御アプリケーション５３を有さない構成にすることも可能である。この場合には、スタック監視アプリケーション５１がＯＳ５４に対して直接にジョブの実行を指令する。実際の処理は、ＯＳ５４上で動作する業務アプリケーション５５が実行する。
【００２６】
図５に一例を示すように、初期値定義ファイル５２は、キュー名称情報６１と、優先度情報６２と、多重度情報６３と、有効期限間隔情報６４とを関連付けた構成を有する。初
期値定義ファイル５２は、バッチサーバ５毎に作成される。このために、例えば、「１号機」のバッチサーバ５においては、「１号機」のバッチサーバ５についてのデータがリスト形成で作成される。優先度情報６２及び多重度情報６３は、キュー定義マスタ１０における優先度情報２３及び多重度情報２４と同様のデータが格納される。有効期限間隔情報６４は、キュー定義マスタ１０に格納されるデータの有効期限を定める定数が格納される。
【００２７】
例えば、図５の初期値定義ファイル５２の一行目のデータは、キュー名称「Ａ」が、優先度が「１」で他のキューに比べて最も高く、多重度が「１０」であり、有効期間間隔が「５」分であることを示している。
【００２８】
次に、負荷分散システム１で実行されるバッチ処理について説明する。
最初に、図１を参照し、サービス開始時の処理について説明する。
まず、各バッチサーバ５は、データベースサーバ４のキュー定義マスタ１０にアクセスし、自分のバッチサーバ５（自バッチサーバ５）について登録されているデータを初期化する。具体的には、各バッチサーバ５は、スタック監視アプリケーション５１が起動されたら、データ更新部５９で初期値定義ファイル５２のデータを読み込んで、その内容を使用し、データベースサーバ４のキュー定義マスタ１０のデータを更新する。この処理は、全てのバッチサーバ５が実行する。
【００２９】
続いて、図６のフローチャートを参照し、負荷分散システム１のサービス実行中の処理について説明する。
最初に、ステップＳ１０１で、各バッチサーバ５のスタック監視アプリケーション５１のジョブ管理部５８は、データベースサーバ４のジョブスタックテーブル１１にアクセスし、未処理に分類されているジョブデータのジョブ名及びキュー名称を依頼時刻順に読み込む。
さらに、ステップＳ１０２では、各バッチサーバ５のスタック監視アプリケーション５１のデータ更新部５９が、所定のタイミングでデータベースサーバ４のキュー定義マスタ１０にアクセスし、自分のバッチサーバ５について登録されているデータを更新する。所定のタイミングとは、前回の更新時刻から、有効期限間隔が経過するまでの間である。
【００３０】
ここで、ステップＳ１０３において、ジョブスタックテーブル１１に未処理の依頼がなかった場合には、ステップＳ１０１に戻る。一方、ジョブスタックテーブル１１に未処理の依頼があった場合には、ステップＳ１０４に進む。
【００３１】
ステップＳ１０４では、スタック監視アプリケーション５１の実施判定部５７が、同じバッチサーバ５内のキュー制御アプリケーション５３に対して、キュー名称に合致するキューの空き数、又は利用中数、キューの起動停止状態を問い合わせる。キューの空き数とは、バッチサーバ５において当該キューについてのジョブを実行可能な数である。キューの利用中数とは、バッチサーバ５において当該キューについてのジョブの内で現在実行中であるジョブの数である。キューの起動状態とは、そのバッチサーバ５においてそのキューに対応する処理の実行が許可されているか否かを示す情報である。キュー制御アプリケーション５３がキューの起動、即ち処理の実行を許可していない場合には、そのバッチサーバ５は当該キューに相当する処理を実行しない。
【００３２】
そして、ステップＳ１０５に示すように、当該キューについての起動が許可されており、かつジョブを処理可能な空きが有る場合には、ステップＳ１０６に進む。一方、当該キューの起動が許可されていない場合、そのキューは自バッチサーバ５の処理対象でないので、ステップＳ１０１に戻り、他の未処理のジョブに備える。また、当該キューについての処理可能な空きがない場合にも、ステップＳ１０１に戻る。これは、そのバッチサーバ
５で実行可能なジョブの数を越えており、これ以上同じキューのジョブを実行することは負荷分散の観点から好ましくないからである。
【００３３】
ステップＳ１０６では、スタック監視アプリケーション５１の利用率計算部５６が、キューの空き数、又はキューの利用中数と、キュー定義マスタ１０の多重度から、現在の利用率（現在利用率）を計算する。現在利用率は、各バッチサーバ５について計算される。例えば、当該キューのジョブの空き数を取得した場合、現在利用率は、｛（多重度）−（空き数）｝÷（多重度）で計算される。一方、当該キューのジョブの利用中数（実行中数）を取得した場合、現在利用率は、（利用中数）÷（多重度）で計算される。
【００３４】
さらに、ステップＳ１０７で、スタック監視アプリケーション５１の実施判定部５７は、当該キューのジョブを自バッチサーバ５で処理すべきか判定する。具体的には、実施判定部５７が、現在利用率に係数Ｎを掛算して判定値を計算する。ここで、係数Ｎは、１以上の数字である。計算結果が１００％を超える場合は、１００％として扱う。判定値が１００％を越えていない場合は、自バッチサーバ５で処理すべきと判定し、ステップＳ１０９に進む。
【００３５】
一方、ステップＳ１０７において自バッチサーバ５で処理すべきでないと判定した場合には、ステップＳ１０８に進む。このような場合としては、現在利用率に係数Ｎを掛算して判定値が１００％以上であったときである。
【００３６】
ステップＳ１０８では、実施判定部５７が、他のバッチサーバ５の同一キューに対する現在利用率を考慮し、自バッチサーバ５で処理するか、他のバッチサーバ５に処理を任せるかを判断する。具体的には、実施判定部５７は、各他バッチサーバ５の同一キューに関する現在利用率をキュー定義マスタ１０から取得する。そして、他バッチサーバ５の情報から、最初に、有効期限が切れていないバッチサーバ５を選択する。現在時刻が有効期限情報２５に格納されている時刻より前であれば、バッチサーバ５が正常に運転されていると判定する。以降の判定処理は、有効期限が切れていないバッチサーバ５についてのみ行う。
【００３７】
続いて、有効期限が切れていない他バッチサーバ５のキュー定義マスタ１０の現在利用率を取得し、それぞれの現在利用率をＮ倍して比較値を算出する。ここで、係数Ｎは、負荷分散システム１全体で共通して使用されている値を使用する。負荷分散システム１がバッチサーバ５毎に異なる係数Ｎの値を使用する場合には、予め各バッチサーバ５にそれぞれの係数Ｎを登録するか、キュー定義マスタ１０のデータ項目に係数Ｎを追加する。なお、係数Ｎを用いずに、現在利用率をそのまま使用しても良い。
【００３８】
そして、自バッチサーバ５と他のバッチサーバ５の処理状態をジョブの実施数に基づいて判定する。具体的には、全ての他バッチサーバ５との間で、
［他バッチサーバ５の比較値］≦［自バッチサーバ５の判定値］
を調べる。いずれかの他バッチサーバ５との間で、上記の不等式が成り立つ場合は、自バッチサーバ５より空が多い他バッチサーバ５が存在するので、実施判定部５７は、そのキューのジョブを現在利用率が少ない他バッチサーバ５に任せると判断し、ステップＳ１０２に戻る。
【００３９】
ここで、ステップＳ１０８でＮｏと判定される場合の具体例を図７のキュー定義マスタ１０を参照して説明する。ここで、１号機のバッチサーバ５を自バッチサーバ５とし、２号機及び３号機のバッチサーバ５を他バッチサーバ５とする。キュー「Ａ」に対する自バッチサーバ５は、現在利用率が６０％であり、判定値はＮ×６０である。他バッチサーバ５の比較値は、Ｎ×４０とＮ×３０である。この場合には、２号機及び３号機のバッチサ
ーバ５が共に、現在利用率のＮ倍が１号機のバッチサーバ５より小さいので、１号機のバッチサーバ５は、今回のジョブを処理せず、２号機又は３号機のバッチサーバ５に任せる。この結果、現在利用率が小さい２号機及び３号機のバッチサーバ５に処理が回されるようになるので、負荷分散システム１全体としての負荷が分散される。
【００４０】
これに対し、全ての他バッチサーバ５の有効期限が切れていた場合や、いずれの他バッチサーバ５に対しても上記の不等式が成立しない場合、実施判定部５７は、当該バッチ処理依頼を自バッチサーバ５で処理すべきと判断し、ステップＳ１０９に進む。
【００４１】
ここで、ステップＳ１０８でＹｅｓと判定される場合の具体例を図７のキュー定義マスタ１０を参照して説明する。ここでは、３号機のバッチサーバ５を自バッチサーバ５とし、１号機及び２号機のバッチサーバ５を他バッチサーバ５とする。キュー「Ａ」に対する自バッチサーバ５は、現在利用率が３０％であり、判定値はＮ×３０である。他バッチサーバ５の比較値は、Ｎ×６０とＮ×４０である。この場合には、１号機及び２号機のバッチサーバ５の現在利用率のＮ倍は、３号機のバッチサーバ５より大きいので、３号機のバッチサーバ５は、今回のジョブを自分で処理する。この結果、現在の利用率が小さい３号機のバッチサーバ５に処理が回されるようになるので、負荷分散システム１全体としての負荷が分散される。
【００４２】
ステップＳ１０９では、スタック監視アプリケーション５１のジョブ管理部５８が、キュー制御アプリケーション５３に対して、キュー定義マスタ１０に格納されている自バッチサーバ５の当該キューに指定された優先度に従い、自分のバッチサーバ５にジョブを投入する。
【００４３】
さらに、キュー制御アプリケーション５３へのジョブ投入が正常に処理されたら、ステップＳ１１０において、スタック監視アプリケーション５１のデータ更新部５９が、図２に例示するキュー定義マスタ１０の自バッチサーバ５の当該キューに関する有効期限情報２５、現在利用率情報２６及び最終投入時刻情報２７を更新する。ここで、有効期限情報２５には、最終投入時刻＋有効期限間隔に相当する情報が入力される。現在利用率情報２６には、ステップＳ１０７で計算した現在利用率の値が入力される。例えば、図７に示す１号機のバッチサーバ５の例では、新しいジョブを１つ受け付けると当該キューのジョブの利用中数が５＋１＝６になるので、現在利用率が５０％から６０％に変更される。最終投入時刻情報２７には、実際の投入時刻が入力される。
【００４４】
続いて、データ更新部５９は、図８に例示するデータベースサーバ４のジョブスタックテーブル１１にアクセスし、該当するジョブデータの処理状態情報３３を「起動済み」にする。そして、投入時刻情報３４のデータを、当該ジョブを自バッチサーバ５に投入した時刻に更新する。ここで、図８の例では、ジョブスタックテーブル１１にキュー「Ａ」のジョブが５つ、ＪＯＢ０００１〜ＪＯＢ０００５までが登録されているとする。このうち、ＪＯＢ０００１〜ＪＯＢ０００４は起動済みであり、いずれかのバッチサーバ５が処理を開始していることが示されている。ここで、キュー「Ａ」が帳票管理に関するものである場合、起動予定ジョブ名ＪＯＢ０００１〜０００５は、受注チェックリストの作成や、出荷伝票の作成及び出力、送付票の作成及び出力などの各種の依頼に相当する。なお、ジョブスタックテーブル１１に複数種類のキューのジョブが登録されている場合には、キュー定義マスタ１０の優先度情報２３の順番に従ってジョブが選択される。
【００４５】
ステップＳ１１１で、負荷分散システム１におけるサービスを停止するときは、ここでの処理を終了する。一方、サービスを継続する場合には、ステップＳ１０２に戻る。なお、ステップＳ１０２に戻る代わりにステップＳ１０１に戻っても良い。
【００４６】
また、バッチサーバ５のスタック監視アプリケーション５１を停止するときには、キュー定義マスタ１０の自バッチサーバ５のレコードを全て削除する。これによって、他バッチサーバ５がバッチ処理時に自バッチサーバ５の負荷状態を考慮しなくて済むようになる。
【００４７】
以上、説明したように、この実施の形態では、データベースサーバ４に登録されたデータを参照し、各バッチサーバ５が、自己の負荷状態を監視して、ジョブの実行の可否を判断するように構成した。これによって、従来のような高性能の管理サーバが不要になる。
各バッチサーバ５は、ジョブの利用中数又は空き数に応じて自身が処理を行うべきであるか判定するように構成したので、ＣＰＵやメモリの占有率を調べる場合のようにその都度ＯＳ５４のステータスを参照する必要がなくなるので、処理を簡略化できる。また、１つのバッチサーバ５が、他のバッチサーバ５の稼働状況を判断してジョブの実行の可否を判断するようにしたので、管理サーバを設けなくても複数のバッチサーバ５の間で負荷を分散させることが可能になる。
【００４８】
また、いずれかのバッチサーバ５が停止した場合には、そのバッチサーバ５における処理が不能になるだけなので、サービス全体の停止は防止できる。停止中のバッチサーバ５についての情報はキュー定義マスタ１０が更新されないので、有効期限情報２５を参照することにより、停止中のバッチサーバ５を考慮対象から外すことが可能になる。
さらに、負荷分散システム１では、キューの空き状態を自バッチサーバ５の稼動状態の指標として使用するので、各バッチサーバ５の多重度を設定するだけで負荷分散が可能になる。従来では、処理を実行するバッチサーバ５の台数を変更する度に、管理サーバの情報の書き換えや、ＣＰＵの稼働率を取得するための設定、各種パラメータの調整が必要であった。これに対し、この実施の形態では、負荷分散システム１の調整やメンテナンスが容易になる。
【００４９】
なお、初期値定義ファイル５２の内容が全てのバッチサーバ５において同じである場合には、初期値定義ファイル５２をバッチサーバ５毎に設けなくても良い。また、優先度情報２３が登録されていない場合には、キュー制御アプリケーション５３による許可が得られていないと判断しても良い。キュー定義マスタ１０とジョブスタックテーブル１１は１つのデータベースでも良い。
【００５０】
ここで挙げた全ての例及び条件的表現は、発明者が技術促進に貢献した発明及び概念を読者が理解するのを助けるためのものであり、ここで具体的に挙げたそのような例及び条件に限定することなく解釈するものであり、また、明細書におけるそのような例の編成は本発明の優劣を示すこととは関係ない。本発明の実施形態を詳細に説明したが、本発明の精神及び範囲から逸脱することなく、それに対して種々の変更、置換及び変形を施すことができる。
【００５１】
以下に、前記の実施の形態の特徴を付記する。
（付記１）
複数のコンピュータがアクセス可能なデータ領域に格納されるジョブの情報を取得し、複数の前記コンピュータが実行中のジョブ数と前記複数のコンピュータ毎に予め定められた実施可能最大ジョブ数から算出される前記コンピュータ毎の前記ジョブの利用率を前記データ領域にアクセスして参照し、前記ジョブの利用率が前記他のコンピュータの前記ジョブの利用率より小さい場合に、前記ジョブを処理対象と決定する処理をコンピュータに実行させることを特徴とする負荷分散システムのプログラム。
（付記２）  前記ジョブの利用率に予め定められた係数を掛算して判定値を算出し、前記判定値が１００％未満である場合に、前記他のコンピュータに前記ジョブを実行させずに、前記ジョブを処理対象と決定する処理をコンピュータに実行させることを特徴とする負
荷分散システムのプログラム。
（付記３）  前記データ領域に格納される前記ジョブの利用数を予め定められた更新時刻毎に更新させることを特徴とする付記１又は付記２に記載の負荷分散システムのプログラム。
（付記４）  前記データ領域のデータが予め定められた更新時刻毎に更新されていない他の前記コンピュータについては、前記ジョブを処理対象と決定する処理において前記ジョブの利用数を比較する対象から除外することを特徴とする付記１乃至付記３のいずれか一項に記載の負荷分散システムのプログラム。
（付記５）  ジョブについて実行中のジョブ数と予め定められた実施可能最大ジョブ数から前記ジョブの利用率を算出する利用率計算部と、前記利用率を用いてジョブの実行の可否を判定する実施判定部と、前記実施判定部の判定結果に基づいてジョブの実行を管理するジョブ管理部と、前記利用率を他のコンピュータで参照可能にデータベースに登録するデータ更新部と、を含むことを特徴とする負荷分散システム。
（付記６）  前記実施判定部は、前記ジョブの利用率に予め定められた係数を掛算して判定値を算出し、前記判定値が１００％未満である場合に、前記他のコンピュータに前記ジョブを実行させずに、前記ジョブを処理対象と決定し、前記判定値が１００％以上の場合には、前記ジョブの利用率が前記他のコンピュータの前記ジョブの利用率より少ないときに、前記ジョブを処理対象と決定するように構成したことを特徴とする付記５に記載の負荷分散システム。
（付記７）  前記実施判定部は、前記データベースのデータが予め定められた更新時刻毎に更新されていない他の前記コンピュータについては、前記ジョブを処理対象と決定する処理において前記ジョブの利用数を比較する対象から除外するように構成したことを特徴とする付記５又は付記６に記載の負荷分散システム。
（付記８）  データベースに登録されたジョブの情報を取得し、実行中のジョブ数と予め定められた実施可能最大ジョブ数から前記ジョブの利用率を算出し、前記ジョブの利用率が所定位置以下の場合に前記ジョブを実行し、前記ジョブの利用率が所定位置より大きく、かつ他のコンピュータの前記ジョブの利用率以上の場合に前記ジョブを実行せず、前記ジョブの利用率が所定位置より大きいが、他のコンピュータの前記ジョブの利用率より小さい場合に前記ジョブを実行することを特徴とする負荷分散方法。
（付記９）  前記データベースに登録されているデータが予め定められた更新時刻毎に更新されていない他の前記コンピュータについては、前記ジョブを処理対象と決定する処理において前記ジョブの利用数を比較する対象から除外することを特徴とする付記８に記載の負荷分散方法。
【符号の説明】
【００５２】
１  負荷分散システム
４  データベースサーバ
５  バッチサーバ（コンピュータ）
１０  キュー定義マスタ（データ領域、データベース）
１１  ジョブスタックテーブル（データ領域、データベース）
５１  スタック監視アプリケーション
５２  初期値定義ファイル
５３  キュー制御アプリケーション
５４  ＯＳ
５５  業務アプリケーション
５６  利用率計算部
５７  実施判定部
５８  ジョブ管理部
５９  データ更新部
【図１】
2015005008.tif 000003
【図２】
2015005008.tif 000004
【図３】
2015005008.tif 000005
【図４】
2015005008.tif 000006
【図５】
2015005008.tif 000007
【図６】
2015005008.tif 000008
【図７】
2015005008.tif 000009
【図８】
2015005008.tif 000010