(57)【要約】【課題】負荷分散されたバッチ処理のジョブを実行するサーバの安定稼働を実現する。【解決手段】負荷分散装置１０が、次の処理を実行する。即ち、負荷監視部１６で、ネットワークに接続されたサーバ２０Ａ〜２０Ｃの夫々の負荷状況を所定時間ごとに監視する。また、振分制御部１５で、バッチ処理のジョブの実行要求を受け付けたときに、監視された各サーバの負荷状況に基づき、初回振分基準値よりも負荷が小さいサーバに対してのみ、実行要求に係るジョブを振り分ける。さらに、いずれかのサーバにおける負荷が、少なくとも初回振分基準値よりも大きく、かつ、再振分基準値よりも小さければ、再振り分け先となる他のサーバの負荷が現在の負荷よりもさらに小さくなるようにジョブの振り分けを調整する。また、いずれかのサーバにおける負荷が再振分基準値よりも大きくなれば、当該サーバで実行中のジョブを他のサーバに再振り分けする。【選択図】  図１
2010238051.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークに接続された複数のサーバの夫々の負荷状況を所定時間ごとに監視する負荷監視機能と、
バッチ処理のジョブの実行要求を受け付けたときに、前記負荷監視機能により監視された各サーバの負荷状況に基づき、ジョブの振り分けが可能な負荷の大きさを示す初回振分基準値よりも負荷が小さいサーバに対してのみ、前記実行要求に係るジョブを振り分ける初回振分機能と、
前記負荷監視機能により負荷状況を監視したときに、前記複数のサーバのうちいずれかのサーバにおける負荷が、少なくとも前記初回振分基準値よりも大きく、かつ、サーバで実行中のジョブを他のサーバに再振り分けする必要がある負荷の大きさを示す再振分基準値よりも小さければ、当該サーバ以外のサーバのうち最も負荷の小さいサーバをジョブの再振り分け先として特定し、当該再振り分け先のサーバの負荷が、現在の負荷よりもさらに小さくなるようにジョブの振り分けを調整する調整機能と、
前記負荷監視機能により負荷状況を監視したときに、前記複数のサーバのうちいずれかのサーバにおける負荷が前記再振分基準値よりも大きければ、当該サーバで実行中のジョブを他のサーバに再振り分けする再振分機能と、
をコンピュータに実現させることを特徴とする負荷分散プログラム。
【請求項２】
前記調整機能は、前記複数のサーバのうちいずれかのサーバにおける負荷が、前記初回振分基準値及び前記再振分基準値の間の所定値である中間基準値よりも大きいときにのみ、当該サーバ以外のサーバのうち最も負荷の小さいサーバをジョブの再振り分け先として特定し、当該再振り分け先のサーバの負荷が現在の負荷よりもさらに小さくなるように、他のサーバとの間でジョブの振り分けを調整することを特徴とする請求項１記載の負荷分散プログラム。
【請求項３】
前記調整機能は、少なくとも前記再振り分け先のサーバで実行中のジョブを他のサーバに対して転送させる指示を、当該再振り分け先のサーバに対して送信することを特徴とする請求項１又は請求項２に記載の負荷分散プログラム。
【請求項４】
前記初回振分機能は、前記複数のサーバのうちいずれかのサーバにおける負荷が、前記初回振分基準値及び前記再振分基準値の間の所定値である中間基準値よりも大きいときには、前記実行要求に係るジョブを待機させる一方、前記再振分機能は、前記複数のサーバのうちいずれかのサーバの負荷が、待機中のジョブをサーバに割り振ることが可能な待機解除条件を満たしたときに、当該待機させたジョブを、前記待機解除条件を満たしたサーバに振り分けることを特徴とする請求項１〜請求項３のいずれか１つに記載の負荷分散プログラム。
【請求項５】
各ジョブは、ジョブの処理においてサーバの負荷の要因となる負荷項目ごとの負荷の大きさを示す指標としての負荷特性を有しており、
前記負荷監視機能は、各サーバの負荷状況を負荷項目ごとに監視し、
前記初回振分機能は、前記複数のサーバのうち、前記実行要求に係るジョブの負荷特性が大きい負荷項目の負荷が、当該負荷項目に対応する前記初回振分基準値よりも小さいサーバに対し、前記実行要求に係るジョブを振り分け、
前記調整機能は、前記複数のサーバのうちいずれかのサーバにおいて、各負荷項目のうちいずれかの負荷項目の負荷が、少なくとも当該負荷項目に対応する前記初回振分基準値よりも大きく、かつ、当該負荷項目に対応する前記再振分基準値よりも小さければ、当該サーバ以外のサーバのうち、当該負荷項目の負荷が最も小さいサーバをジョブの再振り分け先として特定し、当該再振り分け先のサーバにおける当該負荷項目の負荷が現在の負荷よりもさらに小さくなるように、他のサーバとの間でジョブの振り分けを調整し、
前記再振分機能は、前記複数のサーバのうちいずれかのサーバにおいて、各負荷項目のうちいずれかの負荷項目の負荷が、当該負荷項目に対応する前記再振分基準値よりも大きければ、当該サーバで実行中のジョブを他のサーバに再振り分けすることを特徴とする請求項１〜請求項４のいずれか１つに記載の負荷分散プログラム。
【請求項６】
ネットワークに接続された複数のサーバの夫々の負荷状況を所定時間ごとに監視する負荷監視部と、
バッチ処理のジョブの実行要求を受け付けたときに、前記負荷監視部により監視された各サーバの負荷状況に基づき、ジョブの振り分けが可能な負荷の大きさを示す初回振分基準値よりも負荷が小さいサーバに対してのみ、前記実行要求に係るジョブを振り分ける初回振分部と、
前記負荷監視部により負荷状況を監視したときに、前記複数のサーバのうちいずれかのサーバにおける負荷が、少なくとも前記初回振分基準値よりも大きく、かつ、サーバで実行中のジョブを他のサーバに再振り分けする必要がある負荷の大きさを示す再振分基準値よりも小さければ、当該サーバ以外のサーバのうち最も負荷の小さいサーバをジョブの再振り分け先として特定し、当該再振り分け先のサーバの負荷が、現在の負荷よりもさらに小さくなるようにジョブの振り分けを調整する調整部と、
前記負荷監視部により負荷状況を監視したときに、前記複数のサーバのうちいずれかのサーバにおける負荷が前記再振分基準値よりも大きければ、当該サーバで実行中のジョブを他のサーバに再振り分けする再振分部と、
を含んで構成されることを特徴とする負荷分散装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のサーバにおいてバッチ処理のジョブの負荷分散を行う技術に関する。
【背景技術】
【０００２】
業務アプリケーションの処理を行うコンピュータシステムにおいて、一定期間に集まったデータを一括処理するバッチ処理が一般に行われる。かかるバッチ処理は大量のデータを処理対象とするため、これを処理するサーバのＣＰＵ、メモリ及びＩ／Ｏ（入出力）などにおいて負荷が大きくなる傾向にある。また、処理が終了するまでに長い時間を要することが多い。このため、バッチ処理をオンライン処理と並行して実行することは難しく、オンライン処理が行われない夜間に実行される運用態様が一般的であった。なお、このようにバッチ処理が実行される場面としては、例えば、日中に処理した注文データに基づき、翌日に配送する帳票を作成する処理を夜間に一括して行う場合などがある。
【０００３】
ここで、バッチ処理は一般に、業務の都合等により、翌日の一定時刻までに確実にその処理が完了していることが要求される。また、近年では、業務スピードが著しく向上しているため、バッチ処理がなされたデータ等を、その日のうちに速やかに用いる必要が生じている。このため、バッチ処理をオンライン処理と並行して逐次実行する態様(オンデマンドバッチ)を適用したシステムも増加している。
【０００４】
そして、このような業務の需要に応え、サーバを安定稼働させてバッチ処理を一定時刻までに確実に完了させるべく、バッチ処理のジョブを実行するサーバを複数用意し、ジョブを振り分けて負荷分散を行う技術が広く用いられている。かかる負荷分散においては、一般に、まず、新たなジョブの実行要求がなされたときに、当該ジョブを、複数のサーバのうち負荷の少ないサーバに対して振り分ける。しかし、バッチ処理のジョブは上述のように長い時間を要することが多いため、初回の振り分け時における一時的なサーバの負荷状況に基づいてジョブを振り分けても、ジョブの実行中にサーバの負荷が大きくなり、処理の遅延が生じることがある。このため、ジョブをサーバに振り分けた後、ジョブの実行中におけるサーバの負荷を監視し、サーバの負荷が大きい状態になったときに、他のサーバにジョブを振り分け直す再振り分けを行う技術が用いられている。
【０００５】
しかし、かかる再振り分けには、次のような問題がある。即ち、再振り分け対象となるジョブを実行することによるサーバへの負荷が大きい場合、当該ジョブを他のサーバに再振り分けした結果、再振り分け先のサーバにおいても、同様に処理が困難な状態になることがある。この場合、再振り分け先のサーバから、さらに他のサーバに当該ジョブを振り分け直す必要が生じる。そして、かかる再振り分けをサーバ間で繰り返した結果、結局最初に当該ジョブを実行していたサーバに戻ってくるという再振り分けのループが発生する可能性もある。このため、かかる状態を回避するべく、次のような技術がさらに提案されている。即ち、複数のプロセッサで並列処理を行っている動作環境において、将来再振り分けされる処理があるときには、実行中のプロセッサに近接したプロセッサに対し、さらに処理を振り分けないようにして空きを確保する。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００４−２８０４５７号公報
【特許文献２】特開平１１−３１２１４９号公報
【特許文献３】特開平０５−１２０２４３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかし、このように再振り分け先となるプロセッサ（サーバ）に対してさらに処理（ジョブ）を振り分けないようにしても、再振り分け先となるサーバの負荷がすでにある程度以上の大きさとなっている場合には、十分な空きを確保できないことがある。特に、再振り分けされるジョブの処理に要する負荷が大きい場合にはその可能性が高い。この場合、依然として再振り分けに失敗することとなる。また、初回の振り分け時においても、ジョブの振り分け先のサーバの負荷がある程度以上の大きさである場合には、ジョブの振り分け後、すぐに過負荷状態となり、再振り分けを要する状況となることもある。
【０００８】
そして、このように、一度負荷のバランスが悪くなると、負荷が平衡した状態に戻すまでに時間を要する。したがって、負荷分散先のサーバの安定稼働が実現せず、バッチ処理に遅延が生じる事態が生じていた。
【０００９】
以上のような問題点に鑑み、負荷分散先となるサーバの負荷の大きさについて段階的に一定の基準を設け、かかる基準に基づいて、サーバに対するバッチ処理のジョブの振り分けを調整することで、サーバを安定稼働させ、バッチ処理の処理遅延を防ぐことを目的とする。
【課題を解決するための手段】
【００１０】
開示のシステムにおいては、コンピュータが、次の処理を実行する。即ち、ネットワークに接続された複数のサーバの夫々の負荷状況を所定時間ごとに監視する。また、バッチ処理のジョブの実行要求を受け付けたときに、監視された各サーバの負荷状況に基づき、ジョブの振り分けが可能な負荷の大きさを示す初回振分基準値よりも負荷が小さいサーバに対してのみ、実行要求に係るジョブを振り分ける。さらに、負荷状況を監視したときに、複数のサーバのうちいずれかのサーバにおける負荷が、少なくとも初回振分基準値よりも大きく、かつ、サーバで実行中のジョブを他のサーバに再振り分けする必要がある負荷の大きさを示す再振分基準値よりも小さければ、当該サーバ以外のサーバのうち最も負荷の小さいサーバをジョブの再振り分け先として特定する。そして、当該再振り分け先のサーバの負荷が、現在の負荷よりもさらに小さくなるようにジョブの振り分けを調整する。また、負荷状況を監視したときに、複数のサーバのうちいずれかのサーバにおける負荷が再振分基準値よりも大きければ、当該サーバで実行中のジョブを他のサーバに再振り分けする。
【発明の効果】
【００１１】
開示のシステムによれば、所定時間ごとにサーバの負荷状況を監視し、段階的に設定した一定の基準に基づいて判定した各サーバの負荷の大きさに応じてジョブの振り分けを調整する。即ち、新たなジョブの振り分け時には、一定の基準以上の負荷がかかっているサーバにジョブを振り分けることを回避するため、再振り分けを必要とするサーバの発生を防ぐことができる。また、負荷監視時に、一定の基準よりも特定のサーバの負荷が大きくなったときには、再振り分け先となるサーバの負荷が、現在の負荷よりもさらに少なくなるようにジョブの振り分けを調整する。このため、再振り分けの成功確率を確実に高くすることができ、再振り分けを円滑に行うことができる。したがって、各サーバの安定稼働が実現され、システム全体として、サーバの過負荷状態に起因するバッチ処理の実行遅延を回避することができる。
【図面の簡単な説明】
【００１２】
【図１】負荷分散システムの全体構成図である。
【図２】ジョブテーブルの説明図である。
【図３】負荷状況テーブルの説明図である。
【図４】振分基準テーブルの説明図である。
【図５】待機ジョブテーブルの説明図である。
【図６】ジョブ実行要求時における振分制御部の処理内容を示すフローチャートである。
【図７】負荷監視部の処理内容を示すフローチャートである。
【図８】負荷監視時における振分制御部の処理内容を示すフローチャート（１）である。
【図９】負荷監視時における振分制御部の処理内容を示すフローチャート（２）である。
【図１０】負荷分散の具体例におけるジョブテーブルの状態図であり、（Ａ）は初回振り分け前の状態（第１段階）、（Ｂ）は初回振り分け前の状態（第２段階）、（Ｃ）は初回振り分け後（第２段階）の状態である。
【図１１】負荷分散の具体例におけるジョブテーブルの状態図であり、（Ａ）は調整後の状態（第３段階）、（Ｂ）は再振り分け後の状態（第４段階）である。
【図１２】負荷分散の具体例における負荷状況テーブル１２の状態図であり、（Ａ）は初回振り分け前の状態（第１段階）、（Ｂ）は初回振り分け前の状態（第２段階）、（Ｃ）は調整前の状態（第３段階）、（Ｄ）は再振り分け前の状態（第４段階）である。
【図１３】負荷分散の具体例におけるジョブ転送の説明図（第３段階）である。
【図１４】負荷分散の具体例におけるジョブ転送の説明図（第４段階）である。
【発明を実施するための形態】
【００１３】
図１は、負荷分散システムの一例の全体構成を示す。本システムは、負荷分散装置１０及びサーバを含んで構成される。負荷分散装置１０並びにサーバ２０Ａ、サーバ２０Ｂ及びサーバ２０Ｃは、いずれも、少なくともＣＰＵ（Central Processing Unit）及び記憶装置を備えたコンピュータである。そして、負荷分散装置１０及びサーバ２０Ａ、サーバ２０Ｂ及びサーバ２０Ｃは、相互にネットワーク接続されている。ネットワークとしては、一般的にはＬＡＮ（Local Area Network）やＷＡＮ（Wide Area Network）等が挙げられるが、負荷分散装置１０及び各サーバ間においてデータの送受信が可能であれば、特に種類を問わない。また、本システムは３台のサーバで構成された例であるが、サーバの台数はこれに限られない。
【００１４】
負荷分散装置１０は、システム管理者等による操作やプログラム等によりジョブの実行要求を受信したときに、サーバ２０Ａ、サーバ２０Ｂ及びサーバ２０Ｃの夫々の負荷状況に応じてジョブの振り分け先となる適切なサーバを決定し、ジョブの実行要求を送信する初回振り分け処理を行う。また、一方で、負荷分散装置１０は、所定時間ごとにサーバ２０Ａ、サーバ２０Ｂ及びサーバ２０Ｃから負荷状況の通知を受信し、各サーバにおける負荷状況を監視する。そして、各サーバから負荷状況通知を受信したときに、必要に応じて、サーバで実行中のジョブを他のサーバに転送させる再振り分けを行う。
【００１５】
サーバ２０Ａ、サーバ２０Ｂ及びサーバ２０Ｃは、負荷分散装置１０から振り分けられたジョブを実行する一方、負荷分散装置１０に対し、所定時間ごとに自装置の負荷状況を通知する。
【００１６】
ここで、本システムにおいて処理対象とするジョブについて説明する。本システムでは、バッチ処理のジョブの負荷分散を行う。また、各ジョブは、１つ又は複数のステップ(処理単位)で構成されている。そして、ジョブの実行要求には、実行要求に係るジョブの特性として、ジョブの実行時間、並びに、ジョブの処理においてサーバの負荷の要因となる負荷項目（例えば、ＣＰＵ、メモリ及びＩ／Ｏ（入出力））の使用頻度（負荷の大きさ）を示す指標としての負荷特性が付される。なお、これらの内容は、ジョブの特性の一例に過ぎない。
【００１７】
次に、負荷分散装置１０の構成について説明する。
負荷分散装置１０は、メモリやＨＤＤ（Hard Disk Drive）等の記憶装置において、ジョブテーブル１１、負荷状況テーブル１２、振分基準テーブル１３及び待機ジョブテーブル１４を保持する。また、負荷分散装置１０においてＣＰＵにより負荷分散プログラムが実行され、記憶装置、入力装置、通信を実現するポート等のハードウェア機器と協働することにより、振分制御部１５、負荷監視部１６が実現される。なお、負荷分散プログラムは、例えば、磁気テープ、磁気ディスク、磁気ドラム、ＩＣカード、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ等のコンピュータ読取可能な記録媒体に記録しておくことができる。そして、かかる記録媒体に記録された負荷分散プログラムを負荷分散装置１０にインストールすることにより、上記負荷分散プログラムの実行を可能にすることができる。
【００１８】
ジョブテーブル１１は、各ジョブが実行されているサーバ及びジョブの特性を記録するテーブルであり、図２に示すように、ジョブ名、ジョブが実行されているサーバ名、並びに、各負荷項目（ＣＰＵ、メモリ及びＩ／Ｏ）の負荷特性を含んで構成される。なお、負荷項目の負荷が大きいときは「Ｈ」、中程度のときは「Ｍ」、少ないときは「Ｌ」が、各負荷項目の負荷特性として夫々設定される。
【００１９】
負荷状況テーブル１２は、各サーバの負荷状況を記録するテーブルであり、図３に示すように、サーバ名、当該サーバにおけるＣＰＵ使用率、メモリ使用率、Ｉ／Ｏ使用率を含んで構成される。
【００２０】
振分基準テーブル１３は、初回振り分け及び再振り分けを行う基準である振分基準を設定するためのテーブルであり、図４に示すように、負荷項目、優先度、初回振分基準値及び再振分基準値を含んで構成される。
【００２１】
ここで、優先度とは、ジョブの振り分けをするか否かについて、複数の負荷項目のうち、どの負荷項目の負荷状況を優先的に考慮して判断をするかを示す値である。例えば、複数の負荷項目の負荷特性が示す負荷が同一の場合、優先度の高い負荷項目の負荷に基づいて各処理を行う。また、初回振分基準値とは、ジョブの振り分けを行うことが可能なサーバの負荷の割合（大きさ）を示す閾値であり、各負荷項目に対応した値が夫々設定される。一方、再振分基準値とは、サーバで実行中のジョブを他のサーバに再振り分けする必要がある負荷の割合（大きさ）を示す閾値であり、各負荷項目に対応した値が夫々設定される。
【００２２】
なお、かかる優先度、初回振分基準値及び再振分基準値は、システムの運用次第で、その内容を任意に変えることができる。例えば、図４では、振分基準として、「負荷項目:ＣＰＵ、初回振分基準値：７０パーセント、再振分基準値：９０パーセント」、「負荷項目:メモリ、初回振分基準値：７５パーセント、再振分基準値：９０パーセント」、「負荷項目:Ｉ／Ｏ、初回振分基準値：６０パーセント、再振分基準値：８０パーセント」の３つを定義し、優先順位をＣＰＵ、Ｉ／Ｏ、メモリの順としている。
【００２３】
待機ジョブテーブル１４は、過負荷状態において待機状態とするジョブの実行要求を一時的にキューイングするテーブルであり、図５に示すように、待機ジョブ名を含んで構成される。また、待機ジョブテーブル１４では、さらに、全ての待機ジョブに対して適用される待機解除条件としての各負荷項目の負荷状況（ＣＰＵ使用率、メモリ使用率及びＩ／Ｏ使用率）を備える。
【００２４】
なお、上記各テーブルに格納されるデータ内容は、テーブルとしてのデータ形式に限らず、例えばテキスト形式のファイル等で保持してもよい。
振分制御部１５は、負荷状況テーブル１２に格納された各サーバの負荷状況を参照して、ジョブの振り分け先となる適切なサーバを特定し、ジョブの実行要求を送信する。また、再振り分けが必要となりそうな状態のサーバが発生した場合には、再振り分け先とするサーバの負荷を小さくさせる指示を送信する。さらに、再振り分けが必要な状態のサーバが発生した場合には、ジョブの再振り分けをさせる指示を送信する。さらに、振分制御部１５は、サーバが過負荷状態のためジョブの振り分けができない場合は、待機ジョブテーブル１４にジョブの実行要求を格納する一方、負荷が待機解除条件に合致するサーバがあるときには、当該サーバに対してジョブの実行要求を送信する。なお、振分制御部１５が、初回振分機能、初回振分部、調整機能、調整部、再振分機能及び再振分部に相当する。
【００２５】
負荷監視部１６は、所定時間ごとにサーバ２０Ａ、サーバ２０Ｂ及びサーバ２０Ｃから通知された負荷状況を、負荷状況テーブル１２にサーバごとに格納する。そして、負荷監視部１６は、最新の負荷状況を受信するごとに、負荷状況テーブル１２の情報を更新する。なお、負荷監視部１６が、負荷監視機能及び負荷監視部に相当する。
【００２６】
次に、サーバ２０Ａ、サーバ２０Ｂ及びサーバ２０Ｃの構成について説明する。なお、以下、サーバ２０Ａを例として説明するが、サーバ２０Ｂ及びサーバ２０Ｃも同様の構成である。
【００２７】
サーバ２０Ａは、ジョブ実行部２１Ａ、負荷測定部２２Ａ及びジョブ転送部２３Ａを含んで構成される。
ジョブ実行部２１Ａは、ジョブの実行要求を負荷分散装置１０から受信すると、ジョブの実行を開始する。ジョブ実行部２１Ａは、具体的には、次のようにしてジョブを実行する。即ち、バッチ処理を行うアプリケーションに、ジョブステップ毎の実行情報をオブジェクトとして受け渡す。そして、アプリケーションが終了すると、アプリケーションからジョブ実行部２１Ａに対し、次のジョブステップのアプリケーションを開始する実行情報が含まれたオブジェクトがジョブ実行部２１Ａに返される。ジョブ実行部２１Ａではその実行情報に基づき、アプリケーションに、さらに次のジョブステップの実行情報をオブジェクトとしてさらに受け渡す。これをジョブステップ全体が終了するまで繰り返す。
【００２８】
負荷測定部２２Ａは、所定時間ごと、又は、負荷分散装置１０から負荷状況の通知を要求されたタイミングで、自サーバの負荷状況をオペレーティングシステムのデバイス管理機構等を用いて取得し、負荷分散装置１０に通知する。
【００２９】
ジョブ転送部２３Ａは、ジョブの転送指示を負荷分散装置１０から受信したときに、次の処理を行う。即ち、ジョブ転送部２３Ａは、現在処理中のジョブステップの実行が完了したタイミングで、ジョブの実行要求を、次のジョブステップの実行情報が付されたオブジェクトとともに、負荷分散装置１０から指定された他のサーバへと転送する。
【００３０】
次に、負荷分散装置１０において実行される処理について説明する。
負荷分散装置１０では、サーバ２０Ａ〜２０Ｃの夫々における負荷の大きさの段階を、以下の基準で判定し、夫々の段階に応じた処理を行う。
【００３１】
［第１段階: 負荷 ＜ 初回振分基準値］
サーバ２０Ａ〜２０Ｃの全てにおいて、その負荷項目であるＣＰＵ、メモリ及びＩ／Ｏの負荷が、振分基準テーブル１３で定義した初回振分基準値よりも小さい状態である。
【００３２】
［第２段階: 初回振分基準値 ≦ 負荷 ＜ 再振分基準値、かつ、余裕あり］
サーバ２０Ａ〜２０Ｃのうちいずれかのサーバの負荷が、振分基準テーブル１３で定義した初回振分基準値以上であるが、再振分基準値には到達しておらず、かつ、再振分基準値まで余裕がある状態を意味する。ここで、余裕がある状態とは、初回振分基準値及び再振分基準値の間の所定値である中間基準値よりもサーバの負荷が小さい状態を示す。例えば、中間基準値を、「初回振分基準値 ＋ (再振分基準値 − 初回振分基準値) ÷ ２」で計算する場合、余裕がある状態とは、再振分基準値と初回振分基準値の差に対し、現在の負荷が５０パーセントより少ない状態を意味する。そして、この状態を式で表すと次のようになる。
「負荷 ＜ 初回振分基準値 ＋ (再振分基準値 − 初回振分基準値) ÷ ２」
負荷がこの第２段階に達しているサーバが存在する場合は、負荷分散装置１０は、当該サーバの負荷が現時点よりも大きくならないように制御する。具体的には、負荷分散装置１０において、実行要求に係るジョブの負荷項目のうち負荷特性の大きい項目を特定し、当該負荷項目が第２段階に達しているサーバがあるときには、当該サーバに対して実行要求に係るジョブを振り分けないように制御する。
【００３３】
［第３段階: 初回振分基準値 ≦ 負荷 ＜ 再振分基準値、かつ、余裕なし］
サーバ２０Ａ〜２０Ｃのうちいずれかのサーバの負荷が、振分基準テーブル１３で定義した初回振分基準値以上であるが、再振分基準値には到達しておらず、かつ、再振分基準値まで余裕がない状態を意味する。ここで、余裕がない状態とは、サーバの負荷が中間基準値以上の状態を示す。例えば、上記第２段階と同一の式で中間基準値を計算する場合、余裕がない状態とは、再振分基準値と初回振分基準値の差に対し、現在の負荷が５０パーセント以上の状態を意味する。そして、この状態を式で表すと次のようになる。
「初回振分基準値 ＋ (再振分基準値 − 初回振分基準値) ÷ ２ ≦ 負荷」
負荷がこの第３段階に達しているサーバは、現状では再振り分けを必要としていないが、再振り分けを必要とする状態に転じる可能性が高い。このため、負荷分散装置１０では、当該サーバに新たなジョブを振り分けないのみならず、さらに、当該サーバで実行中のジョブを他のサーバに円滑に再振り分けするための準備として、他のサーバの負荷を小さくしておく。具体的には、負荷分散装置１０において、第３段階に達している負荷項目の負荷が小さい他のサーバを作るべく、サーバ間でジョブの転送（入れ替え）を行うように制御する。
【００３４】
［第４段階: 負荷 ≧ 再振分基準値］
サーバ２０Ａ〜２０Ｃのうちいずれかのサーバの負荷が、振分基準テーブル１３で定義した再振分基準値以上の状態である。
【００３５】
負荷がこの第４段階に達しているサーバは、過負荷状態により処理遅延が発生するため、再振り分けを必要としている。このため、負荷分散装置１０では、当該サーバから、第３段階の処理で用意しておいた負荷の小さい他のサーバへと、ジョブの転送を行うように制御する。
【００３６】
なお、サーバ２０Ａ〜２０Ｃの夫々の負荷は通常、一定ではなく、ある程度の増減が存在する。このため、負荷分散装置１０は、所定時間ごとに行われる負荷状況の監視において、サーバ２０Ａ〜２０Ｃの夫々につき、その負荷状況が上記各段階に該当しているという条件が所定回数連続して満たされた場合に、各段階に該当していると判定する。
【００３７】
また、上記負荷状況通知がなされる時間間隔及び各レベルに該当しているか否かを判定する上記所定回数は、例えばシステム管理者等が予め負荷分散装置１０において設定することができる。
【００３８】
ここで、振分制御部１５及び負荷監視部１６で実行される処理について説明する。
図６は、ジョブの実行要求を受信したときに振分制御部１５で実行される処理を示す。なお、この処理は、初回振分機能、初回振分部による処理に相当する。
【００３９】
振分制御部１５は、ジョブの実行要求に付されたジョブの負荷特性を参照する一方、振分基準テーブル１３の振分基準を参照する（Ｓ１）。また、振分制御部１５は、負荷状況テーブル１２に設定されたサーバ２０Ａ〜２０Ｃの夫々の負荷状況を参照する（Ｓ２）。
【００４０】
そして、振分制御部１５は、サーバ２０Ａ〜２０Ｃの全てにおいて、実行要求に係るジョブの負荷特性の大きい負荷項目の負荷が第１段階であるか否かを判定する（Ｓ３）。サーバ２０Ａ〜２０Ｃの全ての負荷が第１段階であれば、振分制御部１５は、実行要求に係るジョブの負荷特性及びサーバ２０Ａ〜２０Ｃの負荷状況に基づき、実行要求に係るジョブの負荷特性の大きい負荷項目の負荷が最も小さいサーバを特定する（Ｓ４）。なお、ジョブにおいて負荷特性の大きい負荷項目が複数ある場合には、振分基準の設定において優先度が高い負荷項目を優先して処理を行う（以下同様）。そして、振分制御部１５は、特定したサーバにジョブの実行要求を送信し、ジョブを振り分ける（Ｓ５）。一方、ジョブの実行要求を受信したサーバ２０Ａ〜２０Ｃのジョブ実行部２１Ａ〜２１Ｃでは、当該ジョブの実行を開始する。
【００４１】
また、Ｓ３の判定において、サーバ２０Ａ〜２０Ｃの全てにおいて、負荷が第１段階でないとき、即ち、負荷が第２段階に達しているサーバが存在するときには、振分制御部１５は、次の判定を行う。即ち、振分制御部１５は、実行要求に係るジョブの負荷特性が大きい負荷項目の負荷が第２段階に達しているサーバが存在し、かつ、当該負荷項目の負荷が第１段階のサーバが存在するか否かを判定する（Ｓ６）。この条件を満たす場合には、実行要求に係るジョブの負荷特性が大きい負荷項目の負荷が最も小さいサーバを、第１段階のサーバから特定する（Ｓ７）。そして、特定したサーバにジョブの実行要求を送信し、ジョブを振り分ける（Ｓ８）。一方、ジョブの実行要求を受信したサーバ２０Ａ〜２０Ｃのジョブ実行部２１Ａ〜２１Ｃでは、当該ジョブの実行を開始する。
【００４２】
また、Ｓ６の判定における条件を満たさない場合には、実行要求に係るジョブの情報を、待機ジョブテーブル１４に格納する（Ｓ９）。
なお、かかる待機ジョブテーブル１４に格納された実行要求に係るジョブは、所定時間ごとに実行される振分制御部１５の処理（後述）において、待機解除条件を満たすサーバが存在するときに、当該サーバへと振り分けられる。
【００４３】
図７は、所定時間ごとに負荷監視部１６で実行される負荷監視処理を示す。なお、この処理は、負荷監視機能及び負荷監視部による処理に相当する。
負荷監視部１６は、サーバ２０Ａ〜２０Ｃに対して負荷状況通知を要求する。一方、負荷状況通知の要求を受信したサーバ２０Ａ〜２０Ｃの負荷測定部２２Ａ〜２２Ｃでは、自サーバの負荷状況を取得し、負荷分散装置１０に送信する。なお、負荷分散装置１０からの要求に応じてではなく、各サーバ側から所定時間ごとに負荷状況を通知してもよい。そして、負荷監視部１６では、サーバ２０Ａ〜２０Ｃから負荷状況通知を受信する（Ｓ１１）。さらに、負荷監視部１６は、受信した負荷状況通知の負荷状況を、負荷状況テーブル１２に反映させる（Ｓ１２）。また、負荷監視部１６は、振分制御部１５に対し、負荷状況通知を受信したことをさらに通知する（Ｓ１３）。
【００４４】
図８及び図９は、負荷監視部１６でサーバ２０Ａ〜２０Ｃから負荷状況通知を受信したことが負荷監視部１６から所定時間ごとに通知されたときに、振分制御部１５で実行される処理を示す。なお、この処理は、調整機能、調整部、再振分機能及び再振分部による処理に相当する。
【００４５】
振分制御部１５は、ジョブの実行要求に付された負荷特性を取得する一方、振分基準テーブル１３に設定された振分基準（各負荷項目の優先度並びに初回振分基準値及び再振分基準値）を参照する（Ｓ２１）。また、振分制御部１５は、負荷状況テーブル１２に格納されたサーバ２０Ａ〜２０Ｃの負荷状況を参照する（Ｓ２２）。
【００４６】
ここで、振分制御部１５は、いずれかの負荷項目の負荷が第３段階に達しているサーバが存在するか否かを判定する（Ｓ２３）。そして、かかる第３段階のサーバが存在するときには、振分制御部１５は、ジョブテーブル１１から、当該第３段階に達している負荷項目の負荷が第２段階以下の状態のサーバにおいて実行されているジョブの一覧を抽出する（Ｓ２４）。そして、振分制御部１５は、抽出したジョブの一覧を、第３段階に達している負荷項目の負荷特性が小さい順にソートする（Ｓ２５）。
【００４７】
さらに、振分制御部１５は、負荷状況テーブル１２を参照し、第３段階に達している負荷項目の負荷の最も小さいサーバ及び２番目に小さいサーバを特定する（Ｓ２６）。そして、振分制御部１５は、第３段階に達している負荷項目の負荷が最も小さいサーバで、第３段階に達している負荷項目の負荷特性が大きいジョブ（「Ｈ」又は「Ｍ」のジョブ）が実行されているか否かを判定する（Ｓ２７）。当該判定において、かかるジョブが実行されていると判定したときには、振分制御部１５は、第３段階に達している負荷項目の負荷が最も小さいサーバで実行されている、当該負荷項目の負荷特性が大きいジョブと、当該負荷項目の負荷特性が２番目に小さいサーバで実行されている、当該負荷項目の負荷特性が小さいジョブ（「Ｌ」のジョブ）と、を入れ替える（Ｓ２８）。具体的には、振分制御部１５は、第３段階に達している負荷項目の負荷が最も小さいサーバに対し、当該サーバで実行されている、当該負荷項目の負荷特性が大きいジョブを、当該負荷項目の負荷特性が２番目に小さいサーバに転送するように指示を送信する。一方、振分制御部１５は、第３段階に達している負荷項目の負荷特性が２番目に小さいサーバに対し、当該サーバで実行されている、当該負荷項目の負荷特性が小さいジョブを、当該負荷項目の負荷特性が最も小さいサーバに転送するように指示を送信する。なお、かかる転送指示を受信したサーバのジョブ転送部では、指示された転送先のサーバに対してジョブを転送する（以下同様）。また、Ｓ２７の判定において、第３段階に達している負荷項目の負荷特性が大きいジョブが実行されていないと判定したときには、振分制御部１５は、第３段階の負荷項目の負荷が最も小さいサーバで実行されている、当該負荷項目の負荷特性が小さいジョブを、当該負荷項目の特性が２番目に小さいサーバに転送させるように指示を送信する（Ｓ２９）。そして、振分制御部１５は、かかるジョブの転送を、ジョブテーブル１１に反映させる（Ｓ３０）。具体的には、ジョブ間で転送したジョブに対応する実行サーバの項目の値を、転送先のサーバへと更新する。
【００４８】
また、振分制御部１５は、サーバ２０Ａ〜２０Ｃに対し、負荷状況通知をするように指示を送信する（Ｓ３１）。さらに、振分制御部１５は、上記ジョブの転送を行った結果、転送先のサーバで負荷が第３段階以上に達したか否かを判定する（Ｓ３２）。そして、振分制御部１５は、転送先のサーバで負荷が第３段階以上に達していれば、直前に行ったジョブの転送を取りやめる（Ｓ３３）一方、振分制御部１５は、転送先のサーバで負荷が第３段階以上に達していなければ、Ｓ２７に戻り、さらに他のジョブの転送を行う。
【００４９】
また、振分制御部１５は、いずれかの負荷項目が第４段階に達しているサーバが存在するか否かを判定する（Ｓ３４）。そして、かかるサーバが存在するときには、振分制御部１５は、当該サーバで実行中のジョブのうち、第４段階に達している負荷項目の負荷特性が大きいジョブから順に、当該負荷項目の負荷が最も小さいサーバに転送する（Ｓ３５）。そして、振分制御部１５は、かかるジョブの転送を、ジョブテーブル１１に反映させる（Ｓ３６）。
【００５０】
また、振分制御部１５は、サーバ２０Ａ〜２０Ｃに対し、負荷状況通知をするように指示を送信する（Ｓ３７）。さらに、振分制御部１５は、上記ジョブの転送を行った結果、転送先のサーバで負荷が第４段階に達したか否かを判定する（Ｓ３８）。そして、振分制御部１５は、転送先のサーバで負荷が第４段階に達したときには、最後に行ったジョブの転送を取りやめる（Ｓ３９）。一方、振分制御部１５は、Ｓ３８の判定において、転送先のサーバで負荷が第４段階に達していなければ、さらに、ジョブの転送前に第４段階であったサーバ（ジョブを他のサーバへ転送させたサーバ）における負荷が、第３段階以下になったか否かを判定する（Ｓ４０）。そして、当該サーバにおける負荷が第３段階以下になっていれば処理を終了する一方、第３段階以下になっていなければ、Ｓ３５に戻り、さらに他のジョブの転送を行う。
【００５１】
また、振分制御部１５は、待機ジョブテーブル１４を参照し、待機ジョブがあるか否かを確認するとともに、待機解除条件を参照する。一方で、振分制御部１５は、負荷状況テーブル１２を参照し、各サーバの負荷状況を取得する。そして、振分制御部１５は、待機ジョブがあり、かつ、待機解除条件を満たしたサーバが存在するときには（Ｓ４１）、待機ジョブを、待機解除条件を満たしたサーバに振り分ける一方（Ｓ４２）、そうでないときには、処理を終了する。
【００５２】
なお、上記処理において負荷分散装置１０からジョブの転送（入れ替え）の指示を受信したサーバ２０Ａ〜２０Ｃでは、ジョブ転送部２３Ａ〜２３Ｃにより、サーバ間においてジョブの転送を行う。なお、かかるジョブの転送は、サーバ２０Ａ〜２０Ｃの間で直接行っても、負荷分散装置１０を経由して行っても実現可能である。
【００５３】
ここで、かかる負荷分散装置１０における処理について、さらに具体例を用いて説明する。
まず、ジョブの実行要求を受信したときに、サーバ２０Ａ〜２０Ｃの全てにおいて、負荷項目の負荷が第１段階である場合の処理について説明する。
【００５４】
本具体例では、新たに、ジョブＸ（各テーブルの値では「ＪＯＢ−Ｘ」、他も同様）の実行要求がなされた場合を想定する。ジョブＸの負荷特性は、ＣＰＵ負荷特性：Ｈ、メモリ負荷特性：Ｌ、Ｉ／Ｏ負荷特性：Ｌである。
【００５５】
また、現時点で、サーバ２０Ａ〜２０Ｃでは、図１０（Ａ）に示すようにジョブが実行されている。即ち、サーバ２０Ａ（各テーブルの値では「ＳＶ−Ａ」、他も同様）ではジョブが実行されておらず、サーバ２０Ｂでは、ジョブＡ（ＣＰＵ負荷特性：Ｌ、メモリ負荷特性：Ｌ、Ｉ／Ｏ負荷特性：Ｌ）が、サーバ２０Ｃでは、ジョブＢ（ＣＰＵ負荷特性：Ｍ、メモリ負荷特性：Ｌ、Ｉ／Ｏ負荷特性：Ｌ）及びジョブＣ（ＣＰＵ負荷特性：Ｌ、メモリ負荷特性：Ｍ、Ｉ／Ｏ負荷特性：Ｌ）が実行されている。
【００５６】
そして、本具体例では、振分基準が、振分基準テーブル１３において図４に示すように設定されている。即ち、各負荷項目の初回振分基準値は、ＣＰＵが７０パーセント、メモリが７５パーセント、Ｉ／Ｏが６０パーセントである。
【００５７】
一方、サーバ２０Ａ〜２０Ｃの負荷状況は図１２（Ａ）に示す状態であり、いずれのサーバにおいても、全ての負荷項目の負荷（使用率）が初回振分基準値よりも小さい。このため、振分制御部１５は、第１段階の状態であると判定する。
【００５８】
ここで、ジョブＸの負荷特性は、ＣＰＵが「Ｈ」であって最も大きい。また、負荷状況テーブル１２から、ＣＰＵの負荷が最も小さいのがサーバ２０Ａであることがわかる。
したがって、振分制御部１５は、ジョブＸを、サーバ２０Ａに振り分ける。その結果、ジョブの実行状況は、図１０（Ｂ）のようになる。
【００５９】
かかる処理によれば、ＣＰＵの負荷特性の大きいジョブＸが、サーバ２０Ａ〜２０Ｃのうち、最もＣＰＵの負荷が小さいサーバに振り分けられる。このため、特定のサーバにおける負荷が大きくなることを防ぎ、サーバ間においてバランスよく負荷分散がなされることとなる。
【００６０】
次に、上記具体例において、さらにジョブの実行要求を受信し、かつ、負荷が第２段階に達している負荷項目があるサーバが存在する場合の処理について説明する。
本具体例では、新たに、ジョブＹの実行要求がなされた場合を想定する。ジョブＹの負荷特性は、ＣＰＵ負荷特性：Ｍ、メモリ負荷特性：Ｌ、Ｉ／Ｏ負荷特性：Ｌである。
【００６１】
また、現時点では、サーバ２０Ａ〜２０Ｃで、図１０（Ｂ）に示すようにジョブが実行されている。
そして、上述のように、振分基準が、振分基準テーブル１３において図４に示すように設定されていることから、各負荷項目の初回振分基準値は、ＣＰＵが７０パーセント、メモリが７５パーセント、Ｉ／Ｏが６０パーセントである一方、再振分基準値は、ＣＰＵが９０パーセント、メモリが９０パーセント、Ｉ／Ｏが８０パーセントである。このとき、中間基準値を「初回振分基準値 ＋ (再振分基準値 − 初回振分基準値) ÷ ２」で計算すると、ＣＰＵが８０パーセント、８２．５パーセント、Ｉ／Ｏが７０パーセントとなる。
【００６２】
また、各サーバの負荷状況は図１２（Ｂ）に示す状態であり、サーバ２０ＡのＣＰＵの負荷（使用率）が７５パーセントであって、初回振分基準値の７０パーセントよりも大きく、かつ中間基準値の８０パーセント以下である。このため、振分制御部１５は、サーバ２０ＡのＣＰＵが第２段階の状態であると判定する。
【００６３】
また、負荷状況テーブル１２から、サーバ２０Ｂは第１段階の状態であり、当該サーバ２０ＢのＣＰＵの負荷が最も小さいことがわかる。
したがって、振分制御部１５は、ジョブＹを、サーバ２０Ｂに振り分ける。その結果、ジョブの実行状況は、図１０（Ｃ）のようになる。
【００６４】
かかる処理によれば、ＣＰＵの負荷が大きくなりかけているサーバ２０Ａに対し、ＣＰＵの負荷特性の大きいジョブＹがさらに振り分けられることを防ぐことができる。このため、負荷の大きいサーバが発生し、再振り分けの必要が生じることを未然に防ぐことができる。
【００６５】
さらに、上記具体例において、所定時間ごとにサーバ２０Ａ〜２０Ｃから負荷状況通知がなされたときに、負荷が第３段階に達している負荷項目があるサーバが存在する場合の処理について説明する。
【００６６】
現時点では、サーバ２０Ａ〜２０Ｃで、図１０（Ｃ）に示すようにジョブが実行されている。
そして、サーバ２０Ａ〜２０Ｃの負荷状況は図１２（Ｃ）に示す状態となっている。即ち、サーバ２０ＡのＣＰＵの負荷が種々の要因により８５パーセントとなっており、初回振分基準値の７０パーセント、中間基準値の８０パーセントよりも大きく、かつ再振分基準値の９０パーセント以下の状態である。このため、振分制御部１５は、サーバ２０ＡのＣＰＵの負荷が第３段階の状態であると判定する。
【００６７】
また、現状の負荷状況では、サーバ２０ＢにおけるＣＰＵ負荷が４０パーセントであって最も小さい。したがって、振分制御部１５では、サーバ２０ＡのＣＰＵの負荷が第４段階に達し、再振り分けが必要となる状態に備え、ＣＰＵの負荷が小さいサーバ２０ＢにおけるＣＰＵの負荷をさらに下げるべく、次の制御を行う。即ち、サーバ２０Ｂで実行中のジョブのうち、ＣＰＵの負荷特性が「Ｍ」であるジョブＹをサーバ２０Ｃに転送させる一方、サーバ２０Ｃで実行中のジョブのうち、ＣＰＵの使用頻度が「Ｌ」であるジョブＣをサーバ２０Ｂに転送させる。なお、図１３は、かかる第３段階におけるジョブの転送を表している。
【００６８】
その結果、ジョブの実行状況は、図１１（Ａ）のようになる。
かかる処理によれば、元々ＣＰＵの負荷が小さかったサーバ２０ＢにおけるＣＰＵの負荷をさらに下げることにより、サーバ２０Ｂにおいて、ＣＰＵの負荷特性が大きいジョブを受け入れる準備ができる。このため、サーバ２０ＡのＣＰＵの負荷が第４段階に達して再振り分けが必要となったときに、サーバ２０Ａで実行中のジョブをサーバ２０Ｂに転送させても、転送先のサーバ２０ＢのＣＰＵの負荷が大きくなり過ぎてしまうリスクを低減させることができる。
【００６９】
次に、上記具体例において、第３段階の処理によりジョブを転送させた後に、さらに負荷状況が通知された結果、サーバ２０ＡのＣＰＵ負荷が第４段階に達している場合の処理について説明する。
【００７０】
現時点では、各サーバで、図１１（Ａ）に示すようにジョブが実行されている。
そして、各サーバの負荷状況は図１２（Ｄ）に示す状態であり、サーバ２０ＡのＣＰＵの負荷がさらに大きくなって９５パーセントとなっており、再振分基準値の９０パーセントよりも大きい。このため、このため、振分制御部１５は、サーバ２０ＡのＣＰＵの負荷が第４段階の状態であると判定する。
【００７１】
そして、上記第３段階の処理によりジョブが転送された結果、サーバ２０ＢにおけるＣＰＵの負荷がさらに小さい状態となっている。このため、負荷分散装置１０では、第４段階に達しているサーバ２０ＡのＣＰＵ負荷を下げるべく、次の処理を行う。即ち、サーバ２０Ａで実行中の、ＣＰＵの負荷特性の大きいジョブＸを、サーバ２０Ｂに転送させる。なお、図１４は、当該具体例におけるジョブの転送を表している。
【００７２】
その結果、ジョブの実行状況は、図１１（Ｂ）のようになる。
かかる処理によれば、ＣＰＵの負荷が大きくなったサーバ２０Ａから、サーバ２０Ｂに対してＣＰＵの負荷特性が大きいジョブＸが再振り分けされることにより、サーバ２０Ａの負荷を下げることができる。一方、ジョブの転送先のサーバ２０Ｂでは、第３段階の処理でＣＰＵの負荷が下げられているため、再振り分けが成功する可能性が高くなる。
【００７３】
このように、負荷分散装置１０では、各サーバにおける過負荷状態が、一定の基準（初回振分基準値、中間基準値及び再振分基準値）に基づいて判定される負荷の段階に応じて回避される。このため、そもそも再振り分けを必要とするようなサーバを可能な限り発生させないこと、また、再振り分けが必要となった場合であっても再振り分けを円滑に行うこと、の両方が確実に行われる。このため、各サーバの安定稼働が実現され、システム全体として、サーバの過負荷状態に起因するバッチ処理の実行遅延を回避することができる。
【００７４】
具体的には、負荷分散装置１０は、初回振り分けにおいて、負荷が初回振分基準値よりも大きいサーバに対しては新たなジョブを振り分けないようにする（上記第２段階）。このため、再振り分けが必要となるサーバが発生すること自体を未然に防ぐことができる。また、このとき、負荷分散装置１０は、振り分け時点における負荷の最も小さいサーバにジョブが振り分ける。このため、システム全体としてバランスよく負荷分散が行なわれ、負荷が一極集中することを回避することができる。さらに、負荷分散装置１０は、実行要求に係るジョブの負荷特性を考慮し、ジョブの負荷特性が大きい負荷項目の負荷が小さいサーバに対して、ジョブを振り分ける。このため、さらに正確かつ適切な負荷分散がなされることとなる。
【００７５】
また、負荷分散装置１０では、所定時間ごとに行う負荷状況の監視において、次の処理を行う。即ち、負荷分散装置１０では、負荷が初回振分基準値よりも大きく、かつ、再振り分けが必要となる段階に達する可能性が高い状態になっているサーバ（上記第３段階）があるときには、再振り分けに備え、再振り分け先として負荷の小さいサーバを準備する。このため、再振り分けが必要となった場合に、再振り分け先のサーバがないという状態を回避することができるとともに、再振り分け先のサーバにおいて、過負荷状態となるリスクを防ぐことができる。また、このとき、少なくとも再振り分け先となるサーバで実行中のジョブを他のサーバに転送させることで、再振り分け先となるサーバの負荷を確実に小さくすることができる。さらに、負荷分散装置１０では、再振り分けが必要となるレベルに達する可能性が高い状態になっているサーバにおいて、どの負荷項目の負荷が大きいかを考慮し、再振り分け先とするサーバにおいて、当該負荷項目の負荷を特に小さくするように制御する。このため、再振り分けの成功率をさらに向上させることができる。
【００７６】
なお、上記処理では、第３段階に達したサーバが存在し、かつ、負荷が最も小さいサーバにおいて負荷特性の大きいジョブが実行されているときに、負荷が最も小さいサーバと２番目に小さいサーバとの間で、負荷特性が大きいジョブと小さいジョブとを入れ替えている。しかし、単に、負荷が最も小さいサーバから２番目に小さいサーバへとジョブを転送するだけでもよい。この場合、転送先のサーバで負荷が大きくなるリスクは高くなるものの、負荷が最も小さいサーバの負荷を、さらに小さくすることができる。
【００７７】
また、新規なジョブを振り分けない第２段階の負荷の範囲と、再振り分けの準備を行う第３段階の負荷の範囲と、をシステムの運用態様に応じて任意に変更してもよい。例えば、第２段階と第３段階の範囲を一部又は全部において重複させても、負荷分散装置１０における段階的な負荷分散を実現することは可能である。その一例として、第２段階の負荷の範囲の上限を高くし、再振分基準値と初回振分基準値の差に対し、例えば現在の負荷が８０パーセント以下である状態としてもよい。この場合、５０パーセント以下とするときと比較すると、過負荷状態となるサーバが発生しやすくなるものの、待機中のジョブを少なくしてシステムを運用することができる。また、その一方で、第３段階の負荷の範囲の下限を低くし、再振分基準値と初回振分基準値の差に対し、例えば現在の負荷が３０パーセント以下である状態としてもよい。この場合、負荷状況監視時において、サーバの負荷が再振分基準値まで未だ余裕がある段階から再振り分け先となるサーバを準備することとなり、例えば、サーバの負荷が短時間に急上昇したときなどに備えることができる。
【００７８】
なお、上記説明において、「〜以下（例：負荷 ≦再振分基準値）」としている箇所を、「〜よりも小さい（例：負荷 ＜ 再振分基準値）」としても基本的に本システムは動作可能であり、上記効果を奏することができる。その逆も同様であり、また、「〜以上」及び「〜よりも大きい」の組合せにおいても同様である。
【００７９】
以上の発明の詳細な説明に関し、更に以下の付記を開示する。
【００８０】
（付記１）  ネットワークに接続された複数のサーバの夫々の負荷状況を所定時間ごとに監視する負荷監視機能と、バッチ処理のジョブの実行要求を受け付けたときに、前記負荷監視機能により監視された各サーバの負荷状況に基づき、ジョブの振り分けが可能な負荷の大きさを示す初回振分基準値よりも負荷が小さいサーバに対してのみ、前記実行要求に係るジョブを振り分ける初回振分機能と、前記負荷監視機能により負荷状況を監視したときに、前記複数のサーバのうちいずれかのサーバにおける負荷が、少なくとも前記初回振分基準値よりも大きく、かつ、サーバで実行中のジョブを他のサーバに再振り分けする必要がある負荷の大きさを示す再振分基準値よりも小さければ、当該サーバ以外のサーバのうち最も負荷の小さいサーバをジョブの再振り分け先として特定し、当該再振り分け先のサーバの負荷が、現在の負荷よりもさらに小さくなるようにジョブの振り分けを調整する調整機能と、前記負荷監視機能により負荷状況を監視したときに、前記複数のサーバのうちいずれかのサーバにおける負荷が前記再振分基準値よりも大きければ、当該サーバで実行中のジョブを他のサーバに再振り分けする再振分機能と、をコンピュータに実現させることを特徴とする負荷分散プログラム。
【００８１】
（付記２）  前記調整機能は、前記複数のサーバのうちいずれかのサーバにおける負荷が、前記初回振分基準値及び前記再振分基準値の間の所定値である中間基準値よりも大きいときにのみ、当該サーバ以外のサーバのうち最も負荷の小さいサーバをジョブの再振り分け先として特定し、当該再振り分け先のサーバの負荷が現在の負荷よりもさらに小さくなるように、他のサーバとの間でジョブの振り分けを調整することを特徴とする付記１記載の負荷分散プログラム。
【００８２】
（付記３）  前記調整機能は、少なくとも前記再振り分け先のサーバで実行中のジョブを他のサーバに対して転送させる指示を、当該再振り分け先のサーバに対して送信することを特徴とする付記１又は付記２に記載の負荷分散プログラム。
【００８３】
（付記４）  前記初回振分機能は、前記複数のサーバのうちいずれかのサーバにおける負荷が、前記初回振分基準値及び前記再振分基準値の間の所定値である中間基準値よりも大きいときには、前記実行要求に係るジョブを待機させる一方、前記再振分機能は、前記複数のサーバのうちいずれかのサーバの負荷が、待機中のジョブをサーバに割り振ることが可能な待機解除条件を満たしたときに、当該待機させたジョブを、前記待機解除条件を満たしたサーバに振り分けることを特徴とする付記１〜付記３のいずれか１つに記載の負荷分散プログラム。
【００８４】
（付記５）  各ジョブは、ジョブの処理においてサーバの負荷の要因となる負荷項目ごとの負荷の大きさを示す指標としての負荷特性を有しており、前記負荷監視機能は、各サーバの負荷状況を負荷項目ごとに監視し、前記初回振分機能は、前記複数のサーバのうち、前記実行要求に係るジョブの負荷特性が大きい負荷項目の負荷が、当該負荷項目に対応する前記初回振分基準値よりも小さいサーバに対し、前記実行要求に係るジョブを振り分け、前記調整機能は、前記複数のサーバのうちいずれかのサーバにおいて、各負荷項目のうちいずれかの負荷項目の負荷が、少なくとも当該負荷項目に対応する前記初回振分基準値よりも大きく、かつ、当該負荷項目に対応する前記再振分基準値よりも小さければ、当該サーバ以外のサーバのうち、当該負荷項目の負荷が最も小さいサーバをジョブの再振り分け先として特定し、当該再振り分け先のサーバにおける当該負荷項目の負荷が現在の負荷よりもさらに小さくなるように、他のサーバとの間でジョブの振り分けを調整し、前記再振分機能は、前記複数のサーバのうちいずれかのサーバにおいて、各負荷項目のうちいずれかの負荷項目の負荷が、当該負荷項目に対応する前記再振分基準値よりも大きければ、当該サーバで実行中のジョブを他のサーバに再振り分けすることを特徴とする付記１〜付記４のいずれか１つに記載の負荷分散プログラム。
【００８５】
（付記６）  前記負荷項目には、負荷項目間における優先度が予め設定されており、
前記初回振分機能、前記調整機能及び前記再振分機能は、処理対象のジョブの負荷特性が示す負荷の大きさが同一の負荷項目が複数ある場合、当該複数の負荷項目のうち、前記優先度の高い負荷項目の負荷に基づいて各処理を行うことを特徴とする付記１〜付記５のいずれか１つに記載の負荷分散プログラム。
【００８６】
（付記７）  前記中間基準値は、前記初回振分基準値に、前記初回振分基準値及び前記再振分基準値の差分の５０パーセントの値を加算した値であることを特徴とする付記１〜付記７のいずれか１つに記載の負荷分散プログラム。
【００８７】
（付記８）  前記調整機能は、前記再振り分け先のサーバを特定するとともに、前記再振り分け先のサーバの次に負荷の小さいサーバをさらに特定し、前記再振り分け先のサーバで実行中のジョブを前記再振り分け先のサーバの次に負荷の小さいサーバに対して転送させる指示を、前記再振り分け先のサーバに対して送信する一方、前記再振り分け先のサーバの次に負荷の小さいサーバで実行中のジョブのうち、前記再振り分け先のサーバから転送させるジョブよりも負荷の小さいジョブを、前記再振り分け先のサーバに対して転送させる指示を、前記再振り分け先のサーバの次に負荷の小さいサーバに対して送信することを特徴とする付記１〜付記７のいずれか１つに記載の負荷分散プログラム。
【００８８】
（付記９）  ネットワークに接続された複数のサーバの夫々の負荷状況を所定時間ごとに監視する負荷監視部と、バッチ処理のジョブの実行要求を受け付けたときに、前記負荷監視部により監視された各サーバの負荷状況に基づき、ジョブの振り分けが可能な負荷の大きさを示す初回振分基準値よりも負荷が小さいサーバに対してのみ、前記実行要求に係るジョブを振り分ける初回振分部と、前記負荷監視部により負荷状況を監視したときに、前記複数のサーバのうちいずれかのサーバにおける負荷が、少なくとも前記初回振分基準値よりも大きく、かつ、サーバで実行中のジョブを他のサーバに再振り分けする必要がある負荷の大きさを示す再振分基準値よりも小さければ、当該サーバ以外のサーバのうち最も負荷の小さいサーバをジョブの再振り分け先として特定し、当該再振り分け先のサーバの負荷が、現在の負荷よりもさらに小さくなるようにジョブの振り分けを調整する調整部と、前記負荷監視部により負荷状況を監視したときに、前記複数のサーバのうちいずれかのサーバにおける負荷が前記再振分基準値よりも大きければ、当該サーバで実行中のジョブを他のサーバに再振り分けする再振分部と、を含んで構成されることを特徴とする負荷分散装置。
【符号の説明】
【００８９】
１０  負荷分散装置
１１  ジョブテーブル
１２  負荷状況テーブル
１３  振分基準テーブル
１４  待機ジョブテーブル
１５  振分制御部
１６  負荷監視部
２０（２０Ａ、２０Ｂ、２０Ｃ）  サーバ
２１（２１Ａ、２１Ｂ、２１Ｃ）  ジョブ実行部
２２（２２Ａ、２２Ｂ、２２Ｃ）  負荷測定部
２３（２３Ａ、２３Ｂ、２３Ｃ）  ジョブ転送部
【図１】
2010238051.tif 000003
【図２】
2010238051.tif 000004
【図３】
2010238051.tif 000005
【図４】
2010238051.tif 000006
【図５】
2010238051.tif 000007
【図６】
2010238051.tif 000008
【図７】
2010238051.tif 000009
【図８】
2010238051.tif 000010
【図９】
2010238051.tif 000011
【図１０】
2010238051.tif 000012
【図１１】
2010238051.tif 000013
【図１２】
2010238051.tif 000014
【図１３】
2010238051.tif 000015
【図１４】
2010238051.tif 000016