(57)【要約】【課題】各サーバの処理負担の平準化させることを可能とする情報処理プログラム、情報処理装置及び情報処理方法を提供する。【解決手段】自サーバに割り当てられたリクエストを実行するための複数の処理を特定し、特定した複数の処理ごとの負荷の情報と、自サーバとの対応情報を記憶部に記憶し、対応情報を記憶した記憶部を参照し、複数のサーバのそれぞれに対応する各処理の負荷の合計値を特定し、自サーバに対応する合計値と他のサーバに対応する合計値との差のうちの少なくとも１つが所定値以上であるか否かを判定し、差のうちの少なくとも１つが所定値以上であると判定した場合、所定値以上であると判定した差が所定値未満となるように、自サーバに対応付けられた処理を実行するサーバを変更し、かつ、対応情報を更新する。【選択図】図５
2019191924.tif 000002
【特許請求の範囲】
【請求項１】
ロードバランサによって割り当てられたリクエストを個々に実行する複数のサーバのそれぞれで実行されるプログラムであって、
自サーバに割り当てられた前記リクエストを実行するための複数の処理を特定し、
特定した前記複数の処理ごとの負荷の情報と、前記自サーバとの対応情報を記憶部に記憶し、
前記対応情報を記憶した記憶部を参照し、前記複数のサーバのそれぞれに対応する各処理の負荷の合計値を特定し、前記自サーバに対応する前記合計値と他のサーバに対応する合計値との差のうちの少なくとも１つが所定値以上であるか否かを判定し、
前記差のうちの少なくとも１つが前記所定値以上であると判定した場合、前記所定値以上であると判定した前記差が前記所定値未満となるように、前記自サーバに対応付けられた処理を実行するサーバを変更し、かつ、前記対応情報を更新する、
処理をコンピュータに実行させることを特徴する情報処理プログラム。
【請求項２】
請求項１において、
前記判定する処理は、前記ロードバランサから前記自サーバに対して新たなリクエストが割り当てられたことに応じて行われる、
ことを特徴する情報処理プログラム。
【請求項３】
請求項１において、
前記判定する処理は、定期的なタイミングにおいて行われる、
ことを特徴する情報処理プログラム。
【請求項４】
請求項１において、
前記更新する処理では、前記差のうちの少なくとも１つが前記所定値以上である場合、前記自サーバに対応付けられた処理のうちの少なくとも１つの実行を他のサーバに依頼する、
ことを特徴する情報処理プログラム。
【請求項５】
請求項１において、さらに、
前記複数のサーバのうち、異常が発生している他のサーバが存在するか否かを判定し、
前記異常が発生している他のサーバが存在すると判定した場合、前記対応情報を記憶した記憶部を参照し、前記他のサーバが実行中であった処理と前記他のサーバが実行中であった処理の後に実行する処理とを実行する、
処理をコンピュータに実行させることを特徴する情報処理プログラム。
【請求項６】
請求項５において、
前記異常が発生している他のサーバが存在するか否かを判定する処理では、前記記憶部とのセッションが切断されている他のサーバが存在するか否かの判定を行い、
前記他のサーバが実行中であった処理と前記他のサーバが実行中であった処理の後に実行する処理とを実行する処理では、前記セッションが切断されている他のサーバが存在すると判定した場合、前記セッションが切断されていると判定した他のサーバに対応する処理を実行する、
ことを特徴する情報処理プログラム。
【請求項７】
ロードバランサによって割り当てられたリクエストを個々に実行する複数の情報処理装置のうちの一の情報処理装置であって、
自装置に割り当てられた前記リクエストを実行するための複数の処理を特定する処理特定部と、
特定した前記複数の処理ごとの負荷の情報と、前記自装置との対応情報を記憶する記憶部と、
前記対応情報を記憶した記憶部を参照し、前記複数の情報処理装置のそれぞれに対応する各処理の負荷の合計値を特定し、前記自装置に対応する前記合計値と他の装置に対応する合計値との差のうちの少なくとも１つが所定値以上であるか否かを判定する負荷判定部と、
前記差のうちの少なくとも１つが前記所定値以上であると判定した場合、前記所定値以上であると判定した前記差が前記所定値未満となるように、前記自装置に対応付けられた処理を実行する情報処理装置を変更し、かつ、前記対応情報を更新する装置決定部と、を有する、
ことを特徴する情報処理装置。
【請求項８】
ロードバランサによって割り当てられたリクエストを個々に実行する複数のサーバのそれぞれで実行される情報処理方法であって、
自サーバに割り当てられた前記リクエストを実行するための複数の処理を特定し、
特定した前記複数の処理ごとの負荷の情報と、前記自サーバとの対応情報を記憶部に記憶し、
前記対応情報を記憶した記憶部を参照し、前記複数のサーバのそれぞれに対応する各処理の負荷の合計値を特定し、前記自サーバに対応する前記合計値と他のサーバに対応する合計値との差のうちの少なくとも１つが所定値以上であるか否かを判定し、
前記差のうちの少なくとも１つが前記所定値以上であると判定した場合、前記所定値以上であると判定した前記差が前記所定値未満となるように、前記自サーバに対応付けられた処理を実行するサーバを変更し、かつ、前記対応情報を更新する、
ことを特徴する情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理プログラム、情報処理装置及び情報処理方法に関する。
【背景技術】
【０００２】
例えば、利用者にサービスを提供する事業者（以下、単に事業者とも呼ぶ）は、サービスの提供を行うための情報処理システムを構築して稼働させる。具体的に、事業者は、例えば、利用者から受け付けたリクエストに対して実行する必要がある各種処理（以下、単にリクエストに対応する処理とも呼ぶ）を実行する複数のサーバと、利用者から受け付けたリクエストを複数のサーバのうちのいずれかに割り当てるロードバランサとを含む情報処理システムの構築を行う。
【０００３】
上記のような情報処理システムにおけるロードバランサは、例えば、複数のサーバに対して割り当てるリクエストの数が可能な限り均一になるように、利用者から受け付けたリクエストの割り当てを行う。これにより、事業者は、各サーバの処理負担の平準化を図ることが可能になる（例えば、特許文献１及び２参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１６−０１５０７４号公報
【特許文献２】特開２０１２−０６９０５６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ここで、上記のようなリクエストに対応する各処理は、その内容によって実行時における処理負担が異なる。そのため、各サーバにおける処理負担は、各サーバに割り当てられたリクエストに対応する処理の内容によって大きく異なる場合がある。
【０００６】
しかしながら、上記のようなロードバランサは、各サーバに対して一旦割り当てたリクエストを他のサーバに対して再度割り当てることができない場合がある。そのため、上記のような情報処理システムでは、一部のサーバに負荷が集中している場合であっても、そのサーバに割り当てられたリクエストを他のサーバに再度割り当てることができず、各サーバの処理負担の平準化させることができない場合がある。
【０００７】
そこで、一つの側面では、本発明は、各サーバの処理負担の平準化させることを可能とする情報処理プログラム、情報処理装置及び情報処理方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
実施の形態の一態様では、ロードバランサによって割り当てられたリクエストを個々に実行する複数のサーバのそれぞれで実行されるプログラムであって、自サーバに割り当てられた前記リクエストを実行するための複数の処理を特定し、特定した前記複数の処理ごとの負荷の情報と、前記自サーバとの対応情報を記憶部に記憶し、前記対応情報を記憶した記憶部を参照し、前記複数のサーバのそれぞれに対応する各処理の負荷の合計値を特定し、前記自サーバに対応する前記合計値と他のサーバに対応する合計値との差のうちの少なくとも１つが所定値以上であるか否かを判定し、前記差のうちの少なくとも１つが前記所定値以上であると判定した場合、前記所定値以上であると判定した前記差が前記所定値未満となるように、前記自サーバに対応付けられた処理を実行するサーバを変更し、かつ、前記対応情報を更新する、処理をコンピュータに実行させる。
【発明の効果】
【０００９】
一つの側面によれば、各サーバの処理負担の平準化させることを可能とする。
【図面の簡単な説明】
【００１０】
【図１】図１は、情報処理システム１０の構成を示す図である。
【図２】図２は、情報処理システム１０の構成を示す図である。
【図３】図３は、サーバ１のハードウエア構成を示す図である。
【図４】図４は、サーバ１の機能のブロック図である。
【図５】図５は、第１の実施の形態におけるサーバ変更処理の概略を説明するフローチャート図である。
【図６】図６は、第１の実施の形態におけるサーバ変更処理の概略を説明する図である。
【図７】図７は、第１の実施の形態におけるサーバ変更処理の概略を説明する図である。
【図８】図８は、第１の実施の形態におけるサーバ変更処理の詳細を説明するフローチャート図である。
【図９】図９は、第１の実施の形態におけるサーバ変更処理の詳細を説明するフローチャート図である。
【図１０】図１０は、第１の実施の形態におけるサーバ変更処理の詳細を説明するフローチャート図である。
【図１１】図１１は、第１の実施の形態におけるサーバ変更処理の詳細を説明するフローチャート図である。
【図１２】図１２は、第１の実施の形態におけるサーバ変更処理の詳細を説明するフローチャート図である。
【図１３】図１３は、第１の実施の形態におけるサーバ変更処理の詳細を説明するフローチャート図である。
【図１４】図１４は、第１の実施の形態におけるサーバ変更処理の詳細を説明するフローチャート図である。
【図１５】図１５は、対応情報１３１の具体例を説明する図である。
【図１６】図１６は、対応情報１３１の具体例を説明する図である。
【図１７】図１７は、対応情報１３１の具体例を説明する図である。
【図１８】図１８は、閾値情報１３３の具体例を説明する図である。
【図１９】図１９は、Ｓ１５の処理の具体例を説明する図である。
【図２０】図２０は、対応情報１３１の具体例を説明する図である。
【図２１】図２１は、対応情報１３１の具体例を説明する図である。
【図２２】図２２は、対応情報１３１の具体例を説明する図である。
【図２３】図２３は、対応情報１３１の具体例を説明する図である。
【図２４】図２４は、サーバ稼働情報１３２の具体例を説明する図である。
【図２５】図２５は、サーバ稼働情報１３２の具体例を説明する図である。
【図２６】図２６は、対応情報１３１の具体例を説明する図である。
【図２７】図２７は、対応情報１３１の具体例を説明する図である。
【発明を実施するための形態】
【００１１】
［情報処理システムの構成］
図１及び図２は、情報処理システム１０の構成を示す図である。具体的に、図１に示す情報処理システム１０は、サーバ１ａ、１ｂ、１ｃ及び１ｄと、ロードバランサ２と、操作端末３とを有する。なお、以下、サーバ１ａ、１ｂ、１ｃ及び１ｄを総称してサーバ１または情報処理装置１とも呼ぶ。
【００１２】
操作端末３は、例えば、利用者が使用するＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）であり、各サーバ１に対して処理の実行を要求するためのリクエストを送信する。
【００１３】
ロードバランサ２は、例えば、物理マシン上に生成された１台以上の仮想マシンであり、操作端末３から受け付けたリクエストをサーバ１のうちのいずれかに送信する。具体的に、ロードバランサ２は、例えば、各サーバ１に対して送信したリクエストの数が均一になるように、リクエストを送信するサーバ１を決定する。
【００１４】
各サーバ１は、例えば、物理マシン上に生成された１台以上の仮想マシンであり、ロードバランサ２から受け付けたリクエストを蓄積し、先に受け付けたリクエストに対応する処理から順に実行する。具体的に、図１に示す例は、サーバ１ａが処理Ａ１及び処理Ａ２を蓄積し、サーバ１ｂが処理Ｂ１を蓄積し、サーバ１ｃが処理Ｃ１及び処理Ｃ２を蓄積し、サーバ１ｄが処理Ｄ１を蓄積している状態を示す例である。なお、リクエストに対応する処理には、例えば、データベース（図示しない）に記憶されたデータを参照する処理、データベースに記憶されたデータを更新する処理、データベースに対して新たな情報を追加する処理及びデータベースに記憶されたデータを削除する処理が含まれるものであってよい。
【００１５】
そして、例えば、図２に示すように、サーバ１ａが処理Ａ１、処理Ａ２、処理Ａ３及び処理Ａ４を蓄積したことにより、サーバ１ａの処理負荷が予め定められた閾値まで上昇した場合、管理サーバ（図示しない）は、例えば、新たなサーバ１ｅを追加する。一方、例えば、サーバ１ａの処理負荷が予め定められた別の閾値まで低下した場合、管理サーバは、例えば、サーバ１のうちのいずれかのサーバを削除する。
【００１６】
これにより、事業者は、利用者によるサービスの利用状況（例えば、操作端末３から送信されるリクエストの頻度）に応じて、サーバ１の台数を調整することが可能になる。そのため、事業者は、利用者に対するサービスの提供に用いられる物理リソース（例えば、物理マシンのＣＰＵやメモリ等）を効率的に使用することが可能になる。
【００１７】
ここで、操作端末３から送信されたリクエストに対応する各処理は、その内容によって各サーバ１における処理負担が大きく異なる。そのため、各サーバ１における処理負担は、各サーバ１に割り当てられたリクエストに対応する各処理の内容によって大きく異なる場合がある。
【００１８】
しかしながら、ロードバランサ２は、各サーバ１に対して一旦割り当てたリクエストを、他のサーバ１に対して再度割り当てることができない場合がある。そのため、情報処理システム１０では、一部のサーバ１に負荷が集中している場合であっても、そのサーバ１に割り当てられたリクエストを他のサーバ１に再度割り当てることができず、各サーバ１の処理負担の平準化させることができない場合がある。
【００１９】
そこで、本実施の形態における各サーバ１は、ロードバランサ２によって自サーバ１に割り当てられた各リクエストを実行するための複数の処理を特定する。そして、各サーバ１は、特定した複数の処理ごとの負荷の情報と、自サーバ１との対応情報を記憶部に記憶する。
【００２０】
その後、各サーバ１は、対応情報を記憶した記憶部を参照し、複数のサーバ１のそれぞれに対応する各処理の負荷の合計値を特定し、自サーバ１に対応する合計値と他のサーバ１に対応する合計値との差のうちの少なくとも１つが所定値以上であるか否かを判定する。
【００２１】
その結果、自サーバ１に対応する合計値と他のサーバ１に対応する合計値との差のうちの少なくとも１つが所定値以上であると判定した場合、各サーバ１は、所定値以上であると判定した差が所定値未満となるように、自サーバ１に対応付けられた処理を実行するサーバ１を変更し、かつ、対応情報を更新する。
【００２２】
すなわち、本実施の形態における各サーバ１は、例えば、各サーバ１の処理負荷の状態を示す対応情報を随時更新する。そして、各サーバ１は、対応情報を記憶した記憶部を参照し、自サーバ１が高負荷であると判定した場合、ロードバランサ２から受け付けたリクエストに対応する処理を他のサーバ１に引き継ぐ。
【００２３】
これにより、各サーバ１は、各サーバ１の現在の状態を反映した対応情報を参照することで、自サーバ１の状態が他のサーバ１の状態と比較して高負荷であるか否かの判定を行うことが可能になる。そのため、各サーバ１は、自サーバ１の状態が他のサーバ１の状態と比較して高負荷であると判定した場合、自サーバ１に割り当てられたリクエストに対応する処理の実行を他のサーバ１（高負荷でないサーバ１）に依頼する旨の決定を行うことが可能になる。したがって、各サーバ１は、自サーバ１に割り当てられたリクエストに対応する処理の実行を、適切なタイミングにおいて他のサーバ１に依頼することが可能になり、各サーバ１の処理負担を平準化させることが可能になる。
【００２４】
［情報処理システムのハードウエア構成］
次に、情報処理システム１０のハードウエア構成について説明する。図３は、サーバ１のハードウエア構成を示す図である。
【００２５】
サーバ１は、プロセッサであるＣＰＵ１０１と、メモリ１０２と、外部インターフェース（Ｉ／Ｏユニット）１０３と、記憶媒体１０４とを有する。各部は、バス１０５を介して互いに接続される。
【００２６】
記憶媒体１０４は、例えば、ロードバランサ２によって割り当てられたリクエストに対応する処理を他のサーバ１に再度割り当てる処理（以下、サーバ変更処理とも呼ぶ）を行うためのプログラム１１０を記憶するプログラム格納領域（図示しない）を有する。また、記憶媒体１０４は、例えば、サーバ変更処理を行う際に用いられる情報を記憶する情報格納領域１３０（以下、記憶部１３０とも呼ぶ）を有する。なお、記憶媒体１０４は、例えば、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）であってよい。
【００２７】
ＣＰＵ１０１は、記憶媒体１０４からメモリ１０２にロードされたプログラム１１０を実行してサーバ変更処理を行う。
【００２８】
外部インターフェース１０３は、例えば、他のサーバ１やロードバランサ２と通信を行う。
【００２９】
［情報処理システムの機能］
次に、情報処理システム１０の機能について説明を行う。図４は、サーバ１の機能のブロック図である。
【００３０】
各サーバ１は、ＣＰＵ１０１やメモリ１０２等のハードウエアとプログラム１１０とが有機的に協働することにより、リクエスト受付部１１１と、処理実行部１１２と、処理特定部１１３と、負荷判定部１１４と、サーバ決定部１１５（以下、装置決定部１１５とも呼ぶ）と、異常判定部１１６と、情報管理部１１７とを含む各種機能を実現する。
【００３１】
そして、各サーバ１は、図４に示すように、対応情報１３１と、サーバ稼働情報１３２と、閾値情報１３３とを情報格納領域１３０に記憶する。
【００３２】
リクエスト受付部１１１は、ロードバランサ２から送信されたリクエストを受け付ける。そして、情報管理部１１７は、例えば、リクエスト受付部１１１が受け付けたリクエストを情報格納領域１３０に記憶する。
【００３３】
処理実行部１１２は、リクエスト受付部１１１が受け付けたリクエストに対応する処理を実行する。具体的に、処理実行部１１２は、例えば、情報管理部１１７によって情報格納領域１３０に記憶されたリクエストに対応する処理を、ロードバランサ２から送信された順序が早いリクエストに対応する処理から順に実行する。
【００３４】
処理特定部１１３は、リクエスト受付部１１１が受け付けたリクエストに対応する処理を特定する。具体的に、処理特定部１１３は、自サーバ１に割り当てられたリクエストとして情報格納領域１３０に記憶されている１以上のリクエストにそれぞれ対応する処理を特定する。そして、情報管理部１１７は、処理特定部１１３が特定した処理ごとの負荷の情報と、自サーバ１を識別する識別情報とを対応付けた対応情報１３１を情報格納領域１３０に記憶する。対応情報１３１の具体例については後述する。
【００３５】
負荷判定部１１４は、対応情報１３１を記憶した情報格納領域１３０を参照し、各サーバ１に対応する各処理の負荷の合計値をサーバ１ごとに特定する。具体的に、負荷判定部１１４は、例えば、情報管理部１１７が対応情報１３１を記憶（更新）したことに応じて、各処理の負荷の合計値の特定を行うものであってよい。また、負荷判定部１１４は、例えば、定期的なタイミングにおいて、各処理の負荷の合計値の特定を行うものであってよい。そして、負荷判定部１１４は、特定した合計値のそれぞれから、自サーバ１に対応する合計値と他のサーバ１に対応する合計値との差のうちの少なくとも１つが所定値以上であるか否かを判定する。
【００３６】
サーバ決定部１１５は、自サーバ１に対応する合計値と他のサーバ１に対応する合計値との差のうちの少なくとも１つが所定値以上であると負荷判定部１１４が判定した場合、所定値以上であると判定した差が所定値未満となるように、自サーバ１に対応付けられた処理を実行するサーバ１を変更する。そして、情報管理部１１７は、この場合、変更された内容を反映するように、対応情報１３１の更新を行う。
【００３７】
異常判定部１１６は、異常が発生している他のサーバ１が存在するか否かを判定する。そして、処理実行部１１２は、異常が発生している他のサーバ１が存在する場合、例えば、異常が発生している他のサーバ１が実行中であった処理と、異常が発生している他のサーバ１がこれから実行する予定であった処理とを引き継いで実行する。サーバ稼働情報１３２及び閾値情報１３３についての説明は後述する。
【００３８】
［第１の実施の形態の概略］
次に、第１の実施の形態の概略について説明する。図５は、第１の実施の形態におけるサーバ変更処理の概略を説明するフローチャート図である。また、図６及び図７は、第１の実施の形態におけるサーバ変更処理の概略を説明する図である。
【００３９】
サーバ１は、図５に示すように、処理実行タイミングまで待機する（Ｓ１のＮＯ）。処理実行タイミングは、例えば、自サーバ１がロードバランサ２からリクエストを受け付けたタイミングであってよい。また、処理実行タイミングは、例えば、１０秒間隔等の定期的なタイミングであってよい。
【００４０】
そして、処理実行タイミングになった場合（Ｓ１のＹＥＳ）、サーバ１は、ロードバランサ２によって自サーバ１に割り当てられたリクエストを実行するための複数の処理を特定する（Ｓ２）。続いて、サーバ１は、Ｓ２の処理で特定した複数の処理ごとの負荷の情報と、自サーバ１との対応情報１３１を情報格納領域１３０に記憶する（Ｓ３）。
【００４１】
具体的に、サーバ１ａは、図６に示すように、例えば、処理Ａ１の実行中において新たなリクエストをロードバランサ２から受け付けた場合、実行中の処理Ａ１及び新たなリクエストに対応する処理Ａ２の実行に伴うサーバ１ａの負荷についての情報と、サーバ１ａの識別情報とを対応付けた対応情報１３１を情報格納領域１３０に記憶する。
【００４２】
その後、サーバ１は、対応情報１３１を記憶した情報格納領域１３０を参照し、複数のサーバ１のそれぞれに対応する各処理の負荷の合計値を特定し、自サーバ１に対応する合計値と他のサーバ１に対応する合計値との差のうちの少なくとも１つが所定値以上であるか否かを判定する（Ｓ４）。
【００４３】
その結果、自サーバ１に対応する合計値と他のサーバ１に対応する合計値との差のうちの少なくとも１つが所定値以上であると判定した場合（Ｓ５のＹＥＳ）、サーバ１は、Ｓ４の処理で所定値以上であると判定した差が所定値未満となるように、自サーバ１に対応付けられた処理を実行するサーバ１を変更して対応情報１３１を更新する（Ｓ６）。
【００４４】
具体的に、サーバ１ａは、自サーバ１が高負荷状態にあると判定した場合、図７に示すように、例えば、ロードバランサ２によって自サーバ１に割り当てられた新たなリクエストに対応する処理Ａ２を実行するサーバ１を、サーバ１ａからサーバ１ｅに変更する。
【００４５】
一方、自サーバ１に対応する合計値と他のサーバ１に対応する合計値との差の全てが所定値以上でないと判定した場合（Ｓ５のＮＯ）、サーバ１は、Ｓ６の処理を行わない。
【００４６】
すなわち、本実施の形態における各サーバ１は、例えば、各サーバ１の処理負荷の状態を示す対応情報１３１を随時更新する。そして、各サーバ１は、対応情報１３１を記憶した情報格納領域１３０を参照し、自サーバ１が高負荷であると判定した場合、ロードバランサ２から受け付けたリクエストに対応する処理を他のサーバ１に引き継ぐ。
【００４７】
これにより、各サーバ１は、各サーバ１の現在の状態を反映した対応情報１３１を参照することで、自サーバ１の状態が他のサーバ１の状態と比較して高負荷であるか否かの判定を行うことが可能になる。そのため、各サーバ１は、自サーバ１の状態が他のサーバ１の状態と比較して高負荷であると判定した場合、自サーバ１に割り当てられたリクエストに対応する処理の実行を他のサーバ１（高負荷でないサーバ１）に依頼する旨の決定を行うことが可能になる。したがって、各サーバ１は、自サーバ１に割り当てられたリクエストに対応する処理の実行を、適切なタイミングにおいて他のサーバ１に依頼することが可能になり、各サーバ１の処理負担を平準化させることが可能になる。
【００４８】
［第１の実施の形態の詳細］
次に、第１の実施の形態の詳細について説明する。図８から図１４は、第１の実施の形態におけるサーバ変更処理の詳細を説明するフローチャート図である。また、図１５から図２７は、第１の実施の形態におけるサーバ変更処理の詳細を説明する図である。
【００４９】
［リクエストを受け付けた場合におけるサーバ変更処理］
初めに、ロードバランサ２からリクエストを受け付けた場合におけるサーバ変更処理について説明を行う。
【００５０】
サーバ１のリクエスト受付部１１１は、図８に示すように、ロードバランサ２によって送信されたリクエストを受け付けるまで待機する（Ｓ１１のＮＯ）。
【００５１】
そして、ロードバランサ２によって送信されたリクエストを受け付けた場合（Ｓ１１のＹＥＳ）、サーバ１の処理特定部１１３は、Ｓ１１の処理で受け付けたリクエストに対応する処理を特定する（Ｓ１２）。
【００５２】
その後、サーバ１の情報管理部１１７は、Ｓ１１の処理で受け付けたリクエストに対応する処理の負荷を示す情報と、自サーバ１の識別情報とを対応付けた対応情報１３１を情報格納領域１３０に記憶する（Ｓ１３）。具体的に、情報管理部１１７は、Ｓ１１の処理で受け付けたリクエストに対応する処理の識別情報と、Ｓ１１の処理でリクエストを受け付けたサーバ１の識別情報とを対応付けた情報を第１対応情報１３１ａの一部として記憶する。また、情報管理部１１７は、Ｓ１１の処理で受け付けたリクエストに対応する処理と、各処理に含まれる各操作の実行状況とを対応付けた情報を第２対応情報１３１ｂの一部として記憶する。さらに、情報管理部１１７は、各サーバ１の識別情報と、各サーバ１の現在の負荷を示す情報とを対応付けた第３対応情報１３１ｃを更新する。以下、対応情報１３１の具体例について説明を行う。
【００５３】
［対応情報の具体例］
図１５、図１６、図１７、図２０、図２１、図２２、図２３、図２６及び図２７は、対応情報１３１の具体例を説明する図である。具体的に、図１５、図２０及び図２６は、第１対応情報１３１ａの具体例を説明する図であり、図１６、図２１、図２２、図２３及び図２７は、第２対応情報１３１ｂの具体例を説明する図であり、図１７は、第３対応情報１３１ｃの具体例を説明する図である。
【００５４】
初めに、第１対応情報１３１ａの具体例について説明を行う。
【００５５】
第１対応情報１３１ａは、図１５等に示すように、第１対応情報１３１ａに含まれる各情報を識別する「項番」と、各処理の識別情報が設定される「処理ＩＤ」と、各処理に対応するリクエストを受け付けた日時が設定される「処理受付日時」とを項目として有する。また、第１対応情報１３１ａは、図１５等に示すように、各処理の実行が完了した日時が設定される「処理完了日時」と、各サーバ１の識別情報が設定される「サーバＩＤ」とを項目として有する。
【００５６】
具体的に、図１５に示す第１対応情報１３１ａにおいて、「項番」が「１」である情報には、「処理ＩＤ」として「Ａ００１」が設定され、「処理受付日時」として「２０１８／０４／１０  ０７：３６：２４」が設定されている。また、図１５に示す第１対応情報１３１ａにおいて、「項番」が「１」である情報には、「処理完了日時」として情報が設定されていないことを示す「−」が設定され、「サーバＩＤ」として「１ａ」が設定されている。
【００５７】
また、図１５に示す第１対応情報１３１ａにおいて、「項番」が「２」である情報には、「処理ＩＤ」として「Ａ００３」が設定され、「処理受付日時」として「２０１８／０４／１０  ０８：１１：５１」が設定されている。また、図１５に示す第１対応情報１３１ａにおいて、「項番」が「２」である情報には、「処理完了日時」として「−」が設定され、「サーバＩＤ」として「１ｂ」が設定されている。図１５に含まれる他の情報についての説明は省略する。
【００５８】
すなわち、図１５に示す第１対応情報１３１ａは、サーバ１ａに割り当てられたリクエストに対応する処理の「処理ＩＤ」が「Ａ００１」であり、サーバ１ｂに割り当てられたリクエストに対応する処理の「処理ＩＤ」が「Ａ００３」であり、サーバ１ｃに割り当てられたリクエストに対応する処理の「処理ＩＤ」が「Ａ００８」及び「Ａ０２２」であることを示している。また、図１５に示す第１対応情報１３１ａは、サーバ１ｄに割り当てられたリクエストに対応する処理の「処理ＩＤ」が「Ａ０１２」であり、サーバ１ｅに割り当てられたリクエストに対応する処理の「処理ＩＤ」が「Ａ０１５」であることを示している。
【００５９】
次に、第２対応情報１３１ｂの具体例について説明を行う。
【００６０】
第２対応情報１３１ｂは、図１６等に示すように、第２対応情報１３１ｂに含まれる各情報を識別する「項番」と、各処理の識別情報が設定される「処理ＩＤ」と、各処理に含まれる各操作の識別情報が設定される「操作ＩＤ」と、各操作の処理状況が設定される「ステータス」とを項目として有する。「ステータス」には、各操作の実行が完了していることを示す「処理完了」、各操作を実行中であることを示す「処理中」、または、各操作の実行がまだ行われていないことを示す「未処理」が設定される。また、第２対応情報１３１ｂは、図１６等に示すように、各操作の実行が開始された日時が設定される「操作開始日時」と、各操作の実行が完了した日時が設定される「操作完了日時」と、各サーバ１の識別情報が設定される「サーバＩＤ」とを項目として有する。
【００６１】
具体的に、図１６に示す第２対応情報１３１ｂにおいて、「項番」が「１」である情報には、「処理ＩＤ」として「Ａ００１」が設定され、「操作ＩＤ」として「Ｂ００１」が設定され、「ステータス」として「処理完了」が設定されている。また、図１６に示す第２対応情報１３１ｂにおいて、「項番」が「１」である情報には、「操作開始日時」として「２０１８／０４／１０  ０７：３６：２４」が設定され、「操作完了日時」として「２０１８／０４／１０  ０７：４１：０２」が設定され、「サーバＩＤ」として「１ａ」が設定されている。
【００６２】
また、図１６に示す第２対応情報１３１ｂにおいて、「項番」が「３」である情報には、「処理ＩＤ」として「Ａ００１」が設定され、「操作ＩＤ」として「Ｂ００３」が設定され、「ステータス」として「処理中」が設定されている。また、図１６に示す第２対応情報１３１ｂにおいて、「項番」が「３」である情報には、「操作開始日時」として「２０１８／０４／１０  ０７：４１：４３」が設定され、「操作完了日時」として「−」が設定され、「サーバＩＤ」として「１ａ」が設定されている。
【００６３】
さらに、図１６に示す第２対応情報１３１ｂにおいて、「項番」が「５」である情報には、「処理ＩＤ」として「Ａ００１」が設定され、「操作ＩＤ」として「Ｂ００５」が設定され、「ステータス」として「未処理」が設定されている。また、図１６に示す第２対応情報１３１ｂにおいて、「項番」が「５」である情報には、「操作開始日時」として「−」が設定され、「操作完了日時」として「−」が設定され、「サーバＩＤ」として「１ａ」が設定されている。図１６に含まれる他の情報についての説明は省略する。
【００６４】
すなわち、図１６に示す第２対応情報１３１ｂは、「処理ＩＤ」が「Ａ００１」である処理に含まれる各操作がサーバ１ａによって実行されていることを示している。そして、図１６に示す第２対応情報１３１ｂは、例えば、「操作ＩＤ」が「Ｂ００１」及び「Ｂ００２」である操作の実行が既に完了しており、「操作ＩＤ」が「Ｂ００３」及び「Ｂ００４」である操作の実行が現在行われており、「操作ＩＤ」が「Ｂ００５」、「Ｂ００６」及び「Ｂ００７」である操作の実行がまだ行われていないことを示している。
【００６５】
続いて、第３対応情報１３１ｃの具体例について説明を行う。
【００６６】
第３対応情報１３１ｃは、図１７に示すように、第３対応情報１３１ｃに含まれる各情報を識別する「項番」と、各サーバ１の識別情報が設定される「サーバＩＤ」と、各サーバ１の現在のＣＰＵ使用率（各サーバ１から取得した情報）が設定される「ＣＰＵ使用率」とを項目として有する。また、第３対応情報１３１ｃは、図１７に示すように、各サーバ１の現在のメモリ使用量（各サーバ１から取得した情報）が設定される「メモリ」と、各サーバ１における現在のスレッドの使用数（各サーバ１から取得した情報）が設定される「スレッド使用数」と、各サーバ１が実行している処理及び実行する予定の処理についての負荷の重度の合計値を示す「処理重度」とを項目として有する。
【００６７】
具体的に、図１７に示す第３対応情報１３１ｃにおいて、「項番」が「１」である情報には、「サーバＩＤ」として「１ａ」が設定され、「ＣＰＵ使用率」として「９０（％）」が設定され、「メモリ使用量」として「１８（ＧＢ）」が設定され、「スレッド使用数」として「５０００」が設定され、「処理重度」として「２００」が設定されている。
【００６８】
また、図１７に示す第３対応情報１３１ｃにおいて、「項番」が「２」である情報には、「サーバＩＤ」として「１ｂ」が設定され、「ＣＰＵ使用率」として「４０（％）」が設定され、「メモリ使用量」として「１０（ＧＢ）」が設定され、「スレッド使用数」として「６０００」が設定され、「処理重度」として「１２０」が設定されている。図１７に含まれる他の情報についての説明は省略する。
【００６９】
なお、図１７に示す「処理重度」には、例えば、各サーバ１が受け付けたリクエストに対応する各処理の重度の合計値が設定されるものであってよい。
【００７０】
具体的に、情報管理部１１７は、例えば、リクエストに対応する処理がデータベース（図示しない）に記憶されたデータの参照である場合、その処理の重度に対応する値として「１」を特定するものであってよい。また、情報管理部１１７は、例えば、リクエストに対応する処理がデータベースに対するデータの追加やデータベースに記憶されたデータの削除である場合であって、処理に要する時間が所定の時間（例えば、１時間）を下回ると予測される場合、その処理の重度に対応する値として「２」を特定するものであってよい。また、情報管理部１１７は、例えば、リクエストに対応する処理がデータベースに対するデータの追加やデータベースに記憶されたデータの削除である場合であって、処理に要する時間が所定の時間を上回ると予測される場合、その処理の重度に対応する値として「３」を特定するものであってよい。さらに、情報管理部１１７は、例えば、リクエストに対応する処理がデータベースに記憶されたデータの更新である場合、その処理の重度に対応する値として「３」を特定するものであってよい。そして、情報管理部１１７は、例えば、各サーバ１が受け付けたリクエストに対応する各処理の重度に対応する値の合計値を「処理重度」に設定するものであってよい。
【００７１】
図８に戻り、サーバ１の負荷判定部１１４は、情報格納領域１３０に記憶された対応情報１３１を参照し、複数のサーバ１のそれぞれに対応する各処理の負荷の合計値を特定する（Ｓ１４）。
【００７２】
具体的に、負荷判定部１１４は、情報格納領域１３０に記憶された第３対応情報１３１ｃを参照し、各サーバ１に対応する情報の「ＣＰＵ使用率」、「メモリ使用量」、「スレッド使用数」及び「負荷重度」に設定された情報をそれぞれ特定するものであってよい。
【００７３】
そして、負荷判定部１１４は、Ｓ１４の処理で特定した合計値に基づいて、各サーバ１間における合計値の差をそれぞれ算出する（Ｓ１５）。以下、Ｓ１５の処理の具体例について説明を行う。
【００７４】
［Ｓ１５の処理の具体例］
図１８及び図１９は、Ｓ１５の処理の具体例を説明する図である。
【００７５】
初めに、負荷判定部１１４は、情報格納領域１３０に記憶された閾値情報１３３を参照し、Ｓ１４の処理で特定した合計値のそれぞれが、閾値情報１３３に情報が含まれる各閾値を超えているか否かを判定する。以下、閾値情報１３３の具体例について説明を行う。
【００７６】
［閾値情報の具体例］
図１８は、閾値情報１３３の具体例を説明する図である。
【００７７】
閾値情報１３３は、図１８に示すように、閾値情報１３３に含まれる各情報を識別する「項番」と、第３対応情報１３１ｃにおける各項目の名称が設定される「項目名」と、「項目名」に名称が設定された項目と比較する閾値がそれぞれ設定される「第１閾値」及び「第２閾値」とを項番として有する。また、閾値情報１３３は、図１８に示すように、「項目名」に名称が設定された項目が取り得る値の上限値が設定される「上限」を項目として有する。
【００７８】
具体的に、図１８に示す閾値情報１３３において、「項番」が「１」である情報には、「項目名」として「ＣＰＵ使用率」が設定され、「第１閾値」として「６０（％）」が設定され、「第２閾値」として「８０（％）」が設定され、「上限」として「１００（％）」が設定されている。
【００７９】
また、図１８に示す閾値情報１３３において、「項番」が「２」である情報には、「項目名」として「メモリ使用量」が設定され、「第１閾値」として「１５（ＧＢ）」が設定され、「第２閾値」として「２０（ＧＢ）」が設定され、「上限」として「２４（ＧＢ）」が設定されている。図１８に含まれる他の情報についての説明は省略する。
【００８０】
そして、負荷判定部１１４は、Ｓ１５の処理において、例えば、図１７で説明した第３対応情報１３１ｃにおける「ＣＰＵ使用率」、「メモリ使用量」、「スレッド使用数」及び「処理重度」のそれぞれに設定された各値（Ｓ１４の処理で特定した各合計値）を、図１８で説明した閾値情報１３３における「第１閾値」に設定された閾値未満であるグループ（以下、低グループとも呼ぶ）と、「第１閾値」に設定された閾値以上であって「第２閾値」に設定された閾値未満であるグループ（以下、中グループとも呼ぶ）と、「第２閾値」に設定された閾値以上であるグループ（以下、高グループとも呼ぶ）とのいずれかに振り分ける。
【００８１】
具体的に、図１７で説明した第３対応情報１３１ｃにおいて、「サーバＩＤ」が「１ａ」である情報には、「ＣＰＵ使用率」として「９０（％）」が設定され、「メモリ使用量」として「１８（ＧＢ）」が設定され、「スレッド使用数」として「５０００」が設定され、「処理重度」として「２００」が設定されている。そのため、負荷判定部１１４は、図１８で説明した閾値情報１３３を参照し、例えば、図１９に示すように、サーバ１ａのＣＰＵ使用率、メモリ使用量、スレッド使用数及び処理重度が、それぞれ高グループ、中グループ、低グループ及び中グループに分類されると判定する。なお、図１９に示す例では、「低グループ」、「中グループ」及び「高グループ」を数値化することにより、それぞれ「１」、「２」及び「３」として表記している。
【００８２】
すなわち、負荷判定部１１４は、Ｓ１４の処理で特定した合計値のグループ化を行ってから各処理を実行するサーバ１の決定を行う。これにより、情報処理装置１は、各処理を実行するサーバ１の変更が必要以上に行われることを防止することが可能になる。
【００８３】
その後、負荷判定部１１４は、例えば、Ｓ１４の処理で特定した合計値の各グループへの分類結果を参照し、各サーバ１間における合計値の差をそれぞれ算出する。
【００８４】
具体的に、図１９に示す情報には、例えば、サーバ１ａ、１ｂ、１ｃ、１ｄ及び１ｅのそれぞれに対応するＣＰＵ使用率として、それぞれ「３」、「１」、「１」、「１」及び「１」が設定されている。そのため、負荷判定部１１４は、例えば、サーバ１ａのＣＰＵ使用率についての差として「２」、「２」、「２」、「２」を特定し、サーバ１ｂのＣＰＵ使用率についての差として「−２」、「０」、「０」、「０」を特定する。
【００８５】
また、図１９に示す情報には、例えば、サーバ１ａ、１ｂ、１ｃ、１ｄ及び１ｅのそれぞれに対応するメモリ使用量として、それぞれ「２」、「１」、「２」、「１」及び「１」が設定されている。そのため、負荷判定部１１４は、例えば、サーバ１ａのメモリ使用量についての差として「１」、「０」、「１」、「１」を特定し、サーバ１ｂのメモリ使用量についての差として「−１」、「−１」、「０」、「０」を特定する。
【００８６】
また、図１９に示す情報には、例えば、サーバ１ａ、１ｂ、１ｃ、１ｄ及び１ｅのそれぞれに対応するスレッド使用数として、それぞれ「１」、「１」、「１」、「１」及び「１」が設定されている。そのため、負荷判定部１１４は、例えば、サーバ１ａのスレッド使用数についての差として「０」、「０」、「０」、「０」を特定し、サーバ１ｂのスレッド使用数についての差として「０」、「０」、「０」、「０」を特定する。
【００８７】
さらに、図１９に示す情報には、例えば、サーバ１ａ、１ｂ、１ｃ、１ｄ及び１ｅのそれぞれに対応する処理重度として、それぞれ「２」、「１」、「１」、「１」及び「１」が設定されている。そのため、負荷判定部１１４は、例えば、サーバ１ａの処理重度についての差として「１」、「１」、「１」、「１」を特定し、サーバ１ｂの処理重度についての差として「−１」、「０」、「０」、「０」を特定する。
【００８８】
図９に戻り、負荷判定部１１４は、Ｓ１５の処理で算出した差のそれぞれに基づいて、自サーバ１についての差に、所定値以上の値が含まれているか否かを判定する（Ｓ２１）。
【００８９】
具体的に、例えば、サーバ１ａのＣＰＵ使用率についての差として「２」、「２」、「２」、「２」が特定され、メモリ使用量についての差として「１」、「０」、「１」、「１」が特定され、スレッド使用数についての差として「０」、「０」、「０」、「０」が特定され、処理重度についての差として「１」、「１」、「１」、「１」が特定されている場合、負荷判定部１１４は、サーバ１ａについての差に、「１」以上の値が１つ以上含まれていると判定する。そのため、Ｓ２１の処理における所定値が「１」である場合、負荷判定部１１４は、サーバ１ａについての差に、所定値以上の値が含まれていると判定する。
【００９０】
一方、例えば、サーバ１ｂのＣＰＵ使用率についての差として「−２」、「０」、「０」、「０」が特定され、メモリ使用量についての差として「−１」、「−１」、「０」、「０」が特定され、スレッド使用数についての差として「０」、「０」、「０」、「０」が特定され、処理重度についての差として「−１」、「０」、「０」、「０」が特定されている場合、負荷判定部１１４は、サーバ１ｂについての差に、「１」以上の値が含まれていないと判定する。そのため、Ｓ２１の処理における所定値が「１」である場合、負荷判定部１１４は、サーバ１ｂについての差に、所定値以上の値が含まれていないと判定する。
【００９１】
そして、自サーバ１についての差に、所定値以上の値が含まれていないと判定した場合（Ｓ２２のＮＯ）、サーバ１のサーバ決定部１１５は、Ｓ１１の処理で受け付けたリクエストに対応する処理を自サーバ１で実行することを決定する（Ｓ２３）。
【００９２】
すなわち、サーバ決定部１１５は、この場合、自サーバ１が高負荷状態ではなく、Ｓ１１の処理で受け付けたリクエストに対応する処理を実行することが可能であると判定する。
【００９３】
一方、自サーバ１についての差に、所定値以上の値が含まれていると判定した場合（Ｓ２２のＹＥＳ）、負荷判定部１１４は、Ｓ１５の処理で算出した差のそれぞれに基づいて、他のサーバ１（自サーバ１以外のサーバ１）のうちの１台についての差に、所定値以上の値が含まれているか否かを判定する（Ｓ２４）。
【００９４】
その結果、他のサーバ１のうちの１台についての差に、所定値以上の値が含まれていないと判定した場合（Ｓ２５のＮＯ）、サーバ決定部１１５は、Ｓ１１の処理で受け付けたリクエストに対応する処理の実行を、Ｓ２４の処理で判定を行った他のサーバ１に依頼する（Ｓ２６）。
【００９５】
すなわち、サーバ決定部１１５は、自サーバ１が高負荷状態であると判定した場合、例えば、Ｓ１１の処理で受け付けたリクエストに対応する処理の実行を、高負荷状態でない他のサーバ１に依頼する。
【００９６】
具体的に、Ｓ２１の処理における所定値が「１」である場合において、サーバ１ｂについての差に「１」以上の値が含まれていないと判定した場合、サーバ決定部１１５は、例えば、Ｓ１１の処理で受け付けたリクエストに対応する処理の実行をサーバ１ｂに依頼する。そして、情報管理部１１７は、この場合、Ｓ１１の処理で受け付けたリクエストに対応する処理をサーバ１ｂが実行することを示す情報を、情報格納領域１３０に記憶された第１対応情報１３１ａ及び第２対応情報１３１ｂに反映する。
【００９７】
なお、Ｓ１１の処理で受け付けたリクエストに対応する処理の実行を依頼可能なサーバ１が複数存在する場合、サーバ決定部１１５は、複数存在したサーバ１のうち、現在の負荷が最も低いサーバ１に対して処理の実行を依頼するものであってよい。
【００９８】
また、サーバ決定部１１５は、例えば、Ｓ１１の処理で受け付けたリクエストに対応する処理の実行を他のサーバ１に依頼する場合であって、Ｓ１１の処理で受け付けたリクエストに対応する処理の実行を既に開始している場合、Ｓ１１の処理で受け付けたリクエストに対応する処理に含まれる操作のうち、実行中の操作の次以降に実行される操作の実行を他のサーバ１に依頼するものであってもよい。
【００９９】
そして、サーバ決定部１１５は、この場合、例えば、図２０の下線部分に示すように、図１５で説明した第１対応情報１３１ａに含まれる情報のうち、Ｓ１１の処理で受け付けたリクエストに対応する処理の情報（「項番」が「１」である情報）の「サーバＩＤ」に、自サーバ１を示す情報と、自サーバ１が実行中の操作の次以降に実行される操作の実行を依頼する他のサーバ１を示す情報とを含む情報（図２０に示す例では「１ａ／１ｂ」）を設定する。
【０１００】
さらに、サーバ決定部１１５は、この場合、例えば、図２１の下線部分に示すように、図１６で説明した第２対応情報１３１ｂに含まれる情報のうち、他のサーバ１に実行を依頼する操作の情報（「項番」が「５」、「６」及び「７」である情報）の「サーバＩＤ」に、操作の実行を依頼する他のサーバ１を示す情報（図２１に示す例では「１ｂ」）を設定する。
【０１０１】
これにより、サーバ１は、他のサーバ１に実行を依頼した処理（操作）についての情報を対応情報１３１に反映することが可能になる。
【０１０２】
一方、他のサーバ１についての差に、所定値以上の値が含まれていると判定した場合（Ｓ２５のＹＥＳ）、負荷判定部１１４は、図１０に示すように、Ｓ２４の処理において他のサーバ１の全てについての判定を行ったか否かを判定する（Ｓ３１）。
【０１０３】
その結果、他のサーバ１の全てについての判定を行っていない場合（Ｓ３１のＮＯ）、負荷判定部１１４は、Ｓ２４以降の処理を再度行う。
【０１０４】
一方、他のサーバ１の全てについての判定を行っている場合（Ｓ３１のＹＥＳ）、サーバ決定部１１５は、新たなサーバ１の追加を管理サーバ（図示しない）に指示する（Ｓ３２）。そして、サーバ決定部１１５は、新たなサーバ１の追加が完了するまで待機する（Ｓ３３のＮＯ）。
【０１０５】
すなわち、他のサーバ１の全てが高負荷であるために、Ｓ１１の処理で受け付けたリクエストに対応する処理を実行可能なサーバ１が存在しないと判定した場合、サーバ決定部１１５は、新たなサーバ１の追加を管理サーバに依頼する。
【０１０６】
そして、新たなサーバ１の追加が完了した場合（Ｓ３３のＹＥＳ）、サーバ決定部１１５は、Ｓ１１の処理で受け付けたリクエストに対応する処理の実行を、Ｓ３３の処理で追加が完了した新たなサーバ１に依頼する（Ｓ３４）。
【０１０７】
これにより、各サーバ１は、自サーバ１の状態が高負荷であると判定した場合、Ｓ１１の処理で受け付けたリクエストに対応する処理の実行を他のサーバ１（高負荷でないサーバ１）に依頼することが可能になる。そのため、事業者は、各サーバ１の処理負担を平準化させることが可能になる。
【０１０８】
［処理の実行とともに行われるサーバ変更処理］
次に、処理の実行とともに行われるサーバ変更処理について説明を行う。
【０１０９】
サーバ１の処理実行部１１２は、図１１に示すように、処理実行タイミングになるまで待機する（Ｓ４１のＮＯ）。
【０１１０】
そして、処理実行タイミングになった場合（Ｓ４１のＹＥＳ）、処理実行部１１２は、Ｓ２３の処理、Ｓ２６の処理、Ｓ３４の処理、Ｓ５３の処理、Ｓ５６の処理、Ｓ６４の処理及びＳ７３の処理（以下、Ｓ２３の処理等とも呼ぶ）で自サーバ１が実行することを決定した処理が存在するか否かを判定する（Ｓ４２）。
【０１１１】
すなわち、処理実行部１１２は、例えば、ロードバランサ２や他のサーバ１によって自サーバ１が実行すべき処理として決定された処理のうち、実行がまだ完了していない処理が存在するか否かを判定する。Ｓ５３の処理、Ｓ５６の処理、Ｓ６４の処理及びＳ７３の処理についての説明は後述する。
【０１１２】
その結果、処理が存在すると判定した場合（Ｓ４３のＹＥＳ）、処理実行部１１２は、Ｓ４２の処理で存在すると判定した処理を実行する（Ｓ４４）。
【０１１３】
具体的に、処理実行部１１２は、この場合、Ｓ４２の処理で存在すると判定した処理に含まれる各操作を順に実行する。そして、処理実行部１１２は、各操作の実行が完了した場合、図２２の下線部分に示すように、例えば、図１６で説明した第２対応情報１３１ｂに含まれる情報のうち、実行が完了した操作に対応する情報（図２２に示す例では「項番」が「３」である情報）の「ステータス」を「処理中」から「処理完了」に更新し、「操作完了日時」に操作の実行が完了した日時（図２２に示す例では「２０１８／０４／１０  ０７:５４：０５」）を設定する。その後、処理実行部１１２は、新たな操作の実行を開始した場合、図２３の下線部分に示すように、例えば、図１６で説明した第２対応情報１３１ｂに含まれる情報のうち、新たに実行を開始する操作に対応する情報（図２３に示す例では「項番」が「５」である情報）の「ステータス」を「未処理」から「処理中」に更新し、「操作開始日時」に操作の実行を開始した日時（図２３に示す例では「２０１８／０４／１０  ０７:４６：１７」）を設定する。
【０１１４】
一方、処理が存在しないと判定した場合（Ｓ４３のＹＥＳ）、処理実行部１１２は、Ｓ４４の処理を行わない。
【０１１５】
続いて、負荷判定部１１４は、情報格納領域１３０に記憶された対応情報１３１を参照し、複数のサーバ１のそれぞれに対応する各処理の負荷の合計値を特定する（Ｓ４５）。
【０１１６】
具体的に、負荷判定部１１４は、Ｓ１４の処理で説明した場合と同様に、情報格納領域１３０に記憶された第３対応情報１３１ｃを参照し、各サーバ１に対応する情報の「ＣＰＵ使用率」、「メモリ使用量」、「スレッド使用数」及び「負荷重度」に設定された情報（合計値）をそれぞれ特定するものであってよい。
【０１１７】
すなわち、サーバ１は、ロードバランサ２から送信されたリクエストを受け付けた場合のみでなく、定期的なタイミングにおいてもＳ１４以降の処理と同じ処理を行う。
【０１１８】
これにより、サーバ１は、ロードバランサ２からリクエストを受け付けていないタイミングであっても、自サーバ１が高負荷であると判定した場合に、自サーバ１が実行する処理として決定している処理の実行を他のサーバ１に依頼することが可能になる。
【０１１９】
そして、負荷判定部１１４は、Ｓ４５の処理で特定した合計値に基づいて、各サーバ１間における合計値の差をそれぞれ算出する（Ｓ４６）。
【０１２０】
その後、負荷判定部１１４は、図１２に示すように、Ｓ４６の処理で算出した差のそれぞれに基づいて、自サーバ１についての差に、所定値以上の値が含まれているか否かを判定する（Ｓ５１）。
【０１２１】
そして、自サーバ１についての差に、所定値以上の値が含まれていないと判定した場合（Ｓ５２のＮＯ）、サーバ決定部１１５は、自サーバ１に対応付けられた処理の実行を他のサーバ１に依頼しないことを決定する（Ｓ５３）。
【０１２２】
すなわち、サーバ決定部１１５は、この場合、自サーバ１が高負荷状態ではないため、Ｓ４２の処理で存在すると判定した処理の実行を現段階では他のサーバ１に依頼しないことの決定を行う。
【０１２３】
一方、自サーバ１についての差に、所定値以上の値が含まれていると判定した場合（Ｓ５２のＹＥＳ）、負荷判定部１１４は、Ｓ４６の処理で算出した差のそれぞれに基づいて、他のサーバ１のうちの１台についての差に、所定値以上の値が含まれているか否かを判定する（Ｓ５４）。
【０１２４】
その結果、他のサーバ１のうちの１台についての差に、所定値以上の値が含まれていないと判定した場合（Ｓ５５のＮＯ）、サーバ決定部１１５は、自サーバ１に対応付けられた処理（Ｓ４２の処理で存在すると判定した処理）の実行を、Ｓ５４の処理で判定を行った他のサーバ１に依頼する（Ｓ５６）。
【０１２５】
すなわち、サーバ決定部１１５は、この場合、自サーバ１が高負荷状態であるため、Ｓ４２の処理で存在すると判定した処理の実行を、Ｓ５４の処理で判定を行った他のサーバ１に依頼する。
【０１２６】
具体的に、サーバ決定部１１５は、この場合、例えば、Ｓ４２の処理で存在すると判定した処理のうちの処理重度が最も大きい処理の実行を、Ｓ５４の処理で判定を行った他のサーバ１に依頼する。
【０１２７】
なお、Ｓ４２の処理で存在すると判定した処理の実行を他のサーバ１に依頼したにもかかわらず、自サーバ１についての差に依然として所定値以上の値が含まれている場合、サーバ決定部１１５は、次の処理実行タイミングにおいて、Ｓ４２の処理で存在すると判定した他の処理の実行を他のサーバ１に対して再度依頼することになる。そのため、サーバ１は、結果として、自サーバ１についての差に所定値以上の値が含まれていないと判定されるまで、他のサーバ１に対する処理の実行の依頼を繰り返す。
【０１２８】
一方、他のサーバ１のうちの１台についての差に、所定値以上の値が含まれていると判定した場合（Ｓ５５のＹＥＳ）、負荷判定部１１４は、図１３に示すように、Ｓ５４の処理において他のサーバ１の全てについての判定を行ったか否かを判定する（Ｓ６１）。
【０１２９】
その結果、他のサーバ１の全てについての判定を行っていない場合（Ｓ６１のＮＯ）、負荷判定部１１４は、Ｓ５４以降の処理を再度行う。
【０１３０】
また、他のサーバ１の全てについての判定を行っている場合（Ｓ６１のＹＥＳ）、サーバ決定部１１５は、新たなサーバ１の追加を管理サーバ（図示しない）に指示する（Ｓ６２）。そして、サーバ決定部１１５は、新たなサーバ１の追加が完了するまで待機する（Ｓ６３のＮＯ）。
【０１３１】
そして、新たなサーバ１の追加が完了した場合（Ｓ６３のＹＥＳ）、サーバ決定部１１５は、自サーバ１に対応付けられた処理の実行を、Ｓ６３の処理で追加が完了した新たなサーバ１に依頼する（Ｓ６４）。
【０１３２】
具体的に、サーバ決定部１１５は、この場合、例えば、Ｓ４２の処理で存在すると判定した処理のうちの処理重度が最も大きい処理の実行を、Ｓ６３の処理で追加が完了した新たなサーバ１に依頼する。
【０１３３】
これにより、各サーバ１は、自サーバ１の状態が高負荷であると判定した場合に、自サーバ１に対応付けられた処理の実行を他のサーバ１（新たに追加されたサーバ１）に依頼することが可能になる。そのため、事業者は、各サーバ１の処理負担を平準化させることが可能になる。
【０１３４】
続いて、Ｓ５３の処理、または、Ｓ６４の処理の後、サーバ１の異常判定部１１６は、図１４に示すように、情報格納領域１３０に記憶されたサーバ稼働情報１３２を参照し、処理の実行を停止している他のサーバ１が存在するか否かを判定する（Ｓ７１）。以下、サーバ稼働情報１３２の具体例について説明を行う。
【０１３５】
［サーバ稼働情報の具体例］
図２４及び図２５は、サーバ稼働情報１３２の具体例を説明する図である。
【０１３６】
図２４等に示すサーバ稼働情報１３２は、サーバ稼働情報１３２に含まれる各情報を識別する「項番」と、各サーバ１の識別情報が設定される「サーバＩＤ」とを項目として有する。
【０１３７】
具体的に、図２４に示すサーバ稼働情報１３２において、「項番」が「１」から「５」である情報の「サーバＩＤ」には、それぞれ「１ａ」、「１ｂ」、「１ｃ」、「１ｄ」及び「１ｅ」が設定されている。すなわち、図２４に示すサーバ稼働情報１３２は、サーバ１ａ、１ｂ、１ｃ、１ｄ及び１ｅのそれぞれが処理の実行を継続していることを示している。
【０１３８】
なお、サーバ稼働情報１３２は、例えば、各サーバ１によってアクセスされるデータを格納するデータベース（図示しない）とセッションが接続しているサーバ１を示す情報であり、データベースによって更新される情報であってよい。そして、例えば、サーバ１ａにおいて異常が発生し、サーバ１ａとデータベースとの間のセッションが切断された場合、データベースは、図２５の下線部分に示すように、図２４で説明したサーバ稼働情報１３２に含まれる情報から、「サーバＩＤ」が「１ａ」である情報（「項番」が「１」である情報）を削除する。
【０１３９】
これにより、異常判定部１１６は、情報格納領域１３０に記憶されたサーバ稼働情報１３２を参照することで、処理の実行を停止しているサーバ１が存在するか否かの判定を行うことが可能になる。
【０１４０】
図１４に戻り、処理の実行を停止している他のサーバ１が存在すると判定した場合（Ｓ７２のＹＥＳ）、処理実行部１１２は、Ｓ７１の処理で停止していると判定した他のサーバ１に対応付けられた処理の実行を引き継ぐ（Ｓ７３）。
【０１４１】
一方、処理の実行を停止している他のサーバ１が存在しないと判定した場合（Ｓ７２のＮＯ）、処理実行部１１２は、Ｓ７３の処理を行わない。
【０１４２】
ここで、Ｓ７１の処理で停止していると判定した他のサーバ１は、何らかの異常が発生したことによって処理を停止した可能性がある。そのため、処理実行部１１２は、例えば、図１６で説明した第２対応情報１３１ｂを参照し、Ｓ７１の処理で停止していると判定した他のサーバ１に対応付けられた各処理に含まれる各操作のうち、「ステータス」に「未処理」が設定された操作だけでなく、「ステータス」に「処理中」が設定された操作の実行についても引き継ぐ必要がある。
【０１４３】
したがって、処理実行部１１２は、この場合、Ｓ７１の処理で停止していると判定した他のサーバ１に対応付けられた操作のうち、「ステータス」に「処理中」が設定された操作のロールバックを行う。その後、処理実行部１１２は、Ｓ７１の処理で停止していると判定した他のサーバ１に対応付けられた操作のうち、「ステータス」に「未処理」が設定された操作と、「ステータス」に「処理中」が設定された操作との実行を行う。
【０１４４】
また、処理実行部１１２は、この場合、例えば、図２６の下線部分に示すように、図１５で説明した第１対応情報１３１ａに含まれる情報のうち、自サーバ１が実行を引き継ぐ処理の情報（図２６に示す例では「項番」が「１」である情報）の「サーバＩＤ」に、Ｓ７１の処理で停止していると判定した他のサーバ１を示す情報と、自サーバ１を示す情報とを含む情報（図２６に示す例では「１ａ／１ｂ」）を設定する。
【０１４５】
また、処理実行部１１２は、例えば、図２７の下線部分に示すように、図１６で説明した第２対応情報１３１ｂに含まれる情報のうち、Ｓ７１の処理で停止していると判定した他のサーバ１に対応付けられた操作であって、「ステータス」に「処理中」が設定された操作の情報（図２７に示す例では「項番」が「３」及び「４」である情報）の「ステータス」を「未処理」を更新し、「操作開始日時」に「−」を設定する。
【０１４６】
さらに、処理実行部１１２は、例えば、図２７の下線部分に示すように、図１６で説明した第２対応情報１３１ｂに含まれる情報のうち、Ｓ７１の処理で停止していると判定した他のサーバ１に対応付けられた操作であって、「ステータス」に「処理中」または「未処理」が設定された操作の情報（図２７に示す例では「項番」が「３」から「７」である情報）の「サーバＩＤ」に、自サーバ１を示す情報（図２７に示す例では「１ｂ」）を設定する。
【０１４７】
これにより、各サーバ１は、異常の発生等によって処理の実行を停止しているサーバ１が発生した場合であっても、利用者が送信したリクエストに対応する処理の実行を継続することが可能になり、利用者に対するサービスに影響が及ぶことを防止することが可能になる。
【０１４８】
このように、本実施の形態における各サーバ１は、ロードバランサ２によって自サーバ１に割り当てられたリクエストを実行するための複数の処理を特定する。そして、各サーバ１は、特定した複数の処理ごとの負荷の情報と、自サーバ１との対応情報１３１を情報格納領域１３０に記憶する。
【０１４９】
その後、各サーバ１は、対応情報１３１を記憶した情報格納領域１３０を参照し、複数のサーバ１のそれぞれに対応する各処理の負荷の合計値を特定し、自サーバ１に対応する合計値と他のサーバ１に対応する合計値との差のうちの少なくとも１つが所定値以上であるか否かを判定する。
【０１５０】
その結果、自サーバ１に対応する合計値と他のサーバ１に対応する合計値との差のうちの少なくとも１つが所定値以上であると判定した場合、各サーバ１は、所定値以上であると判定した差が所定値未満となるように、自サーバ１に対応付けられた処理を実行するサーバ１を変更し、かつ、対応情報１３１を更新する。
【０１５１】
すなわち、本実施の形態における各サーバ１は、例えば、各サーバ１の処理負荷の状態を示す対応情報を随時更新する。そして、各サーバ１は、対応情報１３１を記憶した情報格納領域１３０を参照し、自サーバ１が高負荷であると判定した場合、ロードバランサ２から受け付けたリクエストに対応する処理を他のサーバ１に引き継ぐ。
【０１５２】
これにより、各サーバ１は、各サーバ１の現在の状態を反映した対応情報１３１を参照することで、自サーバ１の状態が他のサーバ１の状態と比較して高負荷であるか否かの判定を行うことが可能になる。そのため、各サーバ１は、自サーバ１の状態が他のサーバ１の状態と比較して高負荷であると判定した場合、自サーバ１に割り当てられたリクエストに対応する処理の実行を他のサーバ１（高負荷でないサーバ１）に依頼する旨の決定を行うことが可能になる。したがって、各サーバ１は、自サーバ１に割り当てられたリクエストに対応する処理の実行を、適切なタイミングにおいて他のサーバ１に依頼することが可能になり、各サーバ１の処理負担を平準化させることが可能になる。
【０１５３】
以上の実施の形態をまとめると、以下の付記のとおりである。
【０１５４】
（付記１）
ロードバランサによって割り当てられたリクエストを個々に実行する複数のサーバのそれぞれで実行されるプログラムであって、
自サーバに割り当てられた前記リクエストを実行するための複数の処理を特定し、
特定した前記複数の処理ごとの負荷の情報と、前記自サーバとの対応情報を記憶部に記憶し、
前記対応情報を記憶した記憶部を参照し、前記複数のサーバのそれぞれに対応する各処理の負荷の合計値を特定し、前記自サーバに対応する前記合計値と他のサーバに対応する合計値との差のうちの少なくとも１つが所定値以上であるか否かを判定し、
前記差のうちの少なくとも１つが前記所定値以上であると判定した場合、前記所定値以上であると判定した前記差が前記所定値未満となるように、前記自サーバに対応付けられた処理を実行するサーバを変更し、かつ、前記対応情報を更新する、
処理をコンピュータに実行させることを特徴する情報処理プログラム。
【０１５５】
（付記２）
付記１において、
前記判定する処理は、前記ロードバランサから前記自サーバに対して新たなリクエストが割り当てられたことに応じて行われる、
ことを特徴する情報処理プログラム。
【０１５６】
（付記３）
付記１において、
前記判定する処理は、定期的なタイミングにおいて行われる、
ことを特徴する情報処理プログラム。
【０１５７】
（付記４）
付記１において、
前記更新する処理では、前記差のうちの少なくとも１つが前記所定値以上である場合、前記自サーバに対応付けられた処理のうちの少なくとも１つの実行を他のサーバに依頼する、
ことを特徴する情報処理プログラム。
【０１５８】
（付記５）
付記１において、さらに、
前記複数のサーバのうち、異常が発生している他のサーバが存在するか否かを判定し、
前記異常が発生している他のサーバが存在すると判定した場合、前記対応情報を記憶した記憶部を参照し、前記他のサーバが実行中であった処理と前記他のサーバが実行中であった処理の後に実行する処理とを実行する、
処理をコンピュータに実行させることを特徴する情報処理プログラム。
【０１５９】
（付記６）
付記５において、
前記異常が発生している他のサーバが存在するか否かを判定する処理では、前記記憶部とのセッションが切断されている他のサーバが存在するか否かの判定を行い、
前記他のサーバが実行中であった処理と前記他のサーバが実行中であった処理の後に実行する処理とを実行する処理では、前記セッションが切断されている他のサーバが存在すると判定した場合、前記セッションが切断されていると判定した他のサーバに対応する処理を実行する、
ことを特徴する情報処理プログラム。
【０１６０】
（付記７）
ロードバランサによって割り当てられたリクエストを個々に実行する複数の情報処理装置のうちの一の情報処理装置であって、
自装置に割り当てられた前記リクエストを実行するための複数の処理を特定する処理特定部と、
特定した前記複数の処理ごとの負荷の情報と、前記自装置との対応情報を記憶する記憶部と、
前記対応情報を記憶した記憶部を参照し、前記複数の情報処理装置のそれぞれに対応する各処理の負荷の合計値を特定し、前記自装置に対応する前記合計値と他の装置に対応する合計値との差のうちの少なくとも１つが所定値以上であるか否かを判定する負荷判定部と、
前記差のうちの少なくとも１つが前記所定値以上であると判定した場合、前記所定値以上であると判定した前記差が前記所定値未満となるように、前記自装置に対応付けられた処理を実行する情報処理装置を変更し、かつ、前記対応情報を更新する装置決定部と、を有する、
ことを特徴する情報処理装置。
【０１６１】
（付記８）
付記７において、さらに、
前記複数の情報処理装置のうち、異常が発生している他の装置が存在するか否かを判定し、
前記異常が発生している他の装置が存在すると判定した場合、前記対応情報を記憶した記憶部を参照し、前記他の装置が実行中であった処理と前記他の装置が実行中であった処理の後に実行する処理とを実行する、
ことを特徴する情報処理装置。
【０１６２】
（付記９）
ロードバランサによって割り当てられたリクエストを個々に実行する複数のサーバのそれぞれで実行される情報処理方法であって、
自サーバに割り当てられた前記リクエストを実行するための複数の処理を特定し、
特定した前記複数の処理ごとの負荷の情報と、前記自サーバとの対応情報を記憶部に記憶し、
前記対応情報を記憶した記憶部を参照し、前記複数のサーバのそれぞれに対応する各処理の負荷の合計値を特定し、前記自サーバに対応する前記合計値と他のサーバに対応する合計値との差のうちの少なくとも１つが所定値以上であるか否かを判定し、
前記差のうちの少なくとも１つが前記所定値以上であると判定した場合、前記所定値以上であると判定した前記差が前記所定値未満となるように、前記自サーバに対応付けられた処理を実行するサーバを変更し、かつ、前記対応情報を更新する、
ことを特徴する情報処理方法。
【０１６３】
（付記１０）
付記９において、さらに、
前記複数のサーバのうち、異常が発生している他のサーバが存在するか否かを判定し、
前記異常が発生している他のサーバが存在すると判定した場合、前記対応情報を記憶した記憶部を参照し、前記他のサーバが実行中であった処理と前記他のサーバが実行中であった処理の後に実行する処理とを実行する、
ことを特徴する情報処理方法。
【符号の説明】
【０１６４】
１ａ：サーバ              １ｂ：サーバ
１ｃ：サーバ              １ｄ：サーバ
２：ロードバランサ        ３：操作端末
【図１】
2019191924.tif 000003
【図２】
2019191924.tif 000004
【図３】
2019191924.tif 000005
【図４】
2019191924.tif 000006
【図５】
2019191924.tif 000007
【図６】
2019191924.tif 000008
【図７】
2019191924.tif 000009
【図８】
2019191924.tif 000010
【図９】
2019191924.tif 000011
【図１０】
2019191924.tif 000012
【図１１】
2019191924.tif 000013
【図１２】
2019191924.tif 000014
【図１３】
2019191924.tif 000015
【図１４】
2019191924.tif 000016
【図１５】
2019191924.tif 000017
【図１６】
2019191924.tif 000018
【図１７】
2019191924.tif 000019
【図１８】
2019191924.tif 000020
【図１９】
2019191924.tif 000021
【図２０】
2019191924.tif 000022
【図２１】
2019191924.tif 000023
【図２２】
2019191924.tif 000024
【図２３】
2019191924.tif 000025
【図２４】
2019191924.tif 000026
【図２５】
2019191924.tif 000027
【図２６】
2019191924.tif 000028
【図２７】
2019191924.tif 000029