(57)【要約】【課題】実行中のトランザクションに影響を与えず、かつ、迅速にスケールイン処理を実行することを可能とするスケールイン管理プログラム、スケールイン管理装置及びスケールイン管理方法を提供する。【解決手段】データベースのプロキシサーバのスケールイン指示の受付に応じ、アプリケーションの種類ごとに蓄積されたトランザクションの実行時間を参照して、プロキシサーバにおいて実行中のトランザクションの完了予想時間を通知し、所定の通知の受付に応じ、プロキシサーバにおいて、新規のコネクション接続の受付を中止し、所定の通知の受付以降にトランザクションの終了が検知された場合は、接続中のコネクションを切断し、プロキシサーバのすべてのコネクション切断に応じ、プロキシサーバのスケールイン処理を実行する。【選択図】図８
2018200585.tif 000002
【特許請求の範囲】
【請求項１】
データベースのプロキシサーバのスケールイン指示の受付に応じ、アプリケーションの種類ごとに蓄積されたトランザクションの実行時間を参照して、前記プロキシサーバにおいて実行中のトランザクションの完了予想時間を通知し、
所定の通知の受付に応じ、前記プロキシサーバにおいて、新規のコネクション接続の受付を中止し、
前記所定の通知の受付以降にトランザクションの終了が検知された場合は、接続中のコネクションを切断し、
前記プロキシサーバのすべてのコネクション切断に応じ、前記プロキシサーバのスケールイン処理を実行する、
処理をコンピュータに実行させるスケールイン管理プログラム。
【請求項２】
請求項１に記載のスケールイン管理プログラムにおいて、
前記所定の通知は、前記プロキシサーバを含む複数のプロキシサーバから通知された前記完了予想時間に基づき前記プロキシサーバが選択されたことを示す通知である、
スケールイン管理プログラム。
【請求項３】
請求項１に記載のスケールイン管理プログラムにおいて、
前記通知する処理では、
前記アプリケーションの種類ごとに、各アプリケーションの種類に対応するトランザクションの実行時間のうち、最長の実行時間を特定し、
実行中のトランザクションごとに、各トランザクションに対応するアプリケーションの種類に対応する前記最長の実行時間から、各トランザクションの実行開始から現在までの経過時間を減算した時間を、前記完了予想時間として算出し、
算出した前記完了予想時間の通知を行う、
スケールイン管理プログラム。
【請求項４】
請求項１に記載のスケールイン管理プログラムにおいて、さらに、
アプリケーションの種類ごとにトランザクションの実行時間を記憶部に蓄積する、
処理を前記プロキシサーバに実行させ、
前記通知する処理では、前記記憶部に記憶された前記実行時間を参照して、前記完了予想時間の通知を行う、
スケールイン管理プログラム。
【請求項５】
請求項１に記載のスケールイン管理プログラムにおいて、さらに、
前記スケールイン指示の受付に応じ、新規のコネクション接続の受付を保留する、
処理をコンピュータに実行させるスケールイン管理プログラム。
【請求項６】
請求項５に記載のスケールイン管理プログラムにおいて、さらに、
前記完了予想時間に基づき他のプロキシサーバが選択されたことを示す通知の受付に応じ、新規のコネクション接続の受付を再開する、
処理をコンピュータに実行させるスケールイン管理プログラム。
【請求項７】
請求項２に記載のスケールイン管理プログラムにおいて、
前記複数のプロキシサーバと通信を行う管理サーバは、
所定の条件が満たされた場合に、前記スケールイン指示を前記複数のプロキシサーバに通知し、
前記完了予想時間の受付に応じ、前記完了予想時間に基づいてスケールイン対象のプロキシサーバを特定し、
特定した前記プロキシサーバに対し、特定した前記プロキシサーバが選択されたことを通知する、
スケールイン管理プログラム。
【請求項８】
請求項７に記載のスケールイン管理プログラムにおいて、
前記管理サーバは、前記複数のプロキシサーバのうち、最短の完了予想時間を通知したプロキシサーバを前記スケールイン対象のプロキシサーバとして特定する、
スケールイン管理プログラム。
【請求項９】
請求項７に記載のスケールイン管理プログラムにおいて、
前記管理サーバは、前記スケールイン対象のプロキシサーバの特定の後、前記複数のプロキシサーバのうち、特定された前記プロキシサーバ以外のプロキシサーバに対し、他のプロキシサーバが選択されたことを通知する、
スケールイン管理プログラム。
【請求項１０】
請求項７に記載のスケールイン管理プログラムにおいて、
前記スケールイン処理を実行する処理では、
前記プロキシサーバのすべてのコネクション切断に応じ、前記プロキシサーバのスケールインの実行を前記管理サーバに指示する、
スケールイン管理プログラム。
【請求項１１】
データベースのプロキシサーバのスケールイン指示の受付に応じ、アプリケーションの種類ごとに蓄積されたトランザクションの実行時間を参照して、前記プロキシサーバにおいて実行中のトランザクションの第１完了予想時間を算出し、
算出した前記第１完了予想時間を他のプロキシサーバに通知し、
算出した前記第１完了予想時間と、前記他のプロキシサーバから受け付けた第２完了予想時間とに基づき、前記プロキシサーバまたは前記他のプロキシサーバを選択し、
前記プロキシサーバを選択した場合、前記プロキシサーバにおいて、新規のコネクション接続の受付を中止し、かつ、トランザクションが終了した接続中のコネクションを切断し、
前記プロキシサーバのすべてのコネクション切断に応じ、前記プロキシサーバのスケールイン処理を実行する、
処理をコンピュータに実行させるスケールイン管理プログラム。
【請求項１２】
請求項１１に記載のスケールイン管理プログラムにおいて、
前記切断する処理では、前記第１完了予想時間と前記第２完了予想時間とのうち、最短の完了予想時間に対応するプロキシサーバを選択する、
スケールイン管理プログラム。
【請求項１３】
データベースのプロキシサーバのスケールイン指示の受付に応じ、アプリケーションの種類ごとに蓄積されたトランザクションの実行時間を参照して、前記プロキシサーバにおいて実行中のトランザクションの完了予想時間を通知する時間通知部と、
所定の通知の受付に応じ、前記プロキシサーバにおいて、新規のコネクション接続の受付を中止する接続中止部と、
前記所定の通知の受付以降にトランザクションの終了が検知された場合は、接続中のコネクションを切断する接続切断部と、
前記プロキシサーバのすべてのコネクション切断に応じ、前記プロキシサーバのスケールイン処理を実行するスケールイン実行部と、を有する、
スケールイン管理装置。
【請求項１４】
データベースのプロキシサーバのスケールイン指示の受付に応じ、アプリケーションの種類ごとに蓄積されたトランザクションの実行時間を参照して、前記プロキシサーバにおいて実行中のトランザクションの第１完了予想時間を算出する時間算出部と、
算出した前記第１完了予想時間を他のプロキシサーバに通知する時間通知部と、
算出した前記第１完了予想時間と、前記他のプロキシサーバから受け付けた第２完了予想時間とに基づき、前記プロキシサーバまたは前記他のプロキシサーバを選択し、
前記プロキシサーバを選択した場合、前記プロキシサーバにおいて、新規のコネクション接続の受付を中止する接続中止部と、
前記プロキシサーバを選択した場合、前記プロキシサーバにおいて、トランザクションが終了した接続中のコネクションを切断する接続切断部と、
前記プロキシサーバのすべてのコネクション切断に応じ、前記プロキシサーバのスケールイン処理を実行するスケールイン実行部と、を有する、
スケールイン管理装置。
【請求項１５】
データベースのプロキシサーバのスケールイン指示の受付に応じ、アプリケーションの種類ごとに蓄積されたトランザクションの実行時間を参照して、前記プロキシサーバにおいて実行中のトランザクションの完了予想時間を通知し、
所定の通知の受付に応じ、前記プロキシサーバにおいて、新規のコネクション接続の受付を中止し、
前記所定の通知の受付以降にトランザクションの終了が検知された場合は、接続中のコネクションを切断し、
前記プロキシサーバのすべてのコネクション切断に応じ、前記プロキシサーバのスケールイン処理を実行する、
スケールイン管理方法。
【請求項１６】
データベースのプロキシサーバのスケールイン指示の受付に応じ、アプリケーションの種類ごとに蓄積されたトランザクションの実行時間を参照して、前記プロキシサーバにおいて実行中のトランザクションの第１完了予想時間を算出し、
算出した前記第１完了予想時間を他のプロキシサーバに通知し、
算出した前記第１完了予想時間と、前記他のプロキシサーバから受け付けた第２完了予想時間とに基づき、前記プロキシサーバまたは前記他のプロキシサーバを選択し、
前記プロキシサーバを選択した場合、前記プロキシサーバにおいて、新規のコネクション接続の受付を中止し、かつ、トランザクションが終了した接続中のコネクションを切断し、
前記プロキシサーバのすべてのコネクション切断に応じ、前記プロキシサーバのスケールイン処理を実行する、
スケールイン管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、スケールイン管理プログラム、スケールイン管理装置及びスケールイン管理方法に関する。
【背景技術】
【０００２】
データベースが利用される業務システム（以下、情報処理システムとも呼ぶ）において、例えば、利用者にサービスを提供する事業者（以下、単に事業者とも呼ぶ）は、サービスの提供に用いられるデータを格納するデータベースを構成として含む業務システムの構築を行う。
【０００３】
上記のような業務システムには、例えば、互いに同期されたデータを記憶する複数のデータベースと、アプリケーションから送信されたクエリをいずれかのデータベースに振り分けるデータベース接続プロキシサーバ（以下、単にプロキシサーバとも呼ぶ）とが含まれる。この場合、プロキシサーバは、アプリケーションから受け付けたクエリの内容を解析し、解析結果に基づいてクエリの処理を行わせるデータベースを特定する。そして、プロキシサーバは、特定したデータベースに対して、アプリケーションから送信されたクエリの振り分けを行う。これにより、事業者は、データベースの負荷分散を行うことが可能になる（例えば、特許文献１乃至４参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００２−１６３２４１号公報
【特許文献２】特開２００３−２４８６６８号公報
【特許文献３】特表２０１３−５４４５６２号公報
【特許文献４】特開２００７−２２６８０２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上記のような業務システムにおいて、例えば、利用者から送信される処理要求が増加した場合、アプリケーションからプロキシサーバに送信されるクエリの数が増加し、プロキシサーバにおける処理負担が増大する。そのため、業務システムでは、利用者から送信される処理要求量によって、プロキシサーバにおける処理能力の限界が処理のボトルネックになる場合がある。
【０００６】
そこで、事業者は、例えば、プロキシサーバのスケールアウト（以下、スケールアウト処理とも呼ぶ）及びスケールイン（以下、スケールイン処理とも呼ぶ）を行う機能を業務システムに実装する。これにより、業務システムでは、例えば、アプリケーションから送信されるクエリの数が増加した場合に、プロキシサーバの数を増やすことが可能になる。そのため、事業者は、業務システムにおいてプロキシサーバがボトルネックとなることを防止することが可能になる。
【０００７】
ここで、プロキシサーバのスケールインが行われる場合、業務システムでは、実行中のトランザクションに悪影響が及ぶことを防止するため、スケールイン対象のプロキシサーバを経由するコネクションのすべてが切断されてからプロキシサーバのスケールインを開始する必要がある。そのため、業務システムでは、例えば、経由するコネクションの数が最も少ないプロキシサーバをスケールイン対象のプロキシサーバとして決定する。
【０００８】
しかしながら、経由するすべてのコネクションの切断に要する時間が最も短いプロキシサーバは、経由するコネクションの数が最も少ないプロキシサーバと必ずしも一致しない。そのため、業務システムでは、経由するコネクションの数が最も少ないプロキシサーバをスケールイン対象のプロキシサーバとして決定する場合、プロキシサーバのスケールインを迅速に行うことができない可能性がある。
【０００９】
そこで、一つの側面では、本発明は、実行中のトランザクションに影響を与えず、かつ、迅速にスケールイン処理を実行することを可能とするスケールイン管理プログラム、スケールイン管理装置及びスケールイン管理方法を提供することを目的とする。
【課題を解決するための手段】
【００１０】
実施の形態の一態様では、データベースのプロキシサーバのスケールイン指示の受付に応じ、アプリケーションの種類ごとに蓄積されたトランザクションの実行時間を参照して、前記プロキシサーバにおいて実行中のトランザクションの完了予想時間を通知し、所定の通知の受付に応じ、前記プロキシサーバにおいて、新規のコネクション接続の受付を中止し、前記所定の通知の受付以降にトランザクションの終了が検知された場合は、接続中のコネクションを切断し、前記プロキシサーバのすべてのコネクション切断に応じ、前記プロキシサーバのスケールイン処理を実行する、処理をコンピュータに実行させる。
【発明の効果】
【００１１】
一つの側面によれば、実行中のトランザクションに影響を与えず、かつ、迅速にスケールイン処理を実行することを可能とする。
【図面の簡単な説明】
【００１２】
【図１】図１は、情報処理システム１０の全体構成を示す図である。
【図２】図２は、情報処理装置１で動作する各仮想マシン３の機能を説明する図である。
【図３】図３は、情報処理装置１で動作する各仮想マシン３の機能を説明する図である。
【図４】図４は、情報処理装置１で動作する各仮想マシン３の機能を説明する図である。
【図５】図５は、情報処理装置１のハードウエア構成を示す図である。
【図６】図６は、情報処理装置１の機能ブロック図である。
【図７】図７は、情報処理装置１の機能ブロック図である。
【図８】図８は、第１の実施の形態におけるスケールイン処理の概略を説明するフローチャート図である。
【図９】図９は、第１の実施の形態におけるスケールイン処理の概略を説明する図である。
【図１０】図１０は、第１の実施の形態におけるスケールイン処理の概略を説明する図である。
【図１１】図１１は、第１の実施の形態におけるスケールイン処理の概略を説明する図である。
【図１２】図１２は、第１の実施の形態におけるスケールイン処理の概略を説明する図である。
【図１３】図１３は、第１の実施の形態におけるスケールイン処理の概略を説明する図である。
【図１４】図１４は、第１の実施の形態におけるスケールイン処理の概略を説明する図である。
【図１５】図１５は、第１の実施の形態におけるスケールイン処理の詳細を説明するフローチャート図である。
【図１６】図１６は、第１の実施の形態におけるスケールイン処理の詳細を説明するフローチャート図である。
【図１７】図１７は、第１の実施の形態におけるスケールイン処理の詳細を説明するフローチャート図である。
【図１８】図１８は、第１の実施の形態におけるスケールイン処理の詳細を説明するフローチャート図である。
【図１９】図１９は、第１の実施の形態におけるスケールイン処理の詳細を説明するフローチャート図である。
【図２０】図２０は、実行時間情報１３１の具体例を説明する図である。
【図２１】図２１は、実行時間情報１３１の具体例を説明する図である。
【図２２】図２２は、実行時間情報１３１の具体例を説明する図である。
【図２３】図２３は、実行時間情報１３１の具体例を説明する図である。
【図２４】図２４は、最長実行時間情報１３１ａの具体例を説明する図である。
【図２５】図２５は、完了予想時間情報１３２の具体例を説明する図である。
【図２６】図２６は、第２の実施の形態におけるスケールイン処理を説明するフローチャート図である。
【図２７】図２７は、第２の実施の形態におけるスケールイン処理を説明するフローチャート図である。
【図２８】図２８は、第２の実施の形態におけるスケールイン処理を説明するフローチャート図である。
【発明を実施するための形態】
【００１３】
［情報処理システムの構成］
図１は、情報処理システム１０の全体構成を示す図である。図１に示す情報処理システム１０は、例えば、利用者にサービスを提供するための業務システムである。図１に示す情報処理システム１０において、情報処理装置１がデータセンター（図示しない）内に設けられている。そして、事業者端末５は、インターネットやイントラネット等のネットワークを介して、データセンターとアクセス可能になっている。
【００１４】
情報処理装置１は、例えば、複数の物理マシンから構成される。各物理マシンは、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｃｏｍｐｕｔｉｎｇ  Ｕｎｉｔ）と、メモリ（ＤＲＡＭ：Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）と、ハードディスク（ＨＤＤ：Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）等の大容量メモリとを有する。そして、情報処理装置１の物理リソースは、利用者に対してサービスを提供するための各処理を実行する複数の仮想マシン３に割当てられる。
【００１５】
仮想化ソフトウエア４は、情報処理装置１のＣＰＵ、メモリ及びハードディスクを割当てることにより、仮想マシン３を動作させる基盤ソフトウエアである。仮想化ソフトウエア４は、例えば、情報処理装置１で動作する。
【００１６】
［情報処理装置で動作する各仮想マシンの機能］
次に、情報処理装置１で動作する各仮想マシン３の機能を説明する。図２から図４は、情報処理装置１で動作する各仮想マシン３の機能を説明する図である。
【００１７】
図２に示す情報処理装置１で動作する仮想マシン３には、管理サーバＭＮ、ロードバランサＬＢ１、アプリケーションＡＰ１、アプリケーションＡＰ２、アプリケーションＡＰ３及びプロキシサーバＰＲ１が含まれる。また、図２に示す情報処理装置１は、記憶装置（図示しない）において構築されたデータベースＤＢ１、データベースＤＢ２及びデータベースＤＢ３を有する。なお、以下、アプリケーションＡＰ１、ＡＰ２及びＡＰ３を総称してアプリケーションＡＰとも呼び、データベースＤＢ１、ＤＢ２及びＤＢ３を総称してデータベースＤＢとも呼ぶ。また、データベースＤＢが構築される記憶装置は、例えば、情報処理装置１の外部に設けられた記憶装置であってよい。
【００１８】
ロードバランサＬＢ１は、利用者が利用者端末（図示しない）を介して送信した処理要求を、アプリケーションＡＰのうちのいずれかに割り振る仮想マシンである。
【００１９】
アプリケーションＡＰは、ロードバランサＬＢ１によって割り振られた処理要求に対応する各処理（利用者に対してサービスの提供を行うための各処理）を実行する仮想マシンである。そして、アプリケーションＡＰは、各処理の実行時において、データベースＤＢに格納されたデータの参照や更新を行うためのクエリをデータベースＤＢに対して送信する。
【００２０】
具体的に、アプリケーションＡＰは、例えば、図３に示すように、トランザクションの開始を示すクエリ（以下、開始クエリとも呼ぶ）である「ＢＥＧＩＮ；」と、トランザクションの終了を示すクエリ（以下、終了クエリとも呼ぶ）である「ＣＯＭＭＩＴ；」とを含む複数のクエリ（以下、クエリ群とも呼ぶ）をデータベースＤＢに送信する。
【００２１】
プロキシサーバＰＲ１は、アプリケーションＡＰからデータベースＤＢに対して送信されたクエリの内容を解析し、解析結果に基づいてクエリの処理を行わせるデータベースＤＢの特定を行う。そして、プロキシサーバＰＲ１は、特定したデータベースＤＢに対してアプリケーションＡＰから送信されたクエリの振り分けを行う。
【００２２】
具体的に、プロキシサーバＰＲ１は、「ＢＥＧＩＮ；」と「ＣＯＭＭＩＴ；」とに囲まれたクエリ群ごとに、各データベースＤＢに対する振り分けを行う。そのため、アプリケーションＡＰから送信されたクエリ群が「ＢＥＧＩＮ；」と「ＣＯＭＭＩＴ；」との間にデータの参照を行うクエリのみが含まれるクエリ群である場合、プロキシサーバＰＲ１は、例えば、そのクエリ群を、データの参照のみを行うことが可能なデータベースＤＢに振り分ける。また、アプリケーションＡＰから送信されたクエリ群が「ＢＥＧＩＮ；」と「ＣＯＭＭＩＴ；」との間にデータの更新を行うクエリが含まれるクエリ群である場合、プロキシサーバＰＲ１は、例えば、そのクエリ群を、データの更新を行うことが可能なデータベースＤＢに振り分ける。
【００２３】
管理サーバＭＮは、情報処理装置１で動作する各仮想マシン３の管理を行う仮想マシンである。具体的に、管理サーバＭＮは、例えば、各仮想マシン３における処理状況の監視を行う。
【００２４】
上記のような情報処理装置１において、例えば、利用者によるサービスの利用量が一時的に増加した場合、プロキシサーバにおける処理能力（データベースＤＢに対する処理の振り分け能力）の限界が情報処理装置１における処理のボトルネックになる場合がある。
【００２５】
そこで、事業者は、例えば、プロキシサーバＰＲ１のスケールアウト及びスケールインを行う機能を情報処理装置１に実装する。具体的に、管理サーバＭＮは、利用者によるサービスの利用量が一時的に増加した場合、図４に示すように、プロキシサーバＰＲ２を生成する。また、管理サーバＭＮは、この場合、アプリケーションＡＰから送信されたクエリをプロキシサーバＰＲ１及びプロキシサーバＰＲ２（以下、これらを総称して単にプロキシサーバＰＲとも呼ぶ）に振り分ける仮想マシンであるロードバランサＬＢ２を生成する。
【００２６】
これにより、事業者は、プロキシサーバＰＲ１が情報処理装置１におけるボトルネックとなることを防止することが可能になる。
【００２７】
ここで、プロキシサーバＰＲのスケールインが行われる場合、情報処理装置１は、プロキシサーバＰＲのスケールインが実行中のトランザクションに影響を及ぼすことを防止するため、アプリケーションＡＰとデータベースＤＢとの間のコネクションのうち、スケールイン対象のプロキシサーバＰＲを経由するコネクションがすべて切断されてからスケールインを開始する必要がある。そのため、情報処理装置１は、例えば、経由するコネクションの数が最も少ないプロキシサーバＰＲをスケールイン対象のプロキシサーバＰＲとして決定する。
【００２８】
しかしながら、経由するすべてのコネクションが切断されるまでに要する時間が最も短いプロキシサーバＰＲは、経由するコネクションの数が最も少ないプロキシサーバＰＲと必ずしも一致しない。そのため、情報処理装置１は、経由するコネクションの数が最も少ないプロキシサーバＰＲをスケールイン対象のプロキシサーバＰＲとして決定する場合、プロキシサーバＰＲのスケールインを迅速に行うことができない可能性がある。
【００２９】
そこで、本実施の形態におけるプロキシサーバＰＲは、プロキシサーバＰＲのスケールイン指示の受付に応じ、アプリケーションＡＰの種類ごとに蓄積されたトランザクションの実行時間を参照して、自プロキシサーバＰＲにおいて実行中のトランザクションの完了予想時間を管理サーバＭＮに通知する。そして、プロキシサーバＰＲは、各プロキシサーバＰＲから通知された完了予想時間に基づいて自プロキシサーバＰＲが選択されたことを示す通知の受付に応じ、自プロキシサーバＰＲを経由する新規のコネクション接続の受付を中止し、かつ、トランザクションが終了した自プロキシサーバＲを経由する接続中のコネクションを切断する。その後、プロキシサーバＰＲは、自プロキシサーバＰＲのすべてのコネクション切断に応じ、自プロキシサーバＰＲのスケールインを行う。
【００３０】
すなわち、各プロキシサーバＰＲは、過去に実行された各トランザクションの実行時間を参照して、現在実行中のトランザクションの完了予想時間を予測する。そして、管理サーバＭＮは、各プロキシサーバＰＲが予測した完了予想時間に基づき、現在実行中のトランザクションのすべてが最も早く完了するプロキシサーバＰＲを特定（予測）し、特定したプロキシサーバＰＲに対してスケールインを行う旨を指示する。その後、スケールインを行う旨の指示を受け付けたプロキシサーバＰＲは、自プロキシサーバＰＲを経由するすべてのコネクションの切断が行われた後、自プロキシサーバＰＲのスケールインを行う。
【００３１】
これにより、情報処理装置１は、プロキシサーバＰＲのスケールインを、トランザクションに影響を与えず、かつ、迅速に行うことが可能になる。
【００３２】
［情報処理装置１のハードウエア構成］
次に、情報処理装置１のハードウエア構成について説明する。図５は、情報処理装置１のハードウエア構成を示す図である。
【００３３】
情報処理装置１は、プロセッサであるＣＰＵ１０１と、メモリ１０２と、外部インターフェース（以下、Ｉ／Ｏユニットとも呼ぶ）１０３と、記憶媒体１０４とを有する。各部は、バス１０５を介して互いに接続される。
【００３４】
記憶媒体１０４は、例えば、記憶媒体１０４内のプログラム格納領域（図示しない）に、プロキシサーバＰＲのスケールインを行う処理（以下、スケールイン処理とも呼ぶ）を行うためのプログラム１１０を記憶する。また、記憶媒体１０４は、例えば、スケールイン処理を行う際に用いられる情報を記憶する情報格納領域１３０（以下、記憶部１３０とも呼ぶ）を有する。
【００３５】
ＣＰＵ１０１は、プログラム１１０の実行時に、プログラム１１０を記憶媒体１０４からメモリ１０２にロードし、プログラム１１０と協働してスケールイン処理を行う。また、外部インターフェース１０３は、例えば、事業者端末５と通信を行う。
【００３６】
［情報処理装置の機能］
次に、情報処理装置１の機能について説明する。図６及び図７は、情報処理装置１の機能ブロック図である。
【００３７】
［プロキシサーバの機能］
初めに、情報処理装置１の機能のうち、プロキシサーバＰＲ（以下、スケールイン装置ＰＲとも呼ぶ）によって実現される機能について説明を行う。情報処理装置１のＣＰＵ１０１は、プログラム１１０と協働することにより、図６に示すように、プロキシサーバＰＲの機能として、情報蓄積部１１１と、情報受付部１１２と、時間算出部１１３と、時間通知部１１４として動作する。また、情報処理装置１のＣＰＵ１０１は、プログラム１１０と協働することにより、プロキシサーバＰＲの機能として、接続中止部１１５と、接続切断部１１６と、スケールイン実行部１１７と、接続再開部１１８として動作する。さらに、情報格納領域１３０には、例えば、実行時間情報１３１と、完了予想時間情報１３２とが記憶される。
【００３８】
情報蓄積部１１１は、アプリケーションＡＰ及びデータベースＤＢにおいてトランザクションが実行されるごとに、トランザクションの開始時刻や終了時刻を含む実行時間情報１３１を生成し、情報格納領域１３０に記憶する。
【００３９】
情報受付部１１２は、管理サーバＭＮからプロキシサーバＰＲのスケールイン指示を受け付ける。すなわち、情報受付部１１２は、この場合、自プロキシサーバＰＲがスケールイン対象の候補になったことを示す指示を受け付ける。
【００４０】
また、情報受付部１１２は、管理サーバＭＮから、各プロキシサーバＰＲから通知された完了予想時間に基づきスケールイン対象のプロキシサーバＰＲとして選択されたことを示す通知（以下、対象選択通知とも呼ぶ）を受け付ける。
【００４１】
さらに、情報受付部１１２は、管理サーバＭＮから、各プロキシサーバＰＲから通知された完了予想時間に基づきスケールイン対象のプロキシサーバＰＲとして選択されなかったことを示す通知（以下、対象外選択通知とも呼ぶ）を受け付ける。
【００４２】
時間算出部１１３は、情報受付部１１２がスケールイン指示を受け付けたことに応じて、アプリケーションＡＰの種類ごとに蓄積されたトランザクションの実行時間を参照して、プロキシサーバＰＲにおいて実行中のトランザクションの完了予想時間を算出する。
【００４３】
具体的に、時間算出部１１３は、情報格納領域１３０に記憶された実行時間情報１３１を参照し、アプリケーションＡＰの種類ごとに、各アプリケーションＡＰの種類に対応するトランザクションの実行時間のうち、最長の実行時間を特定する。そして、時間算出部１１３は、実行中のトランザクションごとに、各トランザクションに対応するアプリケーションの種類に対応する最長の実行時間から、各トランザクションの実行開始から現在までの経過時間を減算した時間を完了予想時間として算出する。その後、時間算出部１１３は、例えば、算出した完了予想時間を含む完了予想時間情報１３２を情報格納領域１３０に記憶する。
【００４４】
時間通知部１１４は、時間算出部１１３が算出した完了予想時間の通知を行う。具体的に、時間通知部１１４は、例えば、時間算出部１１３が算出した完了予想時間のうち、最長の完了予想時間を算出し、算出した完了予想時間の通知を行う。
【００４５】
接続中止部１１５は、情報受付部１１２が対象選択通知を受け付けた場合、新規のコネクションの接続の受け付けを中止する。具体的に、接続中止部１１５は、例えば、自プロキシサーバＰＲに対する新規のコネクションの接続指示を中止する旨の通知を、ロードバランサＬＢ２に対して行うものであってよい。また、接続中止部１１５は、例えば、情報受付部１１２がスケールイン指示を受け付けた場合に、新規のコネクション接続の受け付けを保留する。
【００４６】
接続切断部１１６は、情報受付部１１２による対象選択通知の受け付け以降、トランザクションが終了した接続中のコネクションを切断する。
【００４７】
スケールイン実行部１１７は、情報受付部１１２が対象選択通知を受け付けた後、すべてのコネクション切断に応じてスケールインを行う。この場合、スケールイン実行部１１７は、自プロキシサーバＰＲを終了してスケールインを完了するものであってよい。また、スケールイン実行部１１７は、管理サーバＭＮに対して、自プロキシサーバＰＲのスケールインを行う旨を通知するものであってもよい。
【００４８】
接続再開部１１８は、情報受付部１１２が対象外選択通知を受け付けた場合、保留している新規のコネクション接続の受け付けを再開する。
【００４９】
［管理サーバの機能］
次に、情報処理装置１の機能のうち、管理サーバＭＮによって実現される機能について説明を行う。情報処理装置１のＣＰＵ１０１は、プログラム１１０と協働することにより、図７に示すように、管理サーバＭＮの機能として、条件判定部１２１と、情報通知部１２２と、時間受付部１２３と、サーバ特定部１２４として動作する。
【００５０】
条件判定部１２１は、所定の条件が満たされたか否かの判定を行う。所定の条件は、例えば、情報処理装置１において動作しているプロキシサーバＰＲのＣＰＵの使用率が閾値（予め定めた閾値）を超えたことである。
【００５１】
情報通知部１２２は、条件判定部１２１が所定の条件が満たされたと判定した場合、スケールイン指示を各プロキシサーバＰＲに通知する。
【００５２】
時間受付部１２３は、各プロキシサーバＰＲが通知した完了予想時間を受け付ける。
【００５３】
サーバ特定部１２４は、例えば、時間受付部１２３がすべてのプロキシサーバＰＲから完了予想時間を受け付けたことに応じ、受け付けた完了予想時間に基づいてスケールイン対象のプロキシサーバを特定する。具体的に、サーバ特定部１２４は、完了予想時間を通知したプロキシサーバＰＲのうち、最短の完了予想時間を通知したプロキシサーバＰＲを、スケールイン対象のプロキシサーバＰＲとして特定する。
【００５４】
そして、情報通知部１２２は、サーバ特定部１２４がスケールイン対象のプロキシサーバＰＲを特定した場合、完了予想時間を送信したプロキシサーバＰＲのうち、サーバ特定部１２４が特定したプロキシサーバＰＲに対して対象選択通知を行う。また、情報通知部１２２は、この場合、完了予想時間を送信したプロキシサーバＰＲのうち、サーバ特定部１２４が特定しなかったプロキシサーバＰＲに対して対象外選択通知を行う。
【００５５】
［第１の実施の形態の概略］
次に、第１の実施の形態の概略について説明を行う。図８は、第１の実施の形態におけるスケールイン処理の概略を説明するフローチャート図である。図９から図１４は、第１の実施の形態におけるスケールイン処理の概略を説明する図である。図９から図１４を参照しながら、図８に示す第１の実施の形態におけるスケールイン処理の概略について説明を行う。
【００５６】
プロキシサーバＰＲは、図８に示すように、スケールイン指示を受け付けるまで待機する（Ｓ１のＮＯ）。具体的に、プロキシサーバＰＲは、図９に示すように、管理サーバＭＮからそれぞれスケールイン指示を受け付けるまで待機する。
【００５７】
そして、スケールイン指示を受け付けた場合（Ｓ１のＹＥＳ）、プロキシサーバＰＲは、アプリケーションＡＰの種類ごとに蓄積されたトランザクションの実行時間（実行時間情報１３１）を参照して、実行中のトランザクションの完了予想時間を通知する（Ｓ２）。具体的に、各プロキシサーバＰＲは、図１０に示すように、それぞれ算出した完了予想時間を管理サーバＭＮに対して送信する。
【００５８】
その後、プロキシサーバＰＲは、スケールイン対象のプロキシサーバＰＲとして選択されたことを示す通知（対象選択通知）を受け付けるまで待機する（Ｓ３のＮＯ）。具体的に、プロキシサーバＰＲは、図１１に示すように、管理サーバＭＮがスケールイン対象のプロキシサーバＰＲを決定し、決定したプロキシサーバＰＲ（プロキシサーバＰＲ２）に対して対象選択通知を送信するまで待機する。
【００５９】
そして、対象選択通知を受け付けた場合（Ｓ３のＹＥＳ）、プロキシサーバＰＲは、新規のコネクション接続の受付を中止し、かつ、トランザクションの終了が検知された接続中のコネクションを切断する（Ｓ４）。具体的に、対象選択通知を受け付けたプロキシサーバＰＲは、対象選択通知を受け付けた場合、図１２に示すように、例えば、アプリケーションＡＰから新規のコネクションの接続を行う旨の指示があった場合であっても、新規のコネクションの接続の受け付けを行わない。そして、対象選択通知を受け付けたプロキシサーバＰＲは、対象選択通知の受付以降、図１３に示すように、例えば、接続中のコネクションによって実行中のトランザクションが終了したことを検知した場合、その接続中のコネクションを切断する。
【００６０】
その後、プロキシサーバＰＲは、すべてのコネクションが切断されるまで待機する（Ｓ５のＮＯ）。そして、すべてのコネクションが切断された場合（Ｓ５のＹＥＳ）、プロキシサーバＰＲは、自プロキシサーバＰＲのスケールインを行う（Ｓ６）。具体的に、プロキシサーバＰＲは、図１４に示すように、すべてのコネクションが切断されたことに応じて、自プロキシサーバＰＲのスケールインを行う。
【００６１】
すなわち、各プロキシサーバＰＲは、過去に実行された各トランザクションの実行時間を参照して、現在実行中のトランザクションの完了予想時間を予測する。そして、管理サーバＭＮは、各プロキシサーバＰＲが予測した完了予想時間に基づき、現在実行中のトランザクションのすべてが最も早く完了するプロキシサーバＰＲを特定（予測）し、特定したプロキシサーバＰＲに対してスケールインを行う旨を指示する。スケールインを行う旨の指示を受け付けたプロキシサーバＰＲは、自プロキシサーバＰＲを経由するすべてのコネクションの切断が行われた後、自プロキシサーバＰＲのスケールインを行う。
【００６２】
これにより、情報処理装置１は、プロキシサーバＰＲのスケールインを、トランザクションに影響を与えず、かつ、迅速に行うことが可能になる。
【００６３】
［第１の実施の形態の詳細］
次に、第１の実施の形態の詳細について説明する。図１５から図１９は、第１の実施の形態におけるスケールイン処理の詳細を説明するフローチャート図である。また、図２０から図２５は、第１の実施の形態におけるスケールイン処理の詳細を説明する図である。図２０から図２５を参照しながら、図１５から図１９に示すスケールイン処理の詳細を説明する。
【００６４】
［情報蓄積処理］
初めに、スケールイン処理の事前処理である情報蓄積処理について説明を行う。情報蓄積処理は、実行時間情報１３１を生成して情報格納領域１３０に記憶する処理である。図１５は、情報蓄積処理を説明するフローチャート図である。
【００６５】
プロキシサーバＰＲの情報蓄積部１１１は、図１５に示すように、情報蓄積タイミングまで待機する（Ｓ１１のＮＯ）。情報蓄積タイミングは、例えば、アプリケーションＡＰから開始クエリまたは終了クエリを受け付けたタイミングであってよい。
【００６６】
そして、情報蓄積タイミングになった場合（Ｓ１１のＹＥＳ）、情報蓄積部１１１は、実行時間情報１３１を生成し、情報格納領域１３０に記憶する（Ｓ１２）。以下、実行時間情報１３１の具体例について説明を行う。
【００６７】
［実行時間情報の具体例］
図２０から図２３は、実行時間情報１３１の具体例を説明する図である。
【００６８】
図２０等に示す実行時間情報１３１は、実行時間情報１３１に含まれる各情報を識別する「項番」と、トランザクションの開始時刻が設定される「開始時刻」と、トランザクションの終了時刻が設定される「終了時刻」とを項目として有する。また、図２０等に示す実行時間情報１３１は、開始クエリまたは終了クエリの送信元のアプリケーションＡＰを識別する「送信元」と、トランザクションの実行時間が設定される「実行時間」とを項目として有する。「実行時間」には、「開始時刻」に設定された時刻から「終了時刻」に設定された時刻までの時間が設定される。
【００６９】
具体的に、図２０に示す実行時間情報１３１において、「項番」が「１」である情報には、「開始時刻」として「９１５１４８８００．００」が設定され、「終了時刻」として「９１５１４８８０１．２１」が設定されている。そして、図２０に示す実行時間情報１３１において、「項番」が「１」である情報には、「送信元」として「ＡＰ１（アプリケーションＡＰ１）」が設定され、「実行時間」として「１．２１」が設定されている。
【００７０】
また、図２０に示す実行時間情報１３１において、「項番」が「２」である情報には、「開始時刻」として「９１５１４８８００．１３」が設定され、「終了時刻」として「９１５１４８８００．２９」が設定されている。そして、図２０に示す実行時間情報１３１において、「項番」が「２」である情報には、「送信元」として「ＡＰ２（アプリケーションＡＰ２）」が設定され、「実行時間」として「０．１６」が設定されている。図２０に含まれる他の情報については説明を省略する。
【００７１】
そして、情報蓄積部１１１は、アプリケーションＡＰ２から開始クエリを受け付けた場合、図２１の下線部分に示すように、例えば、「項番」が「５」である情報の「開始時刻」として「９１５１４８８０２．４０」を設定し、「送信元」として「ＡＰ１」を設定する（Ｓ１１のＹＥＳ、Ｓ１２）。
【００７２】
さらに、情報蓄積部１１１は、アプリケーションＡＰ２から終了クエリを受け付けた場合、図２２の下線部分に示すように、例えば、「項番」が「５」である情報の「終了時刻」として「９１５１４８８０５．３４」を設定し、「実行時間」として「２．９４」を設定する（Ｓ１１のＹＥＳ、Ｓ１２）。
【００７３】
その後、情報蓄積部１１１は、アプリケーションＡＰ３から開始クエリを受け付けた場合、図２３の下線部分に示すように、例えば、「項番」が「６」である情報の「開始時刻」として「９１５１４８８０３．３０」を設定し、「送信元」として「ＡＰ３（アプリケーションＡＰ３）」を設定する（Ｓ１１のＹＥＳ、Ｓ１２）。さらに、情報蓄積部１１１は、アプリケーションＡＰ１から開始クエリを受け付けた場合、図２３の下線部分に示すように、例えば、「項番」が「７」である情報の「開始時刻」として「９１５１４８８０４．８０」を設定し、「送信元」として「ＡＰ１」を設定する（Ｓ１１のＹＥＳ、Ｓ１２）。
【００７４】
［管理サーバにおけるスケールイン処理（１）］
次に、スケールイン処理の詳細について説明を行う。図１６は、管理サーバＭＮにおけるスケールイン処理を説明するフローチャート図である。
【００７５】
管理サーバＭＮの条件判定部１２１は、図１６に示すように、スケールインタイミングになるまで待機する（Ｓ２１のＮＯ）。具体的に、条件判定部１２１は、例えば、情報処理装置１において動作しているプロキシサーバＰＲのＣＰＵの使用率が予め定めた閾値を超えるまで待機する。
【００７６】
そして、スケールインタイミングなった場合（Ｓ２１のＹＥＳ）、管理サーバＭＮの情報通知部１２２は、スケールイン指示を各プロキシサーバＰＲに通知する（Ｓ２２）。以下、プロキシサーバＰＲにおけるスケールイン処理の具体例について説明を行う。なお、図１６におけるＳ２３以降の処理の説明については後述する。
【００７７】
［プロキシサーバにおけるスケールイン処理（１）］
図１７は、プロキシサーバＰＲにおけるスケールイン処理を説明するフローチャート図である。
【００７８】
プロキシサーバＰＲの情報受付部１１２は、管理サーバＭＮから、スケールイン指示を受け付けるまで待機する（Ｓ３１のＮＯ）。
【００７９】
そして、スケールイン指示を受け付けた場合（Ｓ３１のＹＥＳ）、接続中止部１１５は、例えば、新規のコネクション接続の受付を保留する（Ｓ３２）。
【００８０】
すなわち、スケールイン指示を受けた場合、接続中止部１１５は、自プロキシサーバＰＲがスケールイン対象のプロキシサーバＰＲになる可能性があると判定する。そのため、接続中止部１１５は、スケールイン指示の受け付けに応じて、新規のコネクション接続の受け付けを保留する。これにより、プロキシサーバＰＲは、完了予想時間の算出を新規のコネクション接続の受付よりも優先して行うことが可能になる。
【００８１】
その後、プロキシサーバＰＲの時間算出部１１３は、情報格納領域１３０に記憶された実行時間情報１３１を参照し、アプリケーションＡＰの種類ごとに、各アプリケーションＡＰの種類に対応するトランザクションの実行時間のうち、最長の実行時間を特定する（Ｓ３３）。具体的に、時間算出部１１３は、例えば、各アプリケーションＡＰの種類に対応するトランザクションの実行時間のうちの最長の実行時間を示す最長実行時間情報１３１ａを生成する。以下、最長実行時間情報１３１ａの具体例について説明を行う。
【００８２】
［最長実行時間情報の具体例］
図２４は、最長実行時間情報１３１ａの具体例を説明する図である。
【００８３】
図２４に示す最長実行時間情報１３１ａは、最長実行時間情報１３１ａに含まれる各情報を識別する「項番」と、アプリケーションＡＰを識別する「送信元」と、トランザクションの最長実行時間が設定される「最長実行時間」とを項目として有する。
【００８４】
具体的に、図２３で説明した実行時間情報１３１において、「送信元」に「ＡＰ１」が設定された情報の「実行時間」に設定された最長時間は、「項番」が「５」である情報の「実行時間」に設定された時間である「２．９４」である。また、図２３で説明した実行時間情報１３１において、「送信元」に「ＡＰ２」が設定された情報の「実行時間」に設定された最長時間は、「項番」が「２」である情報の「実行時間」に設定された時間である「０．１６」である。さらに、図２３で説明した実行時間情報１３１において、「送信元」に「ＡＰ３」が設定された情報の「実行時間」に設定された最長時間は、「項番」が「４」である情報の「実行時間」に設定された時間である「０．５４」である。
【００８５】
そのため、時間算出部１１３は、図２４に示すように、例えば、「項番」が「１」である情報の「送信元」として「ＡＰ１」を設定し、「最長実行時間」として「２．９４」を設定する。また、時間算出部１１３は、例えば、「項番」が「２」である情報の「送信元」として「ＡＰ２」を設定し、「最長実行時間」として「０．１６」を設定する。さらに、時間算出部１１３は、例えば、「項番」が「３」である情報の「送信元」として「ＡＰ３」を設定し、「最長実行時間」として「０．５４」を設定する。
【００８６】
図１７に戻り、時間算出部１１３は、実行中のトランザクションごとに、各トランザクションに対応するアプリケーションＡＰの種類に対応する最長実行時間から、各トランザクションの実行開始から現在までの経過時間を減算した時間を、完了予想時間として算出する（Ｓ２４）。具体的に、時間算出部１１３は、完了予想時間を含む完了予想時間情報１３２を生成する。そして、時間算出部１１３は、生成した完了予想時間情報１３２を情報格納領域１３０に記憶する。以下、完了予想時間情報１３２の具体例について説明を行う。
【００８７】
［完了予想時間情報の具体例］
図２５は、完了予想時間情報１３２の具体例を説明する図である。
【００８８】
図２５に示す完了予想時間情報１３２は、完了予想時間情報１３２に含まれる各情報を識別する「項番」と、アプリケーションＡＰを識別する「送信元」と、トランザクションの開始からの経過時間が設定される「経過時間」と、完了予想時間が設定される「完了予想時間」とを項目として有する。
【００８９】
具体的に、図２４で説明した最長実行時間情報１３１ａには、「送信元」に「ＡＰ１」が設定された情報の「最長実行時間」として「２．９４」が設定され、「送信元」に「ＡＰ３」が設定された情報の「最長実行時間」として「０．５４」が設定されている。また、図２３で説明した実行時間情報１３１には、「終了時刻」に情報が設定されない情報（実行中のトランザクションに関する情報）として、「項番」が「６」である情報と「項番」が「７」である情報とが含まれている。そして、「項番」が「６」である情報には、「送信元」として「ＡＰ３」が設定され、「開始時刻」として「９１５４８８０３．３０」が設定されている。さらに、「項番」が「７」である情報には、「送信元」として「ＡＰ１」が設定され、「開始時刻」として「９１５４８８０４．８０」が設定されている。
【００９０】
そのため、例えば、現在時刻が「９１５４８８０５．００」である場合、アプリケーションＡＰ１に対応するトランザクションが開始されてからの経過時間は、「９１５４８８０３．３０」から「９１５４８８０５．００」までの時間である「１．７０」である。また、この場合、アプリケーションＡＰ３に対応するトランザクションが開始されてからの経過時間は、「９１５４８８０４．８０」から「９１５４８８０５．００」までの時間である「０．２０」である。
【００９１】
さらに、アプリケーションＡＰ１に対応するトランザクションの完了予想時間は、「２．９４」から「１．７０」を減算した時間である「１．２４」である。また、アプリケーションＡＰ３に対応する実行中のトランザクションの完了予想時間は、「０．５４」から「０．２０」を減算した時間である「０．３４」である。
【００９２】
したがって、時間算出部１１３は、図２５に示すように、例えば、「項番」が「１」である情報の「送信元」として「ＡＰ１」を設定し、「経過時間」として「１．７０」を設定し、「完了予想時間」として「１．２４」を設定する。また、時間算出部１１３は、図２５に示すように、例えば、「項番」が「３」である情報の「送信元」として「ＡＰ３」を設定し、「経過時間」として「０．２０」を設定し、「完了予想時間」として「０．３４」を設定する。
【００９３】
一方、図２３で説明した実行時間情報１３１には、「送信元」として「ＡＰ２」が設定され、「終了時刻」に情報が設定されていない情報が存在しない。そのため、時間算出部１１３は、図２５に示すように、例えば、「項番」が「２」である情報の「送信元」として「ＡＰ２」を設定し、「経過時間」及び「完了予想時間」として、アプリケーションＡＰ２に対応するトランザクションが存在しないことを示す「−」を設定する。
【００９４】
図１７に戻り、プロキシサーバＰＲの時間通知部１１４は、管理サーバＭＮに対し、Ｓ２４の処理で算出した完了予想時間のうち、最長の完了予想時間の通知を行う（Ｓ３５）。
【００９５】
具体的に、図２５で説明した完了予想時間情報１３２の「完了予想時間」に設定された時間のうちの最長の時間は、「項番」が「１」である情報の「完了予想時間」に設定された時間である「１．２４」である。そのため、時間通知部１１４は、管理サーバＭＮに対して「１．２４」を通知する。以下、各プロキシサーバＰＲから完了予想時間を受け付けた後の管理サーバＭＮにおける処理について説明を行う。なお、図１８におけるＳ４１以降の処理の説明については後述する。
【００９６】
［管理サーバにおけるスケールイン処理（２）］
管理サーバＭＮの時間受付部１２３は、図１６に示すように、各プロキシサーバＰＲから完了予想時間（最長の完了予想時間）を受け付けるまで待機する（Ｓ２３のＮＯ）。具体的に、時間受付部１２３は、Ｓ２２の処理において情報通知部１２２がスケールイン指示を通知したすべてのプロキシサーバＰＲから完了予想時間を受け付けるまで待機する。
【００９７】
そして、完了予想時間を受け付けた場合（Ｓ２３のＹＥＳ）、管理サーバＭＮのサーバ特定部１２４は、Ｓ２３の処理で受け付けた完了予想時間のうち、最短の完了予想時間を送信したプロキシサーバＰＲを、スケールイン対象のプロキシサーバＰＲとして特定する（Ｓ２４）。
【００９８】
その後、情報通知部１２２は、Ｓ２４の処理で特定したプロキシサーバＰＲに対し、スケールイン対象のプロキシサーバＰＲとして選択されたことの通知（対象選択通知）を行う（Ｓ２５）。また、情報通知部１２２は、Ｓ２４の処理で特定したプロキシサーバＰＲ以外のプロキシサーバＰＲに対し、スケールイン対象のプロキシサーバＰＲとして選択されなかったことの通知（対象外選択通知）を行う（Ｓ２６）。
【００９９】
これにより、各プロキシサーバＰＲは、自プロキシサーバＰＲがスケールインを行うための処理を行う必要があるか否かの判定を行うことが可能になる。以下、管理サーバＭＮから完了予想時間を受け付けた後のプロキシサーバＰＲにおける処理について説明を行う。
【０１００】
［プロキシサーバにおけるスケールイン処理（２）］
情報受付部１１２は、図１８に示すように、スケールイン対象のプロキシサーバＰＲに関する通知を受け付けるまで待機する（Ｓ４１のＮＯ）。
【０１０１】
そして、スケールイン対象のプロキシサーバＰＲに関する通知を受け付けた場合（Ｓ４１のＹＥＳ）、情報受付部１１２は、スケールイン対象のプロキシサーバＰＲとして自プロキシサーバＰＲが選択されたことを示す通知（対象選択通知）を受け付けたか否かの判定を行う（Ｓ４２）。
【０１０２】
その結果、スケールイン対象のプロキシサーバＰＲとして自プロキシサーバＰＲが選択されなかったことを示す通知（対象外選択通知）を受け付けたと判定した場合（Ｓ４２のＮＯ）、プロキシサーバＰＲの接続再開部１１８は、新規のコネクション接続の受け付けを再開する（Ｓ４３）。すなわち、プロキシサーバＰＲは、対象外選択通知を受け付けた場合、Ｓ３２の処理で保留した新規のコネクション接続の受付を再開する。
【０１０３】
なお、接続中止部１１５は、Ｓ３２の処理において、新規のコネクション接続の受付を保留しないものであってもよい。そして、接続再開部１１８は、この場合、Ｓ４３の処理において、新規のコネクション接続の受付の再開を行わないものであってもよい。すなわち、プロキシサーバＰＲは、新規のコネクション接続の受付を保留することなく、完了予想時間の算出を行うものであってもよい。これにより、プロキシサーバＰＲは、完了予想時間の算出を行う場合であっても、アプリケーションＡＰから送信されたクエリに対する応答を遅延なく行うことが可能になる。
【０１０４】
一方、対象選択通知を受け付けたと判定した場合（Ｓ４２のＹＥＳ）、接続中止部１１５は、図１９に示すように、新規のコネクション接続の受付を中止する（Ｓ５１）。そして、プロキシサーバＰＲの接続切断部１１６は、アプリケーションＡＰのいずれかに対応するトランザクションが終了するまで待機する（Ｓ５２のＮＯ）。
【０１０５】
その後、アプリケーションＡＰのいずれかに対応するトランザクションの終了を検知した場合（Ｓ５２のＹＥＳ）、接続切断部１１６は、終了したトランザクションに対応するコネクション（接続中のコネクション）を切断する（Ｓ５３）。
【０１０６】
そして、接続切断部１１６は、自プロキシサーバＰＲを経由するすべてのコネクションが切断されたか否かについての判定を行う（Ｓ５４）。
【０１０７】
その結果、すべてのコネクションが切断されていないと判定した場合（Ｓ５４のＮＯ）、接続切断部１１６は、Ｓ５２以降の処理を再度行う。
【０１０８】
一方、すべてのコネクションが切断されたと判定した場合（Ｓ５４のＹＥＳ）、プロキシサーバＰＲのスケールイン実行部１１７は、自プロキシサーバＰＲのスケールインを行う。具体的に、スケールイン実行部１１７は、この場合、管理サーバＭＮに対して、自プロキシサーバＰＲのスケールインを行う旨を通知することにより、自プロキシサーバＰＲのスケールインを行うものであってもよい。また、スケールイン実行部１１７は、この場合、自プロキシサーバＰＲを終了させることにより、自プロキシサーバＰＲのスケールインを行うものであってもよい。
【０１０９】
このように、本実施の形態におけるプロキシサーバＰＲは、プロキシサーバＰＲのスケールイン指示の受付に応じ、アプリケーションＡＰの種類ごとに蓄積されたトランザクションの実行時間を参照して、自プロキシサーバＰＲにおいて実行中のトランザクションの完了予想時間を管理サーバＭＮに通知する。そして、プロキシサーバＰＲは、各プロキシサーバＰＲから通知された完了予想時間に基づいて自プロキシサーバＰＲが選択されたことを示す通知の受付に応じ、自プロキシサーバＰＲを経由する新規のコネクション接続の受付を中止し、かつ、トランザクションが終了した自プロキシサーバＲを経由する接続中のコネクションを切断する。その後、プロキシサーバＰＲは、自プロキシサーバＰＲのすべてのコネクション切断に応じ、自プロキシサーバＰＲのスケールインを行う。
【０１１０】
すなわち、各プロキシサーバＰＲは、過去に実行された各トランザクションの実行時間を参照して、現在実行中のトランザクションの完了予想時間を予測する。そして、管理サーバＭＮは、各プロキシサーバＰＲが予測した完了予想時間に基づき、現在実行中のトランザクションのすべてが最も早く完了するプロキシサーバＰＲを特定（予測）し、特定したプロキシサーバＰＲに対してスケールインを行う旨を指示する。スケールインを行う旨の指示を受け付けたプロキシサーバＰＲは、自プロキシサーバＰＲを経由するすべてのコネクションの切断が行われた後、自プロキシサーバＰＲのスケールインを行う。
【０１１１】
これにより、情報処理装置１は、プロキシサーバＰＲのスケールインを、トランザクションに影響を与えず、かつ、迅速に行うことが可能になる。
【０１１２】
なお、情報処理装置１は、スケールイン処理のうちの管理サーバＭＮが行う処理（図１６で説明した処理）を、プロキシサーバＰＲのうちのいずれかに行わせるものであってもよい。この場合、情報処理装置１は、例えば、情報処理装置１において動作するプロキシサーバＰＲのうち、経由するコネクション数が最も少ないプロキシサーバＰＲを負荷が最も少ないプロキシサーバＰＲとして特定し、特定したプロキシサーバＰＲに管理サーバＭＮが行う処理を行わせるものであってよい。これにより、情報処理装置１は、管理サーバＭＮの処理負担を軽減させることが可能になる。
【０１１３】
［第２の実施の形態］
次に、第２の実施の形態について説明する。図２６から図２８は、第２の実施の形態におけるスケールイン処理を説明するフローチャート図である。
【０１１４】
第２の実施の形態における各プロキシサーバＰＲは、相互に完了予想時間の送受信を行い、スケールイン対象のプロキシサーバＰＲの決定を行う。すなわち、第２の実施の形態におけるスケールイン処理では、管理サーバＭＮに代わってプロキシサーバＰＲのそれぞれがスケールイン対象のプロキシサーバＰＲの決定を行う。そして、自プロキシサーバＰＲがスケールイン対象であると判定したプロキシサーバＰＲは、自プロキシサーバＰＲのスケールインを行う。これにより、情報処理装置１は、管理サーバＭＮの処理負担を軽減させることが可能になる。
【０１１５】
以下、第２の実施の形態におけるスケールイン処理のフローチャート図について説明を行う。なお、第２の実施の形態における情報蓄積処理は、第１の実施の形態における情報蓄積処理と同じ内容であるため、説明を省略する。
【０１１６】
情報受付部１１２は、図２６に示すように、スケールインタイミングになるまで待機する（Ｓ６１のＮＯ）。具体的に、情報受付部１１２は、例えば、管理サーバＭＮから、情報処理装置１において動作しているプロキシサーバＰＲのＣＰＵの使用率が予め定めた閾値を超えた旨の情報を受け付けるまで待機する。
【０１１７】
そして、スケールインタイミングなった場合（Ｓ６１のＹＥＳ）、新規のコネクション接続の受付を保留する（Ｓ６２）。
【０１１８】
その後、時間算出部１１３は、情報格納領域１３０に記憶された実行時間情報１３１を参照し、アプリケーションＡＰの種類ごとに、各アプリケーションＡＰの種類に対応するトランザクションの実行時間のうち、最長の実行時間を特定する（Ｓ６３）。
【０１１９】
続いて、時間算出部１１３は、実行中のトランザクションごとに、各トランザクションに対応するアプリケーションＡＰの種類に対応する最長実行時間から、各トランザクションの実行開始から現在までの経過時間を減算した時間を、完了予想時間として算出する（Ｓ６４）。そして、時間算出部１１３は、Ｓ６４の処理で算出した完了予想時間のうち、最長の完了予想時間を特定する（Ｓ６５）。
【０１２０】
次に、時間通知部１１４は、図２７に示すように、他のプロキシサーバＰＲに対し、Ｓ６５の処理で特定した完了予想時間を通知する（Ｓ７１）。
【０１２１】
そして、時間算出部１１３は、他のプロキシサーバＰＲのすべてから完了予想時間を受け付けるまで待機する（Ｓ７２のＮＯ）。具体的に、時間算出部１１３は、例えば、現在動作している他のプロキシサーバＰＲを示す他サーバ情報（図示しない）を参照し、他のプロキシサーバＰＲのすべてから完了予想時間を受け付けたか否かの判定を行うものであってよい。この場合、時間算出部１１３は、例えば、管理サーバＭＮから他サーバ情報を定期的に取得し、情報格納領域１３０に記憶しておくものであってよい。
【０１２２】
その後、他のプロキシサーバＰＲのすべてから完了予想時間を受け付けた場合（Ｓ７２のＹＥＳ）、時間算出部１１３は、Ｓ６５の処理で特定した完了予想時間と、Ｓ７２の処理で受け付けた完了予想時間とのうち、最短の完了予想時間を送信したプロキシサーバＰＲをスケールイン対象のプロキシサーバＰＲとして特定する（Ｓ７３）。
【０１２３】
これにより、各プロキシサーバＰＲは、自プロキシサーバＰＲがスケールインを行うための処理を行う必要があるか否かの判定を行うことが可能になる。
【０１２４】
続いて、接続再開部１１８は、Ｓ７３の処理で特定されたスケールイン対象のプロキシサーバＰＲが自プロキシサーバＰＲであるか否かの判定を行う（Ｓ７４）。
【０１２５】
その結果、Ｓ７３の処理で特定されたスケールイン対象のプロキシサーバＰＲが自プロキシサーバＰＲでないと判定した場合（Ｓ７４のＮＯ）、接続再開部１１８は、新規のコネクション接続の受け付けを再開する（Ｓ７５）。すなわち、プロキシサーバＰＲは、この場合、Ｓ６２の処理で保留した新規のコネクション接続の受付を再開する。
【０１２６】
一方、Ｓ７３の処理で特定されたスケールイン対象のプロキシサーバＰＲが自プロキシサーバＰＲであると判定した場合（Ｓ７４のＹＥＳ）、接続中止部１１５は、図１９に示すように、新規のコネクション接続の受付を中止する（Ｓ８１）。そして、接続切断部１１６は、アプリケーションＡＰに対応するトランザクションが終了するまで待機する（Ｓ８２のＮＯ）。
【０１２７】
その後、アプリケーションＡＰに対応するトランザクションの終了を検知した場合（Ｓ８２のＹＥＳ）、接続切断部１１６は、終了したトランザクションに対応する接続中のコネクションを切断する（Ｓ８３）。
【０１２８】
そして、接続切断部１１６は、自プロキシサーバＰＲを経由するすべてのコネクションが切断されたか否かについての判定を行う（Ｓ８４）。
【０１２９】
その結果、すべてのコネクションが切断されていないと判定した場合（Ｓ８４のＮＯ）、接続切断部１１６は、Ｓ８２以降の処理を再度行う。一方、すべてのコネクションが切断されたと判定した場合（Ｓ８４のＹＥＳ）、プロキシサーバＰＲのスケールイン実行部１１７は、自プロキシサーバＰＲのスケールインを行う（Ｓ８５）。
【０１３０】
これにより、情報処理装置１は、管理サーバＭＮの処理負担を軽減させることが可能になる。
【０１３１】
以上の実施の形態をまとめると、以下の付記のとおりである。
【０１３２】
（付記１）
データベースのプロキシサーバのスケールイン指示の受付に応じ、アプリケーションの種類ごとに蓄積されたトランザクションの実行時間を参照して、前記プロキシサーバにおいて実行中のトランザクションの完了予想時間を通知し、
所定の通知の受付に応じ、前記プロキシサーバにおいて、新規のコネクション接続の受付を中止し、
前記所定の通知の受付以降にトランザクションの終了が検知された場合は、接続中のコネクションを切断し、
前記プロキシサーバのすべてのコネクション切断に応じ、前記プロキシサーバのスケールイン処理を実行する、
処理をコンピュータに実行させるスケールイン管理プログラム。
【０１３３】
（付記２）
付記１に記載のスケールイン管理プログラムにおいて、
前記所定の通知は、前記プロキシサーバを含む複数のプロキシサーバから通知された前記完了予想時間に基づき前記プロキシサーバが選択されたことを示す通知である、
スケールイン管理プログラム。
【０１３４】
（付記３）
付記１に記載のスケールイン管理プログラムにおいて、
前記通知する処理では、
前記アプリケーションの種類ごとに、各アプリケーションの種類に対応するトランザクションの実行時間のうち、最長の実行時間を特定し、
実行中のトランザクションごとに、各トランザクションに対応するアプリケーションの種類に対応する前記最長の実行時間から、各トランザクションの実行開始から現在までの経過時間を減算した時間を、前記完了予想時間として算出し、
算出した前記完了予想時間の通知を行う、
スケールイン管理プログラム。
【０１３５】
（付記４）
付記１に記載のスケールイン管理プログラムにおいて、さらに、
アプリケーションの種類ごとにトランザクションの実行時間を記憶部に蓄積する、
処理を前記プロキシサーバに実行させ、
前記通知する処理では、前記記憶部に記憶された前記実行時間を参照して、前記完了予想時間の通知を行う、
スケールイン管理プログラム。
【０１３６】
（付記５）
付記１に記載のスケールイン管理プログラムにおいて、さらに、
前記スケールイン指示の受付に応じ、新規のコネクション接続の受付を保留する、
処理をコンピュータに実行させるスケールイン管理プログラム。
【０１３７】
（付記６）
付記５に記載のスケールイン管理プログラムにおいて、さらに、
前記完了予想時間に基づき他のプロキシサーバが選択されたことを示す通知の受付に応じ、新規のコネクション接続の受付を再開する、
処理をコンピュータに実行させるスケールイン管理プログラム。
【０１３８】
（付記７）
付記２に記載のスケールイン管理プログラムにおいて、
前記複数のプロキシサーバと通信を行う管理サーバは、
所定の条件が満たされた場合に、前記スケールイン指示を前記複数のプロキシサーバに通知し、
前記完了予想時間の受付に応じ、前記完了予想時間に基づいてスケールイン対象のプロキシサーバを特定し、
特定した前記プロキシサーバに対し、特定した前記プロキシサーバが選択されたことを通知する、
スケールイン管理プログラム。
【０１３９】
（付記８）
付記７に記載のスケールイン管理プログラムにおいて、
前記管理サーバは、前記複数のプロキシサーバのうち、最短の完了予想時間を通知したプロキシサーバを前記スケールイン対象のプロキシサーバとして特定する、
スケールイン管理プログラム。
【０１４０】
（付記９）
付記７に記載のスケールイン管理プログラムにおいて、
前記管理サーバは、前記スケールイン対象のプロキシサーバの特定の後、前記複数のプロキシサーバのうち、特定された前記プロキシサーバ以外のプロキシサーバに対し、他のプロキシサーバが選択されたことを通知する、
スケールイン管理プログラム。
【０１４１】
（付記１０）
付記７に記載のスケールイン管理プログラムにおいて、
前記スケールイン処理を実行する処理では、
前記プロキシサーバのすべてのコネクション切断に応じ、前記プロキシサーバのスケールインの実行を前記管理サーバに指示する、
スケールイン管理プログラム。
【０１４２】
（付記１１）
データベースのプロキシサーバのスケールイン指示の受付に応じ、アプリケーションの種類ごとに蓄積されたトランザクションの実行時間を参照して、前記プロキシサーバにおいて実行中のトランザクションの第１完了予想時間を算出し、
算出した前記第１完了予想時間を他のプロキシサーバに通知し、
算出した前記第１完了予想時間と、前記他のプロキシサーバから受け付けた第２完了予想時間とに基づき、前記プロキシサーバまたは前記他のプロキシサーバを選択し、
前記プロキシサーバを選択した場合、前記プロキシサーバにおいて、新規のコネクション接続の受付を中止し、かつ、トランザクションが終了した接続中のコネクションを切断し、
前記プロキシサーバのすべてのコネクション切断に応じ、前記プロキシサーバのスケールイン処理を実行する、
処理をコンピュータに実行させるスケールイン管理プログラム。
【０１４３】
（付記１２）
付記１１に記載のスケールイン管理プログラムにおいて、
前記切断する処理では、前記第１完了予想時間と前記第２完了予想時間とのうち、最短の完了予想時間に対応するプロキシサーバを選択する、
スケールイン管理プログラム。
【０１４４】
（付記１３）
データベースのプロキシサーバのスケールイン指示の受付に応じ、アプリケーションの種類ごとに蓄積されたトランザクションの実行時間を参照して、前記プロキシサーバにおいて実行中のトランザクションの完了予想時間を通知する時間通知部と、
所定の通知の受付に応じ、前記プロキシサーバにおいて、新規のコネクション接続の受付を中止する接続中止部と、
前記所定の通知の受付以降にトランザクションの終了が検知された場合は、接続中のコネクションを切断する接続切断部と、
前記プロキシサーバのすべてのコネクション切断に応じ、前記プロキシサーバのスケールイン処理を実行するスケールイン実行部と、を有する、
スケールイン管理装置。
【０１４５】
（付記１４）
付記１３に記載のスケールイン管理装置において、
前記時間通知部は、
前記アプリケーションの種類ごとに、各アプリケーションの種類に対応するトランザクションの実行時間のうち、最長の実行時間を特定し、
実行中のトランザクションごとに、各トランザクションに対応するアプリケーションの種類に対応する前記最長の実行時間から、各トランザクションの実行開始から現在までの経過時間を減算した時間を、前記完了予想時間として算出し、
算出した前記完了予想時間の通知を行う、
スケールイン管理装置。
【０１４６】
（付記１５）
データベースのプロキシサーバのスケールイン指示の受付に応じ、アプリケーションの種類ごとに蓄積されたトランザクションの実行時間を参照して、前記プロキシサーバにおいて実行中のトランザクションの第１完了予想時間を算出する時間算出部と、
算出した前記第１完了予想時間を他のプロキシサーバに通知する時間通知部と、
算出した前記第１完了予想時間と、前記他のプロキシサーバから受け付けた第２完了予想時間とに基づき、前記プロキシサーバまたは前記他のプロキシサーバを選択し、
前記プロキシサーバを選択した場合、前記プロキシサーバにおいて、新規のコネクション接続の受付を中止する接続中止部と、
前記プロキシサーバを選択した場合、前記プロキシサーバにおいて、トランザクションが終了した接続中のコネクションを切断する接続切断部と、
前記プロキシサーバのすべてのコネクション切断に応じ、前記プロキシサーバのスケールイン処理を実行するスケールイン実行部と、を有する、
スケールイン管理装置。
【０１４７】
（付記１６）
データベースのプロキシサーバのスケールイン指示の受付に応じ、アプリケーションの種類ごとに蓄積されたトランザクションの実行時間を参照して、前記プロキシサーバにおいて実行中のトランザクションの完了予想時間を通知し、
所定の通知の受付に応じ、前記プロキシサーバにおいて、新規のコネクション接続の受付を中止し、
前記所定の通知の受付以降にトランザクションの終了が検知された場合は、接続中のコネクションを切断し、
前記プロキシサーバのすべてのコネクション切断に応じ、前記プロキシサーバのスケールイン処理を実行する、
スケールイン管理方法。
【０１４８】
（付記１７）
付記１６に記載のスケールイン管理方法において、
前記通知する工程では、
前記アプリケーションの種類ごとに、各アプリケーションの種類に対応するトランザクションの実行時間のうち、最長の実行時間を特定し、
実行中のトランザクションごとに、各トランザクションに対応するアプリケーションの種類に対応する前記最長の実行時間から、各トランザクションの実行開始から現在までの経過時間を減算した時間を、前記完了予想時間として算出し、
算出した前記完了予想時間の通知を行う、
スケールイン管理方法。
【０１４９】
（付記１８）
データベースのプロキシサーバのスケールイン指示の受付に応じ、アプリケーションの種類ごとに蓄積されたトランザクションの実行時間を参照して、前記プロキシサーバにおいて実行中のトランザクションの第１完了予想時間を算出し、
算出した前記第１完了予想時間を他のプロキシサーバに通知し、
算出した前記第１完了予想時間と、前記他のプロキシサーバから受け付けた第２完了予想時間とに基づき、前記プロキシサーバまたは前記他のプロキシサーバを選択し、
前記プロキシサーバを選択した場合、前記プロキシサーバにおいて、新規のコネクション接続の受付を中止し、かつ、トランザクションが終了した接続中のコネクションを切断し、
前記プロキシサーバのすべてのコネクション切断に応じ、前記プロキシサーバのスケールイン処理を実行する、
スケールイン管理方法。
【符号の説明】
【０１５０】
１：情報処理装置              ３：仮想マシン
４：仮想化ソフトウエア        ５：事業者端末
【図１】
2018200585.tif 000003
【図２】
2018200585.tif 000004
【図３】
2018200585.tif 000005
【図４】
2018200585.tif 000006
【図５】
2018200585.tif 000007
【図６】
2018200585.tif 000008
【図７】
2018200585.tif 000009
【図８】
2018200585.tif 000010
【図９】
2018200585.tif 000011
【図１０】
2018200585.tif 000012
【図１１】
2018200585.tif 000013
【図１２】
2018200585.tif 000014
【図１３】
2018200585.tif 000015
【図１４】
2018200585.tif 000016
【図１５】
2018200585.tif 000017
【図１６】
2018200585.tif 000018
【図１７】
2018200585.tif 000019
【図１８】
2018200585.tif 000020
【図１９】
2018200585.tif 000021
【図２０】
2018200585.tif 000022
【図２１】
2018200585.tif 000023
【図２２】
2018200585.tif 000024
【図２３】
2018200585.tif 000025
【図２４】
2018200585.tif 000026
【図２５】
2018200585.tif 000027
【図２６】
2018200585.tif 000028
【図２７】
2018200585.tif 000029
【図２８】
2018200585.tif 000030