(57)【要約】【課題】１つの側面では、仮想マシンに導入されたサーバソフトウェアにより生成されるプロセスであるか否かを区別可能とすることを目的とする。【解決手段】コンピュータに、仮想マシンで動作する複数のプロセスの内の特定のプロセスが、サーバソフトウェアにより生成されるプロセスと前記サーバソフトウェア以外のソフトウェアにより生成されるプロセスのいずれであるかの判定処理を、前記仮想マシンについて確立されたコネクションの数と、前記特定のプロセスが生成する子プロセスまたはスレッドの数と、に基づいて実行し、前記特定のプロセスが前記サーバソフトウェアにより生成されるプロセスであると判定された場合、前記複数のプロセス間の関係を示す情報に基づいて、前記特定のプロセス以外のプロセスについての前記判定処理を実行する、処理を実行させる。【選択図】  図１０
2018120354.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに、
サーバソフトウェアが導入された仮想マシンで動作する複数のプロセスの内の特定のプロセスが、前記サーバソフトウェアにより生成されるプロセスと前記サーバソフトウェア以外のソフトウェアにより生成されるプロセスのいずれであるかを、前記仮想マシンについて確立されたコネクションの数と、前記特定のプロセスが生成する子プロセスまたはスレッドの数と、に基づいて判定し、
前記特定のプロセスが前記サーバソフトウェアにより生成されるプロセスであると判定された場合、記憶部に記憶された、前記複数のプロセス間の関係を示す情報に基づいて、前記特定のプロセス以外の前記複数のプロセスについて、前記サーバソフトウェアにより生成されるプロセスと前記サーバソフトウェア以外のソフトウェアにより生成されるプロセスのいずれであるかを判定する、
処理を実行させることを特徴とする判定プログラム。
【請求項２】
前記コンピュータに、
前記コネクションの数と、前記子プロセスの数とが等しい場合、前記特定のプロセスを前記サーバソフトウェアにより生成されるプロセスであると判定する、
処理を実行させることを特徴とする請求項１記載の判定プログラム。
【請求項３】
前記コンピュータに、
前記サーバソフトウェアの種別を判定し、
前記サーバソフトウェアの種別がウェブサーバであると判定された場合に、前記特定のプロセスが、前記サーバソフトウェアにより生成されるプロセスと前記サーバソフトウェア以外のソフトウェアにより生成されるプロセスのいずれであるかを判定する処理を実行する、
処理を実行させることを特徴とする請求項２記載の判定プログラム。
【請求項４】
前記コンピュータに、
前記子プロセスの数が前記コネクションの数以上である場合、前記特定のプロセスを前記サーバソフトウェアにより生成されるプロセスであると判定する、
処理を実行させることを特徴とする請求項１記載の判定プログラム。
【請求項５】
前記コンピュータに、
前記スレッドの数が前記コネクションの数より大きい場合、前記特定のプロセスを前記サーバソフトウェアにより生成されるプロセスであると判定する、
処理を実行させることを特徴とする請求項１記載の判定プログラム。
【請求項６】
前記コンピュータに、
前記サーバソフトウェアの種別を判定し、
前記サーバソフトウェアの種別がアプリケーションサーバであると判定された場合に、前記特定のプロセスが、前記サーバソフトウェアにより生成されるプロセスと前記サーバソフトウェア以外のソフトウェアにより生成されるプロセスのいずれであるかを判定する処理を実行する、
処理を実行させることを特徴とする請求項４または５記載の判定プログラム。
【請求項７】
前記コネクションはＴＣＰコネクションであることを特徴とする請求項１〜６のいずれか１項に記載の判定プログラム。
【請求項８】
前記複数のプロセス間の関係を示す情報は、前記複数のプロセスに対応する実行ファイルの、ディレクトリにおける格納位置を示す情報であり、
前記コンピュータに、
前記特定のプロセス以外の前記複数のプロセスのうち、プロセスの実行ファイルが前記特定のプロセスの実行ファイルと同一のディレクトリ、または前記特定のプロセスの実行ファイルが格納されたディレクトリの配下のディレクトリに格納されるプロセスを、前記サーバソフトウェアにより生成されるプロセスであると判定する、
処理を実行させることを特徴とする請求項１〜７のいずれか１項に記載の判定プログラム。
【請求項９】
前記コンピュータに、
特定の種別のサーバソフトウェアが動作する第１の仮想マシンにおけるリソース使用量に、前記特定の種別のサーバソフトウェアが動作する１以上の他の仮想マシンにおける前記サーバソフトウェアにより生成されるプロセスによるリソース使用量を合算した値が所定の閾値以下となる場合、前記第１の仮想マシンのサーバソフトウェアと前記他のマシンのサーバソフトウェアとを、１つの仮想マシンで動作させることが可能と判定する、
ことを特徴とする請求項１〜８のいずれか１項に記載の判定プログラム。
【請求項１０】
コンピュータに、
サーバソフトウェアが導入された仮想マシンで動作する複数のプロセスによるリソースの使用状況を示す情報を取得し、
前記複数のプロセスによるリソースの使用状況に示され得る複数の状態それぞれと、前記複数の状態それぞれに対応する前記仮想マシンの動作状態それぞれと、前記動作状態それぞれにおける前記サーバソフトウェアにより生成されるプロセスによるリソースの使用状況を示す情報とを関連付けた判定情報に基づいて、取得した前記使用状況を示す情報に対応する前記仮想マシンの動作状態を特定し、
前記複数のプロセスそれぞれについて、前記サーバソフトウェアにより生成されるプロセスと前記サーバソフトウェア以外のソフトウェアにより生成されるプロセスのいずれであるかを、前記判定情報において特定した前記動作状態と関連付けられた前記サーバソフトウェアにより生成されるプロセスによるリソースの使用状況に合致するか否かに基づいて判定する、
処理を実行させることを特徴とする判定プログラム。
【請求項１１】
前記コンピュータに、
前記サーバソフトウェアの種別を判定し、
前記サーバソフトウェアの種別がデータベースサーバであると判定された場合に、前記特定する処理および前記判定する処理を行なう、
処理を実行させることを特徴とする請求項１０記載の判定プログラム。
【請求項１２】
前記仮想マシンは、情報処理システムに含まれるデータベースサーバが動作する仮想マシンであり、
前記コンピュータに、
所定の期間に含まれる特定の期間中の、前記情報処理システムに含まれるウェブサーバが動作する仮想マシンにおけるデータ受信量に対するデータ送信量の比率が、前記所定の期間における前記比率の平均値よりも小さくなる場合、前記特定の期間を前記情報処理システムの応答性能が低下した期間であると判定し、
前記特定の期間が前記情報処理システムの応答性能が低下した期間であると判定された場合、前記特定の期間における前記情報処理システムに含まれる複数の仮想マシンの間のコネクション数に基づいて、前記特定の期間が前記データベースサーバが動作する仮想マシンの応答性能が低下した期間であるか否かを判定し、
前記特定の期間が前記データベースサーバが動作する仮想マシンの応答性能が低下した期間であると判定された場合、前記サーバソフトウェアにより生成されるプロセスと前記サーバソフトウェア以外のソフトウェアにより生成されるプロセスのいずれであるかを判定する処理を行なう、
処理を実行させることを特徴とする請求項１０記載の判定プログラム。
【請求項１３】
前記コンピュータに、
前記サーバソフトウェアにより生成されるプロセスであると判定されたプロセスが存在する場合、記憶部に記憶された、複数のプロセス間の関係を示す情報に基づいて特定される、前記複数のプロセスの内の前記サーバソフトウェアにより生成されるプロセスであると判定されたプロセスと所定の関係を有するプロセスを、前記サーバソフトウェアにより生成されるプロセスであると判定する、
処理を実行させることを特徴とする請求項１０〜１２のいずれか１項に記載の判定プログラム。
【請求項１４】
コンピュータが、
サーバソフトウェアが導入された仮想マシンで動作する複数のプロセスの内の特定のプロセスが、前記サーバソフトウェアにより生成されるプロセスと前記サーバソフトウェア以外のソフトウェアにより生成されるプロセスのいずれであるかを、前記仮想マシンについて確立されたコネクションの数と、前記特定のプロセスが生成する子プロセスまたはスレッドの数と、に基づいて判定し、
前記特定のプロセスが前記サーバソフトウェアにより生成されるプロセスであると判定された場合、記憶部に記憶された、前記複数のプロセス間の関係を示す情報に基づいて、前記特定のプロセス以外の前記複数のプロセスについて、前記サーバソフトウェアにより生成されるプロセスと前記サーバソフトウェア以外のソフトウェアにより生成されるプロセスのいずれであるかを判定する、
ことを特徴とする判定方法。
【請求項１５】
サーバソフトウェアが導入された仮想マシンで動作する複数のプロセスの内の特定のプロセスが、前記サーバソフトウェアにより生成されるプロセスと前記サーバソフトウェア以外のソフトウェアにより生成されるプロセスのいずれであるかを、前記仮想マシンについて確立されたコネクションの数と、前記特定のプロセスが生成する子プロセスまたはスレッドの数と、に基づいて判定する第１の判定部と、
前記特定のプロセスが前記サーバソフトウェアにより生成されるプロセスであると判定された場合、記憶部に記憶された、前記複数のプロセス間の関係を示す情報に基づいて、前記特定のプロセス以外の前記複数のプロセスについて、前記サーバソフトウェアにより生成されるプロセスと前記サーバソフトウェア以外のソフトウェアにより生成されるプロセスのいずれであるかを判定する第２の判定部と、
を備えることを特徴とする判定装置。
【請求項１６】
コンピュータが、
サーバソフトウェアが導入された仮想マシンで動作する複数のプロセスによるリソースの使用状況を示す情報を取得し、
前記複数のプロセスによるリソースの使用状況に示され得る複数の状態それぞれと、前記複数の状態それぞれに対応する前記仮想マシンの動作状態それぞれと、前記動作状態それぞれにおける前記サーバソフトウェアにより生成されるプロセスによるリソースの使用状況を示す情報とを関連付けた判定情報に基づいて、取得した前記使用状況を示す情報に対応する前記仮想マシンの動作状態を特定し、
前記複数のプロセスそれぞれについて、前記サーバソフトウェアにより生成されるプロセスと前記サーバソフトウェア以外のソフトウェアにより生成されるプロセスのいずれであるかを、前記判定情報において特定した前記動作状態と関連付けられた前記サーバソフトウェアにより生成されるプロセスによるリソースの使用状況に合致するか否かに基づいて判定する、
ことを特徴とする判定方法。
【請求項１７】
コンピュータが、
サーバソフトウェアが導入された仮想マシンで動作する複数のプロセスによるリソースの使用状況を示す情報を取得し、
前記複数のプロセスによるリソースの使用状況に示され得る複数の状態それぞれと、前記複数の状態それぞれに対応する前記仮想マシンの動作状態それぞれと、前記動作状態それぞれにおける前記サーバソフトウェアにより生成されるプロセスによるリソースの使用状況を示す情報とを関連付けた判定情報に基づいて、取得した前記使用状況を示す情報に対応する前記仮想マシンの動作状態を特定する特定部と、
前記複数のプロセスそれぞれについて、前記サーバソフトウェアにより生成されるプロセスと前記サーバソフトウェア以外のソフトウェアにより生成されるプロセスのいずれであるかを、前記判定情報において特定した前記動作状態と関連付けられた前記サーバソフトウェアにより生成されるプロセスによるリソースの使用状況に合致するか否かに基づいて判定する判定部と、
を備えることを特徴とする判定装置。
【発明の詳細な説明】
【技術分野】
【０００１】
判定プログラム、判定方法および判定装置に関する。
【背景技術】
【０００２】
ユーザの端末装置から受信したリクエストに応じて、データの抽出や、データに対する処理を行い、処理の結果をレスポンスとして、リクエストの送信元の端末装置に送信する情報処理システムが送信する。
【０００３】
図１は、上述の情報処理システムの一例であり、例えば、３階層システムなどと呼ばれる。図１の例では、端末装置１は、情報処理システム１０に対してリクエストを送信する。情報処理システム１０では、Ｗｅｂサーバ１１がリクエストを受信し、リクエストの引数の内容をＡｐｐｌｉｃａｔｉｏｎ（ＡＰ）サーバ１２に送信する。データベースに記憶されたデータへのアクセスを要する場合、ＡＰサーバ１２は、受信した引数の内容に応じた問合せ文を生成して、生成した問い合わせ文をＤａｔａｂａｓｅ（ＤＢ）サーバ１３に送信する。そして、ＡＰサーバ１２は、ＤＢサーバ１３によってデータベースから抽出されたデータを入力データとしてアプリケーションを実行し、アプリケーションの処理結果をＷｅｂサーバ１１に送信する。Ｗｅｂサーバ１１は、受信したアプリケーションの処理結果をリクエストに対するレスポンスとして、端末装置１に送信する。以上は、３階層システムにおける処理の一例である。
【０００４】
情報処理システムは、１台または複数台の情報処理装置を用いて、複数構築されることがある。例えば、図１のように、情報処理システム１０、２０、３０の３つの情報処理システムが、１台または複数台の情報処理装置を備えるデータセンタ等の環境において構築される。なお、情報処理システム２０は、情報処理システム１０と同様に、Ｗｅｂサーバ２１、ＡＰサーバ２２、ＤＢサーバ２３を備え、端末装置２が送信するリクエストに応じた処理を実行する。また、情報処理システム３０も情報処理システム１０と同様に、Ｗｅｂサーバ３１、ＡＰサーバ３２、ＤＢサーバ３３を備え、端末装置３が送信するリクエストに応じた処理を実行する。情報処理システム１０、２０、３０のそれぞれは、システムを利用するユーザや、システムの種別（蔵書検索システム、社内人事情報の管理システム、など）が互いに異なる場合がある。
【０００５】
図１に示す、Ｗｅｂサーバ、ＡＰサーバ、ＤＢサーバといった各サーバは、それぞれが１台の仮想計算機（仮想マシン、Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ、ＶＭ）である。言い換えれば、図１に示す、Ｗｅｂサーバ、ＡＰサーバ、ＤＢサーバといった各サーバは、サーバソフトウェアが導入された仮想計算機である。なお、例えば、サーバ仮想化技術が適用された場合には、サーバとしてのＶＭの台数と、物理マシンとしての情報処理装置の台数とは必ずしも一致する必要はない。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特表２０１３−５４３１７１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
サーバとしての各ＶＭには、各々のサーバの種別に対応した固有のソフトウェアの他に、サーバの種別によらず必要となる、アンチウイルスソフトウェア等のソフトウェアが導入される。したがって、ＶＭが動作する場合には、ＶＭにおいて、各々のサーバの種別に対応した固有のソフトウェア（サーバソフトウェア）のプロセス、その他のソフトウェアのプロセス、Ｏｐｅｒａｔｉｎｇ  ＳｙＳｔｅｍ（ＯＳ）が実行するプロセス等が動作することとなる。
【０００８】
ところで、上述したサーバ仮想化技術とは別に、複数のサーバを１台のＶＭで動作させる技術が存在し、例えば、コンテナ技術、バーチャルコンテナなどと呼ばれる（以降ではコンテナ技術と記載する）。
【０００９】
コストパフォーマンスの向上のためには、複数のサーバを１台のＶＭで動作させた際に、ＶＭのリソース（演算処理能力やメモリ量など）の過不足を抑えることが求められる。なお以降では、複数のサーバを１台のＶＭで動作させることを、サーバを「集約」すると記載することがある。そこで例えば、サーバ集約の対象となる複数のサーバそれぞれが個別のＶＭで動作した際のリソースの使用量を合算し、合算した使用量がＶＭ１台のリソース上限を超過しない範囲で最大数のサーバを１つのＶＭに集約することが考えられる。
【００１０】
しかしながら、上述したサーバ集約においては、合算した使用量が実際の使用量よりも過剰に見積もられてしまう可能性がある。上述の合算した使用量は、サーバの種別に対応した固有のソフトウェアのプロセス以外のプロセスによるリソースの消費も、集約するサーバの数だけ発生するものとして見積もられたものである。しかし、実際にサーバを集約した場合には、固有のソフトウェアのプロセス以外のプロセスによるリソースの消費は、サーバの数ではなくＶＭの数に依存すると考えられる。すなわち、固有のソフトウェアのプロセス以外のプロセスによるリソースの消費は、サーバの数によらず、サーバ１つ分になると考えられる。言い換えれば、上述の合算した使用量は、集約するサーバの数をｎとした場合に、固有のソフトウェアのプロセス以外のプロセスが、およそ（ｎ−１）台分過剰に見積もられていると考えられる。
【００１１】
上述した過剰な見積もりを抑制するためには、１つのサーバが１つのＶＭで動作する場合に、ＶＭで動作するプロセスについて、固有のソフトウェアのプロセスであるのか、固有のソフトウェアのプロセス以外のプロセスであるのかを区別することが求められる。
【００１２】
１つの側面では、仮想マシンで動作する複数のプロセスそれぞれについて、仮想マシンに導入されたサーバソフトウェアにより生成されるプロセスであるか否かを区別可能とすることを目的とする。
【課題を解決するための手段】
【００１３】
１つの態様では、コンピュータに、サーバソフトウェアが導入された仮想マシンで動作する複数のプロセスの内の特定のプロセスが、前記サーバソフトウェアにより生成されるプロセスと前記サーバソフトウェア以外のソフトウェアにより生成されるプロセスのいずれであるかを、前記仮想マシンについて確立されたコネクションの数と、前記特定のプロセスが生成する子プロセスまたはスレッドの数と、に基づいて判定し、前記特定のプロセスが前記サーバソフトウェアにより生成されるプロセスであると判定された場合、記憶部に記憶された、前記複数のプロセス間の関係を示す情報に基づいて、前記特定のプロセス以外の前記複数のプロセスについて、前記サーバソフトウェアにより生成されるプロセスと前記サーバソフトウェア以外のソフトウェアにより生成されるプロセスのいずれであるかを判定する、処理を実行させる。
【発明の効果】
【００１４】
１つの側面では、仮想マシンで動作する複数のプロセスそれぞれについて、仮想マシンに導入されたサーバソフトウェアにより生成されるプロセスであるか否かが区別可能となる。
【図面の簡単な説明】
【００１５】
【図１】情報処理システム１０、２０、３０の概要を示す。
【図２】本実施例の概観図を示す。
【図３Ａ】集約制御装置３００のソフトウェア構成を説明する機能ブロック図を示す。
【図３Ｂ】記憶部２２０の機能ブロック図を示す。
【図４】構成情報記憶部２２３に記憶される情報の一例を示す。
【図５】ネットワーク情報記憶部２２２に記憶される情報の一例を示す。
【図６】動作情報記憶部２２１に記憶される情報の一例を示す。
【図７】ディレクトリ情報記憶部２２４に記憶される情報の一例を示す。
【図８】ディスクアクセス情報記憶部２２５に記憶される情報の一例を示す。
【図９】送受信量情報記憶部２２６に記憶される情報の一例を示す。
【図１０】本実施例におけるプロセス判定処理の手順を示すフローチャートを示す。
【図１１】ステップＳ１００３の処理の詳細を説明するフローチャートを示す。
【図１２】ＶＭの通信設定ファイルの一例を示す。
【図１３】ステップＳ１００４の処理の詳細を説明するフローチャートを示す。
【図１４】ステップＳ１００４の処理の詳細を説明するフローチャートを示す。
【図１５】ステップＳ１００５の処理の詳細を説明するフローチャートを示す。
【図１６】ステップＳ１００６の処理の詳細を説明するフローチャートを示す。
【図１７】ボトルネック判定情報記憶部２２７の一例を示す。
【図１８】本実施例によるサーバ固有プロセスの判定結果を利用した場合の集約処理と、前述の過剰な見積もり（比較例）とを比較したイメージを示す。
【図１９】集約制御装置３００のハードウェア構成の一例を示す。
【発明を実施するための形態】
【００１６】
本発明を実施する実施例について、図面とともに説明をする。
【００１７】
〔概観〕
図２は、本実施例の概観図である。本実施例のシステム１００は、情報処理装置２００、集約制御装置３００、端末装置４００を備える。
【００１８】
情報処理装置２００上では複数台のＶＭが動作し、それぞれのＶＭはいずれかの種別のサーバとして動作する。図２では、情報処理装置が１台の態様を示しているが、情報処理装置２００は複数台であっても良い。また、例えば、図２の情報処理装置２００が、複数台の情報処理装置を備えるデータセンタであっても良い。
【００１９】
集約制御装置３００は、有線または無線のネットワーク５００を介して、情報処理装置２００と通信可能に接続されている。集約制御装置３００は、情報処理装置２００上で動作するＶＭについて、プロセスごとのリソース使用量の特定や、プロセスがサーバの種別に対応した固有のソフトウェアのプロセスであるか否かの判定を実行する。なお、以降の説明では、サーバの種別に対応した固有のソフトウェアのプロセスを、便宜上「サーバ固有プロセス」と記載することがある。サーバ固有プロセスは、ＶＭにおけるサーバソフトウェアのプロセス、サーバソフトウェアにより生成されるプロセス、あるいは、サーバの稼動に直接関係するプロセスと言うこともできる。
【００２０】
端末装置４００は、ネットワーク５００を介して、情報処理装置２００と通信可能に接続されている。端末装置４００は、情報処理装置２００上で動作するＶＭにより構成される情報処理システム（上述した３階層システムなどである）に対してリクエストを送信し、リクエストに対する応答（レスポンス）を受信する。なお、以降の説明では、特に断りのない限り、単にＶＭと記載した場合には、情報処理装置２００上で動作し、サーバ１つが自装置上に導入されたＶＭを意味する。
【００２１】
〔集約制御装置３００の機能構成〕
図３Ａは、集約制御装置３００のソフトウェア構成を説明する機能ブロック図である。集約制御装置３００は、入力部２０１、表示部２０２、通信部２０３、処理部２１０、記憶部２２０を備える。
【００２２】
入力部２０１は、集約制御装置３００に対する情報の入力を受け付ける。
【００２３】
表示部２０２は、後述するサーバ集約の可否等の情報を出力する。
【００２４】
通信部２０３は、集約制御装置３００が他の装置と通信を行う際のインターフェイスとなる。
【００２５】
処理部２１０は、動作監視部２１１、ディレクトリ情報取得部２１２、判定部２１３、集約制御部２１４を備える。
【００２６】
動作監視部２１１は、情報処理装置２００で動作するＶＭの動作を監視し、動作情報を収集する。動作監視部２１１が収集する動作情報の詳細は後述する。
【００２７】
ディレクトリ情報取得部２１２は、ＶＭで動作するプロセスの実行ファイルに関する情報を取得する。ディレクトリ情報取得部２１２は、取得した情報を、例えば、後述するディレクトリ情報記憶部２２４に記憶する。
【００２８】
判定部２１３は、ＶＭで動作するプロセスについて、プロセスがサーバ固有プロセスであるか否かを判定する。本実施例において、以降の記載では、プロセスがサーバ固有プロセスであるか否かを判定する処理を「プロセス判定処理」と記載する。
【００２９】
より詳細には、本実施例では、判定部２１３は、第１判定部２１３−１、第２判定部２１３−２、第３判定部２１３−３を備える。第１判定部２１３−１は、Ｗｅｂサーバが動作するＶＭのプロセスについて、プロセス判定処理を実行する。第２判定部２１３−２は、ＡＰサーバが動作するＶＭのプロセスについて、プロセス判定処理を実行する。第３判定部２１３−３は、ＤＢサーバが動作するＶＭのプロセスについて、プロセス判定処理を実行する。ただし、本実施例では、サーバがＷｅｂサーバ、ＡＰサーバ、ＤＢサーバのいずれかであることを想定していることによるものである。したがって、判定の対象とするサーバの種別や、サーバの種別に応じた具体的な実施例の構成は、本実施例のみに限定されない。
【００３０】
集約制御部２１４は、判定部２１３の判定結果に基づいて、サーバの集約の可否や、集約するサーバの組合せの決定を行なう。また、集約制御部２１４は、決定されたサーバの組合せに基づいて、情報処理装置２００に対して、サーバの集約を実行させる指示を送信することが可能である。
【００３１】
図３Ｂは、図３Ａに示した記憶部２２０の機能ブロック図である。記憶部２２０は、例えば、図３Ｂに示すように、動作情報記憶部２２１、ネットワーク情報記憶部２２２、構成情報記憶部２２３、ディレクトリ情報記憶部２２４、ディスクアクセス情報記憶部２２５、送受信量情報記憶部２２６、ボトルネック判定情報記憶部２２７を備える。それぞれについては、記憶される情報の具体例とともに、詳細を後述する。
【００３２】
本実施例におけるプロセス判定処理について説明を行なう前に、プロセス判定処理に利用される情報の収集について説明する。
【００３３】
〔構成情報記憶部２２３〕
図４は、構成情報記憶部２２３に記憶される情報の一例を示す図である。構成情報記憶部２２３は、例えば、図４に示す、ＯＳ種別２２３１、Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ（ＩＰ）アドレス２２３２、ホスト名２２３３、サーバ種別２２３４といった情報を記憶する。構成情報記憶部２２３に記憶される情報は、情報処理装置２００上で動作する各ＶＭについての情報である。なお、本実施例において構成情報記憶部２２３に記憶される情報は、集約制御装置３００が自装置の記憶部で保持することとしても良い。あるいは、集約制御装置３００がアクセス可能な、自装置外の構成情報データベース（Ｃｏｎｆｉｇｕｒａｔｉｏｎ  Ｍａｎａｇｅｍｅｎｔ  Ｄａｔａｂａｓｅ、ＣＭＤＢ）に記憶されていても良い。
【００３４】
ＯＳ種別２２３１は、ＶＭそれぞれのＯＳが何であるかを示す情報である。図４では「ＯＳ−Ａ  ６４ｂｉｔ」、「ＯＳ−Ｂ  ３２ｂｉｔ」、「ＯＳ−Ｂ  ６４ｂｉｔ」と記載している。ただし、図４に示すデータの形式はあくまで一例であり、ＶＭそれぞれのＯＳが何であるかを特定可能な情報であれば、具体的なデータの形式は適宜変更可能である。
【００３５】
ＩＰアドレス２２３２は、ＶＭに割り当てられたＩＰアドレスを示す情報である。図４では、説明のために「ＩＰ＿Ｘ１」、「ＩＰ＿Ｘ２」、「ＩＰ＿Ｘ３」と記載しているが、実際は、例えばＩＰｖ４（ｖｅｒｓｉｏｎ  ４）やＩＰｖ６（ｖｅｒｓｉｏｎ  ６）に準拠したデータ形式である。
【００３６】
ホスト名２２３３は、ＶＭそれぞれに付与されたホスト名（コンピュータ名）を示す情報である。ホスト名２２３３は、ＶＭそれぞれが一意に識別可能な態様であれば、図４に示す態様に限定されなくても良い。
【００３７】
サーバ種別２２３４は、ＶＭそれぞれで動作するサーバの種別を示す情報である。本実施例においては、サーバの種別は、各ＶＭに導入された業務システムの種別と言うこともできる。本実施例においては、サーバの種別として、Ｗｅｂサーバ、ＡＰサーバ、ＤＢサーバを挙げている。なお、図４は、Ｗｅｂサーバ、ＡＰサーバ、ＤＢサーバがそれぞれ１台、計３台分のＶＭの情報を示している。
【００３８】
〔ネットワーク情報記憶部２２２〕
図５は、ネットワーク情報記憶部２２２に記憶される情報の一例を示す図である。ネットワーク情報記憶部２２２は、例えば、図５に示す、ローカル側ソケット情報２２２１、リモート側ソケット情報２２２２、状態情報２２２３、Ｐｒｏｃｅｓｓ  Ｉｄｅｎｔｉｆｉｅｒ（ＰＩＤ）２２２４を記憶する。ネットワーク情報記憶部２２２に記憶される情報は、情報処理装置２００上で動作するＶＭのプロセス間通信の状態に関する情報であり、例えば、ｎｅｔｓｔａｔコマンド等を利用することにより、集約制御装置３００が情報処理装置２００から収集することができる。具体的には、例えば、集約制御装置３００が、情報処理装置２００上で動作するＶＭに対して、ｎｅｔｓｔａｔコマンドの実行を指示することで、指示を受けたＶＭについての情報が取得される。そして、指示を受けたＶＭが取得した情報を集約制御装置３００に送信することで、集約制御装置３００は情報を取得することができる。なお、以降の説明では、上記のプロセス間通信をコネクションと記載することがある。
【００３９】
ローカル側ソケット情報２２２１は、コネクションにおけるローカル側のホスト名とポート番号とを含む情報である。ここでローカル側とは、情報を取得したＶＭ側のことを指す。なお、ローカル側ソケット情報２２２１は、例えば、ホスト名に代えて、ホストのＩＰアドレスを含む情報であっても良い。図５に示すローカル側ソケット情報２２２１は、ホスト名とポート番号とを「：（コロン）」で区切ったデータ形式であるが、データ中のホスト名とポート番号とを区別可能であれば、図５と異なるデータ形式でも良い。また、図５では説明のため、ポート番号を例えば「ＰＯＲＴ＿＃１１３」のように記載しているが、実際のポート番号は、例えば１６ビット（０〜６５５３５）の数値である。
【００４０】
リモート側ソケット情報２２２２は、コネクションにおけるリモート側のホスト名とポート番号とを含む情報である。ここでリモート側とは、情報を取得したＶＭの通信相手のＶＭ側のことを指す。リモート側ソケット情報２２２２についての具体的なデータ形式や変形例の採用可否については、ローカル側ソケット情報２２２１と同様である。
【００４１】
状態情報２２２３は、プロセス間通信の状態を示す情報である。図５では、例えば、「ＬＩＳＴＥＮ」という状態と「ＥＳＴＡＢＬＩＳＨＥＤ」という状態とが示されている。「ＬＩＳＴＥＮ」はコネクションの要求待ちであり、すなわちコネクションは確立されていない状態である。「ＥＳＴＡＢＬＩＳＨＥＤ」は、コネクションが確立されていることを示している。
【００４２】
ＰＩＤ２２２４は、ローカル側ソケット情報２２２１に示されるローカル側ソケットが属しているプロセスを識別する識別情報である。図５では、例えば「Ｐ＿Ｘ１１０」といった形式で記載をしているが、具体的には、ＰＩＤは例えばプロセスを一意に識別する番号（数値）である。
【００４３】
図５に示す情報により、情報が取得されたタイミングにおける、プロセス間のコネクションの状態を特定することができる。例えば、図５の行２２２−＃１を例に挙げると、ローカル側ソケットのホスト名とポート番号が「ＨＯＳＴ＿Ｘ１：ＰＯＲＴ＿＃１１０」、リモート側ソケットのホスト名とポート番号が「ＨＯＳＴ＿Ｕ１：ＰＯＲＴ＿＃Ｕ１」、コネクションは確立されていない状態（ＬＩＳＴＥＮ）であり、ローカル側ソケットに対応するプロセスのＰＩＤは「Ｐ＿Ｘ１１０」であることが特定される。また、例えば、図５の行２２２−＃２を例に挙げると、ローカル側ソケットのホスト名とポート番号が「ＨＯＳＴ＿Ｘ１：ＰＯＲＴ＿＃１１１」、リモート側ソケットのホスト名とポート番号が「ＨＯＳＴ＿Ｕ２：ＰＯＲＴ＿＃Ｕ２」、コネクションは確立されている状態（ＥＳＴＡＢＬＩＳＨＥＤ）であり、ローカル側ソケットに対応するプロセスのＰＩＤは「Ｐ＿Ｘ１１１」であることが特定される。
【００４４】
〔動作情報記憶部２２１〕
図６は、動作情報記憶部２２１に記憶される情報の一例を示す図である。動作情報記憶部２２１は、例えば、図６に示す、ＰＩＤ２２１１、Ｐａｒｅｎｔ  Ｐｒｏｃｅｓｓ  Ｉｄｅｎｔｉｆｉｅｒ（ＰＰＩＤ）２２１２、Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ（ＣＰＵ）使用率２２１３、実メモリ使用量２２１４、仮想メモリ使用量２２１５、スレッド数２２１６、実行ファイル情報２２１７を記憶する。図６に示す情報は、ＶＭで動作する各プロセスに関する情報、および各プロセスが使用するリソースの量を示す情報を含む。図６に示す情報は、例えば、ｐｓコマンド等を利用することにより、集約制御装置３００が情報処理装置２００から収集することができる。具体的には、例えば、集約制御装置３００が、情報処理装置２００上で動作するＶＭに対して、ｐｓコマンドの実行を指示することで、指示を受けたＶＭについての情報が取得される。そして、指示を受けたＶＭが取得した情報を集約制御装置３００に送信することで、集約制御装置３００は情報を取得することができる。
【００４５】
ＰＩＤ２２１１は、プロセスを識別する識別情報であり、例えば、図５のＰＩＤ２２２４と同様の態様であって良い。
【００４６】
ＰＰＩＤ２２１２は、ＰＩＤ２２１１に示されるプロセスの親プロセスの識別情報を示す情報である。すなわち、ＰＩＤ２２１１に示されるプロセスは、ＰＰＩＤ２２１２に示されるプロセスの子プロセスである。
【００４７】
ＣＰＵ使用率２２１３は、ＶＭに割り当てられたＣＰＵリソースに対するプロセスそれぞれについてのＣＰＵ使用率を示す。
【００４８】
実メモリ使用量２２１４は、プロセスそれぞれが使用するメモリ容量（実メモリ容量）を示す。また、仮想メモリ使用量２２１５は、プロセスそれぞれが使用する仮想メモリ容量を示す。
【００４９】
スレッド数２２１６は、プロセスが生成するスレッドの数を示す情報である。
【００５０】
実行ファイル情報２２１７は、各プロセスの実行ファイルを特定する情報である。なお、本実施例においては、実行ファイル情報２２１７は、例えば、各プロセスの実行ファイル名や実行コマンド名であっても良い。図６の態様では、実行ファイル情報２２１７の値には各プロセスの実行ファイル名が記憶されている。
【００５１】
〔ディレクトリ情報記憶部２２４〕
図７は、ディレクトリ情報記憶部２２４に記憶される情報の一例を示す図である。ディレクトリ情報記憶部２２４は、例えば、図７に示す実行ファイル情報２２４１、パス情報２２４２を記憶する。
【００５２】
実行ファイル情報２２４１は、実行ファイルを特定する情報であり、例えば、図６の実行ファイル情報２２１７と同様の態様であって良い。
【００５３】
パス情報２２４２は、実行ファイル情報２２４１に示される実行ファイルが格納されたディレクトリのフルパスを示す情報である。
【００５４】
図７に示す情報は、例えば、ｌｓ（ＬＳ）コマンド等を利用することにより、集約制御装置３００のディレクトリ情報取得部２１２が情報処理装置２００から収集することができる。具体的には、例えば、集約制御装置３００が、情報処理装置２００上で動作するＶＭに対して、ｌｓコマンドの実行を指示することで、指示を受けたＶＭについての情報が取得される。そして、指示を受けたＶＭが取得した情報を集約制御装置３００に送信することで、集約制御装置３００は情報を取得することができる。
【００５５】
〔ディスクアクセス情報記憶部２２５〕
図８は、ディスクアクセス情報記憶部２２５に記憶される情報の一例を示す図である。ディスクアクセス情報記憶部２２５は、ＶＭに割り当てられた記憶領域（ストレージ領域、ディスク領域）に対する各プロセスのアクセス状況、具体的にはアクセスのデータ量を示す情報を記憶する。ディスクアクセス情報記憶部２２５は、例えば、図８に示すように、ＰＩＤ２２５１、読み込みデータ量２２５２、書き込みデータ量２２５３を記憶する。
【００５６】
ＰＩＤ２２５１は、プロセスを識別する識別情報であり、例えば、図５のＰＩＤ２２２４と同様の態様であって良い。
【００５７】
読み込みデータ量２２５２は、プロセスによるＶＭに割り当てられた記憶領域から読み出す単位時間当たりのデータ量を示す。
【００５８】
書き込みデータ量２２５３は、プロセスによるＶＭに割り当てられた記憶領域に対する単位時間当たりの書き込みデータ量を示す。
【００５９】
図８に示す情報は、例えば、ｉｏｔｏｐコマンド等を利用することにより、集約制御装置３００が情報処理装置２００から収集することができる。具体的には、例えば、集約制御装置３００が、情報処理装置２００上で動作するＶＭに対して、ｉｏｔｏｐコマンドの実行を指示することで、指示を受けたＶＭについての情報が取得される。そして、指示を受けたＶＭが取得した情報を集約制御装置３００に送信することで、集約制御装置３００は情報を取得することができる。
【００６０】
〔送受信量情報記憶部２２６〕
図９は、送受信量情報記憶部２２６に記憶される情報の一例を示す図である。送受信量情報記憶部２２６は、端末装置４００に対するＷｅｂサーバのデータ送受信量を特定する情報を記憶する。送受信量情報記憶部２２６は、例えば、ネットワークインターフェイス２２６１、送信データ量２２６２、受信データ量２２６３を記憶する。
【００６１】
ネットワークインターフェイス２２６１は、ＷｅｂサーバのＮｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ（ＮＩＣ）の識別情報である。
【００６２】
送信データ量２２６２は、Ｗｅｂサーバから端末装置４００への単位時間当たりのデータ送信量を示す情報である。
【００６３】
受信データ量２２６３は、Ｗｅｂサーバが端末装置４００から受信する単位時間当たりのデータ受信量を示す情報である。
【００６４】
図９に示す情報は、例えば、ｉｆｃｏｎｆｉｇコマンド等を利用することにより、集約制御装置３００が情報処理装置２００から収集することができる。具体的には、例えば、集約制御装置３００が、情報処理装置２００上で動作するＷｅｂサーバのＶＭに対して、ｉｆｃｏｎｆｉｇコマンドの実行を指示することで、指示を受けたＶＭについての情報が取得される。そして、指示を受けたＶＭが取得した情報を集約制御装置３００に送信することで、集約制御装置３００は情報を取得することができる。
【００６５】
動作情報記憶部２２１、ネットワーク情報記憶部２２２、ディスクアクセス情報記憶部２２５、送受信量情報記憶部２２６のそれぞれに記憶される情報は、例えば、集約制御装置３００が所定の周期で複数回取得する。構成情報記憶部２２３、ディレクトリ情報２２４に記憶される情報については、例えば、集約制御装置３００があるタイミングで一度取得したものであって良い。構成情報記憶部２２３、ディレクトリ情報２２４に記憶される情報については、システムの構成変更が発生しなければ変化の起こらない情報であるためである。ただし、構成情報記憶部２２３、ディレクトリ情報２２４に記憶される情報が、例えば、異なる複数のタイミングで取得されたうちの最新のタイミングで取得された情報であっても構わない。
【００６６】
〔判定処理の詳細〕
本実施例におけるプロセス判定処理について、詳細を説明する。
【００６７】
図１０は、本実施例におけるプロセス判定処理の手順を示すフローチャートである。
【００６８】
まず、判定部２１３は、構成情報記憶部２２３に情報が記憶されているＶＭの中から１つのＶＭを選択し、プロセス判定処理の対象とする（ステップＳ１００１）。
【００６９】
次に判定部２１３は、ステップＳ１００１において選択されたＶＭで動作するサーバの種別を判定する（ステップＳ１００２）。例えば、判定部２１３は、構成情報記憶部２２３において、ステップＳ１００１において選択されたＶＭのホスト名２２３３と関連付けられているサーバ種別２２３４を参照することで、サーバの種別を判定することとしても良い。サーバの種別がＷｅｂサーバである場合、第１判定部２１３−１が第１の判定処理を実行する（ステップＳ１００３）。サーバの種別がＡＰサーバである場合、第２判定部２１３−２が第２の判定処理（ステップＳ１００４）および第３の判定処理を実行する（ステップＳ１００５）を実行する。サーバの種別がＤＢサーバである場合、第３判定部２１３−３が第４の判定処理を実行する（ステップＳ１００６）。ステップＳ１００３〜Ｓ１００６のそれぞれは、ＶＭのプロセスについて、サーバ固有プロセスであるか否かを判定する処理である。ステップＳ１００３〜Ｓ１００６のそれぞれについては、詳細を後述する。
【００７０】
ステップＳ１００３〜Ｓ１００６のいずれかの処理が実行された後、判定部２１３は、全てのＶＭがステップＳ１００１で対象として選択されたかを判定する（ステップＳ１００７）。ここで、全てのＶＭとは、構成情報記憶部２２３に情報が記憶されている全てのＶＭとしても良いし、構成情報記憶部２２３に情報が記憶されている全てのＶＭの中から指定された、いくつかのＶＭであっても良い。全てのＶＭが選択されていないと判定された場合（ステップＳ１００７、ＮＯ）、ステップＳ１００１の処理に戻る。一方、全てのＶＭが選択されたと判定された場合（ステップＳ１００７、ＹＥＳ）、図１０に示す一連の処理は終了する。
【００７１】
以降では、ステップＳ１００３〜Ｓ１００６のそれぞれで実行される処理について、詳細を説明する。なお、以降の説明で、図５および図６を用いて詳細を説明することがあるが、説明においては、図５および図６に示される情報は、同一のタイミングで取得されたものとする。
【００７２】
〔ステップＳ１００３の詳細〕
図１１は、図１０のステップＳ１００３の処理の詳細を説明するフローチャートである。図１１の処理は、本実施例においては、サーバの種別がＷｅｂサーバと判定されたＶＭのプロセスに対して、第１判定部２１３−１が実行する処理である。
【００７３】
まず、第１判定部２１３−１は、対象のＶＭ（Ｗｅｂサーバ）が端末装置４００からリクエストを受信する際に利用するポートのポート番号を取得する（ステップＳ１１０１）。リクエストを受信する際に利用するポートのポート番号は、例えば、対象のＶＭの通信設定ファイルおいて、サービス名が「ｈｔｔｐ」または「ｈｔｔｐｓ」であるＴｒａｎｓｍｉｓｓｉｏｎ Ｃｏｎｔｒｏｌ Ｐｒｏｔｏｃｏｌ（ＴＣＰ）通信に割り当てられたポート番号である。
【００７４】
図１２は、ＶＭの通信設定ファイルの一例を示す図である。図１２の通信設定ファイル１２００では、領域１２０１にサービス名が示され、領域１２０２にポート番号と通信プロトコルが示される。
【００７５】
図１１の説明に戻って、ステップＳ１１０１の後、第１判定部２１３−１は、確立されたコネクションの数を特定する（ステップＳ１１０２）。ここで、確立されたコネクションの数は、例えば、ネットワーク情報記憶部２２２に記憶された情報に基づいて特定することができる。例えば、第１判定部２１３−１は、ステップＳ１１０１で取得されたポート番号をローカル側ソケット情報２２２１に含み、かつ、状態情報２２２３の値が「ＥＳＴＡＢＬＩＳＨＥＤ」である条件に該当するコネクションを特定する。そして、第１判定部２１３−１は、該当するコネクションの合計数を確立されたコネクションの数として特定する。本実施例では、図５における、データ行２２２−＃２、２２２−＃３、２２２−＃４に示されるコネクションが該当することとし、確立されたコネクションの数は３とする。
【００７６】
ステップＳ１１０２の処理の終了後、第１判定部２１３−１は、ステップＳ１１０２で選択したプロセスについて、子プロセスの数を特定する（ステップＳ１１０３）。子プロセスの数は、例えば、あるタイミングで取得された動作情報において、ステップＳ１１０２で選択したプロセスを親プロセスとするプロセスの数としても良い。ここで、第１判定部２１３−１は、親プロセスの識別情報（ＰＰＩＤ）と特定した子プロセスの数とを対応付けて記憶しておく。例えば図６に示す２２１−＃１の範囲のプロセスがＷｅｂサーバのプロセスとして取得されたとすると、子プロセス数が３のＰＰＩＤ＝Ｐ＿Ｘ１１０、子プロセス数が１のＰＰＩＤ＝Ｐ＿Ｘ１２０、子プロセス数が１のＰＰＩＤ＝Ｐ＿Ｘ１３０、子プロセス数が１のＰＰＩＤ＝Ｐ＿Ｘ１４０が特定される。
【００７７】
第１判定部２１３−１は、ステップＳ１１０３で子プロセスの数が特定された親プロセスの中から、１つの親プロセスを選択する（ステップＳ１１０４）。
【００７８】
そして、第１判定部２１３−１は、ステップＳ１１０３で特定した、確立されたコネクションの数と、ステップＳ１１０４で選択した親プロセスの子プロセスの数とを比較する。そして、第１判定部２１３−１は、確立されたコネクションの数と子プロセスの数とが一致するか否かを判定する（ステップＳ１１０５）。
【００７９】
確立されたコネクションの数と子プロセスの数とが一致すると判定した場合（ステップＳ１１０５、ＹＥＳ）、第１判定部２１３−１は、ステップＳ１１０４で選択された親プロセスおよび親プロセスの子プロセスを、サーバ固有プロセスであると判定する（ステップＳ１１０６）。一方、確立されたコネクションの数と子プロセスの数とが一致すると判定しない場合（ステップＳ１１０５、ＮＯ）、第１判定部２１３−１は、ステップＳ１１０４で選択された親プロセスおよび親プロセスの子プロセスを、サーバ固有プロセスではないと判定する（ステップＳ１１０７）。
【００８０】
例えば、図６の例では、ＰＰＩＤ＝Ｐ＿Ｘ１１０のプロセスは子プロセス数が３であり、確立されたコネクションの数である３と一致するので、サーバ固有プロセスであると判定される。一方、ＰＰＩＤ＝Ｐ＿Ｘ１２０のプロセス、ＰＰＩＤ＝Ｐ＿Ｘ１３０のプロセス、ＰＰＩＤ＝Ｐ＿Ｘ１４０のプロセスは、子プロセス数が１であり、確立されたコネクションの数である３と一致しないので、サーバ固有プロセスではないと判定される。
【００８１】
ステップＳ１１０６またはＳ１１０７の後、第１判定部２１３−１は、ステップＳ１１０４において全ての親プロセスが選択されたか否かを判定する（ステップＳ１１０８）。全ての親プロセスが選択されていない場合（ステップＳ１１０８、ＮＯ）、ステップＳ１１０４に戻り、未選択の親プロセスを選択してステップＳ１１０５〜Ｓ１１０８の処理を繰り返す。一方、全ての親プロセスが選択された場合（ステップＳ１１０８、ＹＥＳ）、第１判定部２１３−１は、ステップＳ１１０９の処理を実行する。
【００８２】
ステップＳ１１０１〜Ｓ１１０８の処理により、サーバ固有プロセスが特定された後、第１判定部２１３−１は、サーバ固有プロセスの追加特定処理を実行する（ステップＳ１１０９）。
【００８３】
ステップＳ１１０９において、第１判定部２１３−１は、特定されたサーバ固有プロセスについて、プロセスの実行ファイルが格納されたディレクトリを特定する。なお、ステップＳ１１０１〜Ｓ１１０８の処理によりサーバ固有プロセスが複数特定されている場合は、その複数のサーバ固有プロセスおよび子プロセスがステップＳ１１０９の処理の対象となる。実行ファイルが格納されたディレクトリを特定するためには、例えば、第１判定部２１３−１は、動作情報記憶部２２１において、サーバ固有プロセスのＰＩＤと対応付けられた実行ファイル情報２２１７に示される実行ファイルを特定する。そして、第１判定部２１３−１は、ディレクトリ情報記憶部２２４を参照して、特定した実行ファイルに対応するディレクトリを特定する。具体的には、ディレクトリ情報記憶部２２４において、特定した実行ファイル（実行ファイル情報２２４１の値）と対応付けられているパス情報２２４２に示される実行ファイルのフルパスに基づいて、実行ファイルが格納されたディレクトリが特定される。
【００８４】
そして、第１判定部２１３−１は、ディレクトリにおける実行ファイルの格納位置の位置関係に基づいて、サーバ固有プロセスの判定を行なう。具体的には、第１判定部２１３−１は、特定したディレクトリおよび特定したディレクトリの配下のディレクトリに格納された実行ファイルに対応するプロセスについてもサーバ固有プロセスであると判定する。
【００８５】
例えば、図６および図７を例に挙げると、前述の例でサーバ固有プロセスであると判定されたＰＰＩＤ＝Ｐ＿Ｘ１１０のプロセスの実行ファイル名はＣＭＤ＿＃１であり、実行ファイルのディレクトリのフルパスは「／ｏｐｔ／ｌｏｃａｌ／ｂｉｎ／ＣＭＤ_＃１」である。実行ファイル名がＣＭＤ＿＃４の実行ファイルは、実行ファイル名がＣＭＤ＿＃１の実行ファイルと同一のディレクトリに格納されている。実行ファイル名がＣＭＤ＿＃５の実行ファイルは、実行ファイル名がＣＭＤ＿＃１の実行ファイルのディレクトリの配下のディレクトリに格納されている。実行ファイル名がＣＭＤ＿＃６の実行ファイルは、実行ファイル名がＣＭＤ＿＃１の実行ファイルのディレクトリと同一でも配下でもないディレクトリに格納されている。したがって、第１判定部２１３−１は、図６の情報を参照して、実行ファイル名がＣＭＤ＿＃４であるＰＰＩＤ＝Ｐ＿Ｘ１２０のプロセス、実行ファイル名がＣＭＤ＿＃５であるＰＰＩＤ＝Ｐ＿Ｘ１３０のプロセスをサーバ固有プロセスであると判定する。一方、第１判定部２１３−１は、実行ファイル名がＣＭＤ＿＃６であるＰＰＩＤ＝Ｐ＿Ｘ１４０のプロセスはサーバ固有プロセスでないと判定する。なお、ＰＰＩＤ＝Ｐ＿Ｘ１２０のプロセス、ＰＰＩＤ＝Ｐ＿Ｘ１３０のプロセスは、ステップＳ１１０５〜Ｓ１１０７の説明で記載した例においては、サーバ固有プロセスであると判定されなかったプロセスである。
【００８６】
ステップＳ１１０９の処理により特定されるサーバ固有プロセスは、サーバ固有プロセスの実行ファイルと同一のディレクトリ、またはサーバ固有プロセスの実行ファイルのディレクトリの配下のディレクトリに格納された実行ファイルにより生成されるプロセスである。ステップＳ１１０９の処理により、ステップＳ１１０１〜Ｓ１１０８では特定しきれなかったプロセスの中からもサーバプロセスを抽出することができる。
【００８７】
ステップＳ１１０９の処理の終了後、図１１に示す一連の処理は終了する。なお、以上の説明は、あるタイミングにおいて取得されたプロセスの動作状況、ネットワークの状況に基づく一連の処理を説明した。ただし、複数のタイミングで（例えば、所定の周期で定期的に）プロセスの動作状況、ネットワークの状況が取得されている場合は、各タイミングのプロセスの動作状況、ネットワークの状況に基づいて図１１に示す一連の処理が複数回実行されても良い。そして、第１判定部２１３−１が、複数回の実行の中で所定回数（例えば１回）以上、サーバ固有プロセスである判定されたプロセスをサーバ固有プロセスと特定し、サーバ固有プロセスである判定された回数が所定回数未満のプロセスをサーバ固有プロセスではないと判断することとしても良い。
【００８８】
Ｗｅｂサーバのプロセス（受付プロセス）は、端末装置４００からのリクエストを受信すると、プロセスについての端末装置４００とのコネクションが確立（「ＥＳＴＡＢＬＩＳＨＥＤ」）され、子プロセスを生成する。子プロセスの生成後は、リクエストに対応した処理は子プロセスに引き継がれる。そして、子プロセスについての端末装置４００とのコネクションが確立されるとともに、親プロセスについての端末装置４００とのコネクションは要求待ち状態（「ＬＩＳＴＥＮ」）となる。リクエストに対応した処理か完了した場合、子プロセスは消滅するが、完了までの間、すなわち子プロセスが存在する間は、コネクションの確立が維持される。そのため、Ｗｅｂサーバへの確立されたコネクションの数とＷｅｂサーバのプロセス（受付プロセス）の子プロセスの数は等しくなる。この特性を用いて、Ｗｅｂサーバについてのサーバ固有プロセスを特定することができる。本実施例の特定手法では、コネクションの数と子プロセス数との比較によりサーバ固有プロセスを特定する。そのため、例えば、リクエストを受信したタイミングで偶発的にリソース使用量が上がるようなプロセスはサーバ固有プロセスではないと判定可能である点で、判定精度が向上する。
【００８９】
また、特定したサーバ固有プロセスの実行ファイルのディレクトリには、コネクションの数と子プロセス数との比較では特定できないものの、サーバ固有プロセスであるプロセスの実行ファイルが格納されている。したがって、特定したサーバ固有プロセスの実行ファイルと同一のディレクトリまたは配下のディレクトリに実行ファイルが格納されたプロセスについてもサーバ固有プロセスと特定することで、さらに判定精度を向上させることができる。ここで抽出されるプロセスは、例えば、ログの出力を行なうプロセスや、不要なリソースの回収を実行するプロセス等であり、例えばバックグラウンドプロセスなどと呼ばれる。
【００９０】
〔ステップＳ１００４の詳細〕
図１３および図１４は、図１０のステップＳ１００４の処理の詳細を説明するフローチャートである。図１３および図１４の処理は、本実施例においては、サーバの種別がＡＰサーバと判定されたＶＭのプロセスに対して、第２判定部２１３−２が実行する処理である。
【００９１】
まず、第２判定部２１３−２は、対象のＶＭ（ＡＰサーバ）について、Ｗｅｂサーバとの間で確立されたコネクションを特定する（ステップＳ１３０１）。例えば、第２判定部２１３−２は、対象のＶＭとＷｅｂサーバのＶＭそれぞれについて、ネットワーク情報記憶部２２２に記憶された情報に基づいて、確立されたコネクションを特定することができる。
【００９２】
より詳細には、例えば、第２判定部２１３−２は、対象のＶＭ（ＡＰサーバ）について、ネットワーク情報記憶部２２２に記憶された情報が下記の条件全てを満たすコネクションを、確立されたコネクションであると判定する。
条件１：ローカル側ソケット情報２２２１の値（ホスト名とポート番号）が、ＷｅｂサーバのＶＭのリモート側ソケット情報２２２２の値と一致する。
条件２：リモート側ソケット情報２２２２の値が、ＷｅｂサーバのＶＭのローカル側ソケット情報２２２１の値と一致する。
条件３：状態情報２２２３に示されるコネクションの状態が「ＥＳＴＡＢＬＩＳＨＥＤ」である。
【００９３】
なお、上記の条件１〜３に加え、さらに下記が条件として加えられても良い。
条件４：ＷｅｂサーバのＶＭの状態情報２２２３に示されるコネクションの状態も「ＥＳＴＡＢＬＩＳＨＥＤ」である。
条件５：コネクションのプロトコルがＴＣＰである。
【００９４】
図５を用いて具体例を説明する。例えば、図５のデータ行２２２−＃８〜２２２−＃１１に示されるコネクションがＡＰサーバのコネクションとして特定されたとする。この場合、データ行２２２−＃９、２２２−＃１０、２２２−＃１１のコネクションについて上記の条件１〜条件３を満たす、データ行２２２−＃５〜２２２−＃７に示されるＷｅｂサーバのコネクションが存在する。したがって、データ行２２２−＃９、２２２−＃１０、２２２−＃１１のコネクションは、ＡＰサーバについての確立されたコネクションであると特定される。なお、図５の例では条件１〜３に加え、条件４、５も満たす。
【００９５】
ステップＳ１３０１の実行後、第２判定部２１３−２は、ステップＳ１３０１で特定された、確立されたコネクションのそれぞれについて、対応するプロセスを特定する（ステップＳ１３０２）。具体的には、第２判定部２１３−２は、確立されたコネクションのそれぞれについて、ローカル側ソケットが属しているプロセスを特定する。図５においては、データ行２２２−＃９、２２２−＃１０、２２２−＃１１に示される、ＰＩＤ＝Ｐ＿Ｘ２１１、Ｐ＿Ｘ２２１、Ｐ＿Ｘ２３１のプロセスが該当する。
【００９６】
さらに、第２判定部２１３−２は、ステップＳ１３０２で特定されたプロセスそれぞれの親プロセスを特定する（ステップＳ１３０３）。なお、ここで特定される親プロセスは、自身がＷｅｂサーバとのコネクションを確立している、またはＷｅｂサーバからの接続待ち状態であるプロセスのみを対象とする。Ｗｅｂサーバからの接続待ち状態であるプロセスは、例えば、図５に示すリモート側ソケット情報２２２２の値にＷｅｂサーバのホスト名を含み、状態情報２２２３に示されるコネクションの状態が「ＬＩＳＴＥＮ」であることを条件として特定可能である。本実施例では、図５および図６より、ＰＰＩＤ＝Ｐ＿Ｘ２１０のプロセスが親プロセスとして特定される。
【００９７】
第２判定部２１３−２は、ステップＳ１３０３で特定された親プロセスの中から、１つのプロセスを選択する（ステップＳ１３０４）。
【００９８】
第２判定部２１３−２は、ステップＳ１３０４で選択したプロセスそれぞれについての、確立されたコネクションの数を特定する（ステップＳ１３０５）。
【００９９】
例えば、ステップＳ１３０４で選択されたプロセスがＰＰＩＤ＝Ｐ＿Ｘ２１０の親プロセスであったとすると、図５および図６より、確立されたコネクションの数は１となる。
【０１００】
第２判定部２１３−２は、ステップＳ１３０４で選択したプロセスそれぞれについての子プロセスの数を特定する（ステップＳ１３０６）。
【０１０１】
例えば、ステップＳ１３０４で選択されたプロセスがＰＰＩＤ＝Ｐ＿Ｘ２１０の親プロセスであったとすると、図６より、子プロセスの数は３となる。
第２判定部２１３−２は、ステップＳ１３０４で選択したプロセスそれぞれについて、確立されたコネクションの数と、子プロセスの数とを比較する。そして、第２判定部２１３−２は、子プロセスの数が確立されたコネクションの数以上であるか否かを判定する（ステップＳ１３０７）。
【０１０２】
子プロセスの数が確立されたコネクションの数以上であると判定した場合（ステップＳ１３０７、ＹＥＳ）、第２判定部２１３−２は、ステップＳ１３０４で選択されたプロセスを、サーバ固有プロセスであると判定する（ステップＳ１３０８）。一方、子プロセスの数が確立されたコネクションの数以上でないと判定した場合（ステップＳ１３０７、ＮＯ）、第２判定部２１３−２は、ステップＳ１３０２で選択されたプロセスを、サーバ固有プロセスではないと判定する（ステップＳ１３０９）。
【０１０３】
例えば、ステップＳ１３０４で選択されたプロセスがＰＰＩＤ＝Ｐ＿Ｘ２１０の親プロセスであったとすると、前述の例示のように、子プロセスの数は３であり、確立されたコネクションの数である１以上であるので、第２判定部２１３−２は、ＰＰＩＤ＝Ｐ＿Ｘ２１０の親プロセス（およびその子プロセス）を、サーバ固有プロセスであると判定する。
【０１０４】
ステップＳ１３０８またはステップＳ１３０９の処理を終了後、第２判定部２１３−２は、ステップＳ１３０４において全ての親プロセスが選択されたか否かを判定する（ステップＳ１３１０）。全ての親プロセスが選択されていないと判定した場合（ステップＳ１３１０、ＮＯ）、ステップＳ１３０４に戻り、第２判定部２１３−２は、未選択のプロセスを１つ選択して処理を繰り返す。
【０１０５】
全ての親プロセスが選択されたと判定した場合（ステップＳ１３１０、ＹＥＳ）、第２判定部２１３−２は、サーバ固有プロセスの追加特定処理を実行する（ステップＳ１３１１）。ステップＳ１３１１の処理は、例えば、図１１のステップＳ１１０９として説明した追加特定処理と同様であって良い。
【０１０６】
ステップＳ１３１１の終了後、図１３および図１４に示す一連の処理は終了する。なお、以上の説明は、あるタイミングにおいて取得されたプロセスの動作状況、ネットワークの状況に基づく一連の処理を説明した。ただし、複数のタイミングで（例えば、所定の周期で定期的に）プロセスの動作状況、ネットワークの状況が取得されている場合は、各タイミングのプロセスの動作状況、ネットワークの状況に基づいて図１３および図１４に示す一連の処理が複数回実行されても良い。そして、第２判定部２１３−２が、複数回の実行の中で所定回数（例えば１回）以上、サーバ固有プロセスである判定されたプロセスをサーバ固有プロセスと特定し、サーバ固有プロセスである判定された回数が所定回数未満のプロセスをサーバ固有プロセスではないと判断することとしても良い。
【０１０７】
〔ステップＳ１００５の詳細〕
図１５は、図１０のステップＳ１００５の処理の詳細を説明するフローチャートである。
図１５の処理は、本実施例においては、サーバの種別がＡＰサーバと判定されたＶＭのプロセスに対して、第２判定部２１３−２が実行する処理である。
【０１０８】
まず、第２判定部２１３−２は、対象のＶＭ（ＡＰサーバ）について、Ｗｅｂサーバとの間で確立されたコネクションを特定する（ステップＳ１５０１）。また、第２判定部２１３−２は、ステップＳ１５０１で特定された、確立されたコネクションのそれぞれについて、対応するプロセスを特定する（ステップＳ１５０２）。ステップＳ１５０１、Ｓ１５０２の処理は、例えば、前述したステップＳ１３０１、Ｓ１３０２と同様の処理であっても良いし、ステップＳ１３０１、Ｓ１３０２の処理結果を流用することとしても良い。図６の例では、ＰＩＤ＝Ｐ＿Ｘ２１１、ＰＩＤ＝Ｐ＿Ｘ２２１、ＰＩＤ＝Ｐ＿Ｘ２３１のプロセスが特定される。
【０１０９】
次に、第２判定部２１３−２は、ステップＳ１５０２で特定されたプロセスごとに、確立されたコネクションの数を特定する（ステップＳ１５０３）。図６の例では、ＰＩＤ＝Ｐ＿Ｘ２１１、ＰＩＤ＝Ｐ＿Ｘ２２１、ＰＩＤ＝Ｐ＿Ｘ２３１のプロセスそれぞれについて、確立されたコネクションの数は１となる。
【０１１０】
そして、第２判定部２１３−２は、ステップＳ１５０２で特定されたプロセスの中から１つのプロセスを選択し（ステップＳ１５０４）、選択したプロセスについて、後述するステップＳ１５０５〜Ｓ１５０９の処理を実行する。
【０１１１】
ステップＳ１５０５において、第２判定部２１３−２は、ステップＳ１５０４で選択したプロセスについて、プロセスのスレッド数を特定する。プロセスのスレッド数は、例えば、図６に示す動作情報記憶部２２１に記憶されたスレッド数２２１６の情報のうち、ステップＳ１５０４で選択したプロセスのＰＩＤに対応するデータ行の値（数値）を参照することで特定が可能である。
【０１１２】
ステップＳ１５０５の後、第２判定部２１３−２は、ステップＳ１５０４で選択したプロセスについて、確立されたコネクション数と、プロセスのスレッド数とを比較する。そして、第２判定部２１３−２は、スレッドの数が確立されたコネクションの数よりも大きいか否かを判定する（ステップＳ１５０６）。
【０１１３】
スレッドの数が確立されたコネクションの数よりも大きいと判定した場合（ステップＳ１５０６、ＹＥＳ）、第２判定部２１３−２は、ステップＳ１５０４で選択されたプロセスを、サーバ固有プロセスであると判定する（ステップＳ１５０７）。一方、子プロセスの数が確立されたコネクションの数以上でないと判定した場合（ステップＳ１５０６、ＮＯ）、第２判定部２１３−２は、ステップＳ１５０４で選択されたプロセスを、サーバ固有プロセスではないと判定する（ステップＳ１５０８）。
【０１１４】
例えば、図６の例では、ＰＩＤ＝Ｐ＿Ｘ２２１のプロセスのスレッド数は２であり、確立されたコネクションの数である１よりも大きい。したがって、第２判定部２１３−２は、ＰＩＤ＝Ｐ＿Ｘ２２１のプロセスをサーバ固有プロセスであると判定する。一方、ＰＩＤ＝Ｐ＿Ｘ２１１、ＰＩＤ＝Ｐ＿Ｘ２３１のプロセスは、それぞれスレッド数は１であり、確立されたコネクションの数である１よりも大きくない。したがって、第２判定部２１３−２は、ＰＩＤ＝Ｐ＿Ｘ２１１、ＰＩＤ＝Ｐ＿Ｘ２３１のプロセスをサーバ固有プロセスではないと判定する。
【０１１５】
ステップＳ１５０７またはステップＳ１５０８の処理を終了後、第２判定部２１３−２は、ステップＳ１５０４において全てのプロセスが選択されたか否かを判定する（ステップＳ１５０９）。全てのプロセスが選択されていないと判定した場合（ステップＳ１５０９、ＮＯ）、ステップＳ１５０４に戻り、第２判定部２１３−２は、未選択のプロセスを１つ選択して処理を繰り返す。
【０１１６】
全てのプロセスが選択されたと判定した場合（ステップＳ１５０９、ＹＥＳ）、第２判定部２１３−２は、サーバ固有プロセスの追加特定処理を実行する（ステップＳ１５１０）。ステップＳ１５１０の処理は、例えば、図１１のステップＳ１１０９として説明した追加特定処理と同様であって良い。
【０１１７】
ステップＳ１５１０の終了後、図１５に示す一連の処理は終了する。なお、以上の説明は、あるタイミングにおいて取得されたプロセスの動作状況、ネットワークの状況に基づく一連の処理を説明した。ただし、複数のタイミングで（例えば、所定の周期で定期的に）プロセスの動作状況、ネットワークの状況が取得されている場合は、各タイミングのプロセスの動作状況、ネットワークの状況に基づいて図１５に示す一連の処理が複数回実行されても良い。そして、第２判定部２１３−２が、複数回の実行の中で所定回数（例えば１回）以上、サーバ固有プロセスである判定されたプロセスをサーバ固有プロセスと特定し、サーバ固有プロセスである判定された回数が所定回数未満のプロセスをサーバ固有プロセスではないと判定することとしても良い。
【０１１８】
端末装置からリクエストを受信したＷｅｂサーバは、リクエストの要求内容に応じ、ＡＰサーバ上のアプリケーションのプロセスとコネクションを確立し、リクエストを送る。リクエストを受けたＡＰサーバのプロセスは、子プロセス、またはスレッドを生成する。このとき生成される子プロセス数、またはスレッド数はアプリケーションに依存するが、一つ以上の子プロセス、またはスレッドを生成する。そのため、リクエストに応じて子プロセスを生成するＡＰサーバのプロセスの子プロセス数は、ＷｅｂサーバとＡＰサーバとのコネクション数以上となる特性がある。また、リクエストに応じてスレッドを生成するＡＰサーバのプロセスのスレッド数は、ＷｅｂサーバとＡＰサーバとのコネクションより大きくなる特性がある（スレッドの生成前の状態でスレッド数が１と取得されるため）。
【０１１９】
本実施例の特定手法では、ＡＰサーバについて、コネクションの数と子プロセス数との比較、またはコネクションの数と生成したスレッド数との比較によりサーバ固有プロセスを特定する。そのため、例えば、リクエストを受信したタイミングで偶発的にリソース使用量が上がるようなプロセスはサーバ固有プロセスではないと判定可能である点で、判定精度が向上する。
【０１２０】
また前述のＷｅｂサーバと同様に、特定したサーバ固有プロセスの実行ファイルと同一のディレクトリまたは配下のディレクトリに実行ファイルが格納されたプロセスについてもサーバ固有プロセスと特定する。これによりＡＰサーバのバックグラウンドプロセスが特定できるので、さらに判定精度を向上させることができる。
【０１２１】
なお、本実施例のように、ＡＰサーバについては、コネクションの数と子プロセス数との比較、またはコネクションの数と生成したスレッド数との比較によりサーバ固有プロセスが特定される。そのため、コネクションの数と子プロセス数との比較、またはコネクションの数と生成したスレッド数との比較の少なくともいずれかでサーバ固有プロセスと判定されたプロセスを、サーバ固有プロセスであるとして良い。また、コネクションの数と子プロセス数との比較、またはコネクションの数と生成したスレッド数との比較のいずれか一方のみであっても、ＡＰサーバのサーバ固有プロセスを特定することが可能だが、両方の処理を行なうことで、判定精度を向上させることができる。
【０１２２】
〔ステップＳ１００６の詳細〕
図１６は、図１０のステップＳ１００６の処理の詳細を説明するフローチャートである。図１６の処理は、本実施例においては、サーバの種別がＤＢサーバと判定されたＶＭのプロセスに対して、第３判定部２１３−３が実行する処理である。
【０１２３】
図１６の一連の処理においては、まず、第３判定部２１３−３は、ＤＢサーバの応答性能が低下している期間を特定する（ステップＳ１６０１）。なお、以降の説明では、ＤＢサーバの応答性能が低下している期間をレスポンス悪化期間、ＤＢサーバの応答性能の低下をボトルネックと記載することがある。
【０１２４】
本実施例における、ＤＢサーバのレスポンス悪化期間を特定する手法について、概要を説明する。なお、説明にあたり、集約制御装置３００は、異なる複数のタイミング、例えば所定の期間内に一定の周期で、ＶＭの動作情報、ネットワーク情報等を取得しているものとする。レスポンス悪化期間とは、ＶＭの動作情報、ネットワーク情報等が取得された所定期間のうち、ＤＢサーバの応答性能が低下している期間である。
【０１２５】
情報処理システムのレスポンスが悪化していない場合、情報処理システムにおける、Ｗｅｂサーバのデータ送信量とデータ受信量との比率（送受信比率）は一定となる特性がある（ただし、一定となった場合の比率はシステムごとに異なる）。なお、以降の説明では、送受信比率＝データ送信量／データ受信量であるとして説明する。
【０１２６】
一方、情報処理システムの応答性能が悪化している場合は、Ｗｅｂサーバの送受信比率は、通常時と比較するとデータ送信量の割合が少なくなる。すなわち、送受信比率の値は通常時と比較すると小さくなる。この特性を利用して、所定期間の間に収集した、Ｗｅｂサーバのデータ送信量とデータ受信量をもとに、情報処理システムのレスポンスが悪化している期間を特定することができる。
【０１２７】
さらに、情報処理システムの応答性能が悪化していない場合、各サーバ間のコネクションの数の比率も一定となる特性がある。すなわち、端末装置〜Ｗｅｂサーバ間のコネクションの数をＡ、Ｗｅｂサーバ〜ＡＰサーバ間のコネクションの数をＢ、ＡＰサーバ間〜ＤＢサーバ間のコネクションの数をＣとしたときに、Ａ：Ｂ：Ｃが一定となる特性がある。一方、ＤＢサーバが要因となって情報処理システムの応答性能が悪化している場合、前述の通りＷｅｂサーバの送受信比率が通常時と比較するとデータ送信量の割合が少なくなり、かつ、Ａ：Ｂ：Ｃは、通常時と同様であるか、Ｃのみが通常時と比較して大きくなる特性がある。したがって、Ｗｅｂサーバの送受信比率と各サーバ間のコネクションの数の比率とに基づいて、ＤＢサーバのレスポンス悪化期間を特定することが可能となる。
【０１２８】
ここで、上述の通常時の送受信比率やコネクション数は、例えば、動作情報、ネットワーク情報が収集されていた所定期間における送受信比率やコネクション数の平均値としても良い。あるいは、レスポンス悪化期間であるか否かの判定対象の期間を所定期間から除いた期間の送受信比率やコネクション数の平均値としても良い。
【０１２９】
ステップＳ１６０１の後、第３判定部２１３−３は、ステップＳ１６０１で特定されたレスポンス悪化期間のうちの１つを選択する（ステップＳ１６０２）。
【０１３０】
第３判定部２１３−３は、ステップＳ１６０２で選択したレスポンス悪化期間について、ボトルネックの種別を特定する（ステップＳ１６０３）。本実施例においては、ボトルネックの種別は、ＤＢサーバの応答性能悪化の要因と言うこともできる。第３判定部２１３−３は、例えば、レスポンス悪化期間におけるリソースの使用状況と、図１７に示すボトルネック判定情報記憶部２２７に記憶された情報とに基づいて、ボトルネックの種別を特定する。
【０１３１】
図１７は、ボトルネック判定情報記憶部２２７の一例を示す図である。例えば、ボトルネック判定情報記憶部２２７は、ボトルネック種別２２７１、全体リソース傾向２２７２、プロセスリソース傾向２２７３を記憶する。
【０１３２】
ボトルネック種別２２７１は、ボトルネックの種別を示す情報である。図１７に示すボトルネック種別２２７１について、「ＣＰＵ」はＣＰＵによるボトルネックであることを示す。また、「ストレージ（ディスク）」は、ストレージによるボトルネックであることを示す。なおストレージとは、ＶＭについて、メモリとは別に割り当てられる記憶手段、あるいは記憶領域を示し、例えば、情報処理装置２００が備えるＨａｒｄ  ＤｉＳｋ  Ｄｒｉｖｅ（ＨＤＤ）等の記憶装置の記憶領域の一部が割り当てられたものである。
【０１３３】
「排他制御」は、データベースへのアクセスにおける排他制御による処理待ち（ロック）によるボトルネックであることを示す。また、「ネットワーク」は、ＤＢサーバのＶＭが他のＶＭと通信を行なう際に用いるネットワークの遅延や輻輳によるボトルネックであることを示す。本実施例においては、ボトルネック種別、すなわちＤＢサーバの応答性能悪化の要因は、図１７に示す４つに分類可能であるとしている。
【０１３４】
全体リソース傾向２２７２は、ボトルネックの種別それぞれについての、レスポンス悪化期間におけるＶＭ全体のリソースの使用状況の傾向を示す情報である。
【０１３５】
プロセスリソース傾向２２７３は、ボトルネックの種別それぞれについての、レスポンス悪化期間におけるサーバ固有プロセスのリソースの使用状況の傾向を示す情報である。
【０１３６】
図１７を用いてステップＳ１６０３の処理を説明すると、第３判定部２１３−３は、レスポンス悪化期間におけるＶＭ全体のリソースの使用状況を特定する。具体的には、第３判定部２１３−３は、例えば、レスポンス悪化期間におけるＶＭ全体の各リソースの使用量が、「低い」、「変動無し」、「高い」のいずれに該当するかを判定する。「低い」、「変動無し」、「高い」の具体的な判定は、例えば、レスポンス悪化期間におけるＶＭ全体の各リソースの使用量がＶＭ全体の各リソースの平均使用量に対して、所定の閾値以上大きい場合は「高い」と判定することとして良い。また、レスポンス悪化期間におけるＶＭ全体の各リソースの使用量がＶＭ全体の各リソースの平均使用量に対して、所定の閾値以上小さい場合は「低い」と判定することとして良い。そして、「高い」、「低い」のどちらとも判定されなかった場合には、「変動無し」と判定することとしても良い。
【０１３７】
レスポンス悪化期間におけるＶＭ全体の各リソースの使用状況を特定した後、第３判定部２１３−３は、特定したＶＭ全体の各リソースの使用状況が、図１７に示す全体リソース傾向２２７２のいずれに合致するかを判定する。そして、第３判定部２１３−３は、合致すると判定した全体リソース傾向と関連付けられたボトルネック種別２２７１を、対象のレスポンス悪化期間に対応するボトルネックの種別として特定する。
【０１３８】
ステップＳ１６０３を実行後、第３判定部２１３−３は、ステップＳ１６０３で特定したボトルネックの種別に基づいて、ＤＢサーバのＶＭにおけるプロセスの中からサーバ固有プロセスを特定する（ステップＳ１６０４）。ステップＳ１６０４の具体的な処理の例については、再び図１７を用いて説明する。
【０１３９】
まず、第３判定部２１３−３は、対象のＶＭ（ＤＢサーバ）のプロセスについて、リソースの使用状況を特定する。具体的には、第３判定部２１３−３は、例えば、レスポンス悪化期間におけるプロセスごとの各リソースの使用量が、「低い」、「変動無し」、「高い」のいずれに該当するかを判定する。「低い」、「変動無し」、「高い」の具体的な判定は、例えば、上述したＶＭ全体のリソースの使用状況と同様であって良い。
【０１４０】
第３判定部２１３−３は、プロセスごとの各リソースの使用量が、ステップＳ１６０３で特定したボトルネックの種別と関連付けられたプロセスリソース傾向２２７３と合致するか否かを判定する。第３判定部２１３−３は、各リソースの使用量が、ステップＳ１６０３で特定したボトルネックの種別と関連付けられたプロセスリソース傾向２２７３と合致するプロセスをサーバ固有プロセスであると判定する。一方、第３判定部２１３−３は、各リソースの使用量が、ステップＳ１６０３で特定したボトルネックの種別と関連付けられたプロセスリソース傾向２２７３と合致しないプロセスを、サーバ固有プロセスではないと判定する。
【０１４１】
ステップＳ１６０３およびステップＳ１６０４において、プロセスごとの各リソースの使用量は、例えば、ＤＢサーバのプロセスについて、動作情報記憶部２２１やディスクアクセス情報記憶部２２５、送受信量情報記憶部２２６に記憶された情報から算出することができる。また、ＶＭ全体の各リソースの使用量は、各リソースについてのＤＢサーバのプロセスの使用量の合計とすることができる。また、平均使用量は、例えば、所定期間の各リソースの使用量の平均値でも良いし、判定対象のタイミングで取得されたデータを除外した所定期間の各リソースの使用量の平均値でも良い。また、判定基準とする閾値については、例えば、平均使用量に対する割合（パーセンテージ）や、数値の差とすることができる。なお、リソースの種類毎、「高い」、「低い」の判定ごとに、閾値の値は適宜変更されても良い。
【０１４２】
ステップＳ１６０４の処理を実行後、第３判定部２１３−３は、ステップＳ１６０２において全てのレスポンス悪化期間が選択されたか否かを判定する（ステップＳ１６０５）。全てのレスポンス悪化期間が選択されていないと判定した場合（ステップＳ１６０５、ＮＯ）、ステップＳ１６０２に戻り、第３判定部２１３−３は、未選択のレスポンス悪化期間を１つ選択して、ステップＳ１６０３〜Ｓ１６０５の処理を繰り返す。
【０１４３】
全てのレスポンス悪化期間が選択されたと判定した場合（ステップＳ１６０５、ＹＥＳ）、第３判定部２１３−３は、サーバ固有プロセスの追加特定処理を実行する（ステップＳ１６０６）。ステップＳ１６０６の処理は、例えば、図１１のステップＳ１１０９として説明した追加特定処理と同様であって良い。ステップＳ１６０６の終了後、図１６に示す一連の処理は終了する。
【０１４４】
ＤＢサーバへのアクセスはＡＰサーバからデータベースへのデータ読み出し要求がアクセスの大半を占める。そのため、ＤＢサーバは、例えばＷｅｂサーバやＡＰサーバと比較して大容量のメモリが搭載され（ＶＭに割り当てられ）、メモリをキャッシュとして使用する。同じデータに対する読み出し要求であっても、要求されたデータがキャッシュに記憶されているか否かに応じて、リソース（具体的には特に、ディスクに対するアクセス）の負荷がその時々で異なる。
【０１４５】
また、搭載されるメモリ容量によっても、リソース（具体的には特に、ディスクに対するアクセス）の負荷が変動する。例えば、インメモリデータベースなどと呼ばれる、データベースのデータを全てキャッシュに記憶できるようなメモリ容量であれば、ディスクアクセスはほとんど発生しない。
【０１４６】
また、読み出しが要求されるデータのサイズが要求ごとに変動が大きいため、要求ごとに、ＣＰＵの使用率やメモリの使用量の変動が大きい。
【０１４７】
また、データベースのテーブル内のレコード数や削除したレコード数を検知して動作する機能がＤＢサーバに搭載されている場合もあり、機能の影響によって、過去にどのようなデータ読み出し要求を受信したかによっても、ＣＰＵの使用率やメモリの使用量が変化する。
【０１４８】
上述の事項などから、ＤＢサーバについては、単純にプロセスの挙動を監視した場合には挙動に一貫性がなく、リクエスト（コネクション数）とプロセスの挙動との関係から固有サーバプロセスを特定するのは困難であると言える。
【０１４９】
ただし、ＤＢサーバには、ＤＢサーバのレスポンスが悪化した場合に、データ読み出し要求を処理するプロセスの生存期間が長くなるという特性がある。レスポンス悪化の要因は一様ではないが、本実施例で説明したように、上述のプロセスの挙動と比較するとはるかに少ないパターンに分類することが可能である。また、レスポンス悪化の要因が特定できれば、要因に応じたサーバ固有プロセスの挙動が推定可能である。
【０１５０】
したがって上述のように、本実施例では、第３判定部２１３−３が、ＤＢサーバについて、まずレスポンス悪化期間とレスポンス悪化の要因を特定する。そしてレスポンス悪化の要因に基づいて推定されるサーバ固有プロセスの挙動と一致する挙動を示すプロセスを特定することで、第３判定部２１３−３がサーバ固有プロセスを特定することができ、判定精度が向上する。
【０１５１】
また前述のＷｅｂサーバと同様に、特定したサーバ固有プロセスの実行ファイルと同一のディレクトリまたは配下のディレクトリに実行ファイルが格納されたプロセスについてもサーバ固有プロセスと特定する。これによりＤＢサーバのバックグラウンドプロセスが特定できるので、さらに判定精度を向上させることができる。
【０１５２】
〔集約処理〕
判定部２１３により各ＶＭについてのサーバ固有プロセスの判定結果を利用して、集約制御部２１４はサーバの集約処理を実行することが可能である。
【０１５３】
図１８は、本実施例によるサーバ固有プロセスの判定結果を利用した場合の集約処理と、前述の過剰な見積もり（比較例）とを比較したイメージを示す図である。図１８では、それぞれで１つのサーバが動作するＶＭ２台について、サーバの集約が可能であるか否かを判定する例を示している。
【０１５４】
グラフ１８０１は、１台目の集約対象のＶＭにおけるリソース使用量の推移を示している。グラフ１８０２は、２台目の集約対象のＶＭにおけるリソース使用量の推移を示している。グラフ１８０１、１８０２では、サーバ固有プロセスによるリソース使用量（図１８では「固有」と表記）、サーバ固有プロセス以外のプロセスによるリソース使用量（図１８では「非固有」と表記）、両者を合計したＶＭ全体としてのリソース使用量（図１８では「合計」と表記）を示している。
【０１５５】
本実施例においては、１台目の集約対象のＶＭに、２台目の集約対象のＶＭで動作するサーバを集約する場合を例に用いる。ただし、サーバの集約処理は、例えば、２台目の集約対象のＶＭにサーバの集約を行なうこととしても良いし、１台目の集約対象のＶＭとも２台目の集約対象のＶＭとも異なる他のＶＭに集約することとしても良い。グラフにおける閾値は、集約した際にサーバの動作性能に影響があるか否かの判定基準となる閾値であるとする。なお、サーバの動作性能に影響があるか否かの判定基準となる閾値は一意に限定されず、情報処理システムの態様や、サーバを集約した際のＶＭに割り当てられるリソース量等に応じて適宜決定、変更が可能であって良い。
【０１５６】
グラフ１８０３は、比較例と本実施例のそれぞれにおいて、サーバを集約した際のリソース使用量として推定される使用量を示している。
【０１５７】
比較例においては、サーバ固有プロセスとサーバ固有プロセス以外のプロセスとを区別せずに、単に２台のＶＭのリソースそれぞれのＶＭ全体としてのリソース使用量を合算した値を推定使用量としている。比較例においては、サーバを集約した際のリソース使用量として推定される使用量が閾値を超過する期間が存在するため、サーバの集約は不可と判断されてしまう。
【０１５８】
一方、本実施例においては、２台のＶＭについて、サーバ固有プロセスによるリソース使用量は合算される。ただし、サーバ固有プロセス以外のプロセスについては、ＶＭ２台分ではなく１台分のリソース使用量をＶＭ２台分のサーバ固有プロセスによるリソース使用量に合算され、推定使用量として算出される。本実施例によれば、サーバを集約した際のリソース使用量として推定される使用量は閾値を超過しないため、サーバの集約が可能と判断される。
【０１５９】
すなわち、比較例においてはリソース使用量の過剰な見積もりによりサーバの集約が不可と判断されてしまう場合であっても、本実施例では、リソース使用量の過剰な見積もりが抑制されることで、サーバの集約が可能と判断できるのである。
【０１６０】
以上で説明した手法により、集約制御部２１４は、複数台のＶＭについてサーバ集約を行った際のリソース使用量を推定し、サーバの集約が可能か否かを判定することとしても良い。
【０１６１】
集約制御部２１４は、例えば、サーバの集約が可能とされた複数台のＶＭの識別情報を表示部２０２に表示することとしても良い。また、集約制御部２１４は、入力部によりそれぞれの識別情報が入力された複数台のＶＭについて、サーバの集約が可能か否かを判定し、判定の結果を表示部２０２に表示することとしても良い。また、集約制御部２１４は、ＶＭのプロセスそれぞれについて、サーバ固有プロセスであるか否かを示す情報を表示部２０２に表示することとしても良いし、図１８のような態様で、ＶＭそれぞれや、サーバ集約後のＶＭのリソース使用量を表示部２０２に表示することとしても良い。あるいは、集約制御部２１４は、サーバの集約が可能とされた複数台のＶＭについてサーバの集約を実行させる指示を情報処理装置２００に送信することで、サーバの集約を実行しても良い。
【０１６２】
なお、サーバの集約を行う際には、サーバの種別が同一である複数のＶＭを集約対象とすることとしても良い。サーバの種別が同一であれば、サーバの集約を行なった場合でも、サーバ固有プロセス以外のプロセスの挙動の変化は発生しない、あるいはサーバの種別が異なる場合と比較して、より少ないと考えられるためである。
【０１６３】
〔ハードウェア構成〕
図１９は、本実施例における集約制御装置３００のハードウェア構成の一例である。なお、図１９では、集約制御装置３００のハードウェア構成の一例を示すが、後述のように、情報処理装置２００、端末装置４００についても同様の構成が採用可能である。
【０１６４】
集約制御装置３００は、例えば、それぞれがバス１９０１で相互に接続された、ＣＰＵ１９０２、メモリ１９０３、記憶装置１９０４、ＮＩＣ１９０５、媒体読取装置１９０６、入力装置１９０７、表示装置１９０８、を備える情報処理装置である。
【０１６５】
ＣＰＵ１９０２は、集約制御装置３００における種々の動作制御を行う。メモリ１９０３、記憶装置１９０４は、本実施例で説明した各種の処理を実行するプログラムや、各種の処理に利用される種々のデータを記憶する。記憶装置１９０４は、例えば、ＨＤＤや、Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ（ＳＳＤ）等の記憶媒体である。
【０１６６】
ＣＰＵ１９０２は、メモリ１９０３あるいは記憶装置１９０４に記憶されたプログラムを読み出して処理、制御を実行することで、図３Ａに示す処理部２１０および処理部２１０に含まれる各機能部が実現されても良い。なお、ＣＰＵ１９０２は、Ｍｉｃｒｏ Ｐｒｏｃｅｓｓｉｎｇ Ｕｎｉｔ（ＭＰＵ）、Ａｐｐｌｉｃａｔｉｏｎ Ｓｐｅｃｉｆｉｃ Ｉｎｔｅｇｒａｔｅｄ Ｃｉｒｃｕｉｔ（ＡＳＩＣ）などのハードウェア回路に置き換えることも可能である。また、メモリ１９０３、記憶装置１９０４のそれぞれは、図３Ａおよび図３Ｂに記載した記憶部２２０として機能することができる。
【０１６７】
ＮＩＣ１９０５は、有線または無線のネットワークを介したデータの送受信に用いられるハードウェアである。ＮＩＣ１９０５は、ＣＰＵ１９０２の制御の下で、通信部２０３として機能することができる。
【０１６８】
媒体読取装置１９０６は、記録媒体からデータを読み取るための装置であり、例えば、ＣＤ−ＲＯＭやＤＶＤ−ＲＯＭ等のディスク媒体に記憶されたデータを読み取るディスクドライブや、メモリカードに記憶されたデータを読み取るカードスロット等である。前述した記憶部２２０に記憶されるデータの一部または全部は、媒体読取装置１９０６を用いて読み取り可能な記録媒体に記憶されることとしても良い。
【０１６９】
入力装置１９０７は、ユーザからの入力や指定を受け付ける装置である。入力装置１９０７の例としては、例えばキーボードやマウス、タッチパッドが挙げられる。表示装置１９０８は、ＣＰＵ１９０２の制御の下で、種々の情報の表示を行う。表示装置１９０８は、例えば液晶ディスプレイである。
【０１７０】
情報処理装置２００、端末装置４００は、例えば、図１９に示した集約制御装置３００と同様のハードウェア構成が採用可能であるため、説明を省略する。ただし、ＣＰＵ、メモリ、記憶装置、ＮＩＣ、媒体読取装置、入力装置、表示装置の具体的なハードウェア（型式や性能等）は、情報処理装置２００、集約制御装置３００、端末装置４００のそれぞれで異なって構わない。例えば、情報処理装置２００は、集約制御装置３００や端末装置４００よりも演算能力が高いＣＰＵ、より大容量のメモリが搭載されることとしても良い。
【０１７１】
情報処理装置２００は、例えば、１台または複数台の物理サーバ装置であっても良いし、本実施例における情報処理装置２００は、複数台のコンピュータを備えるデータセンタに置き換えられても良い。また、情報処理装置２００が複数台のコンピュータを備えるデータセンタに置き換えられる場合は、データセンタのコンピュータ資源の一部を用いて集約制御装置３００が実現されることとしても良い。
【０１７２】
また、端末装置４００は、例えば、Ｐｅｒｓｏｎａｌ  Ｃｏｎｐｕｔｅｒ（ＰＣ）、スマートフォン、Ｐｅｒｓｏｎａｌ Ｄｉｇｉｔａｌ Ａｓｓｉｓｔａｎｔ（ＰＤＡ）等であって良い。なお、端末装置４００が、スマートフォンやＰＤＡ、タブレットＰＣである場合には、入力装置１９０７の機能と表示装置１９０８の機能とを備えるタッチパネルを用いることとしても良い。
【０１７３】
〔総括〕
以上に説明したように、本実施例によれば、ＶＭで動作するプロセスについて、固有のソフトウェアのプロセス（サーバ固有プロセス）であるのか、固有のソフトウェアのプロセスであるのかを判定することが可能である。サーバ固有プロセスを判別することで、サーバ集約の可否を判断する際のリソース使用量の過剰な見積もりが抑制される。そのため、サーバ集約後のサーバの動作性能に悪影響の発生しない範囲で、より多くのサーバを集約することが可能となる。より多くのサーバを集約することができれば、情報処理装置２００で動作するＶＭの台数をより少なくすることができ、ＶＭを稼動させる際のコストを削減することができる。また、情報処理システムにおける運用管理においても、ＶＭの台数に応じて増減する、ＯＳへのパッチ適用処理などのコストを削減することができる。
【０１７４】
また、本実施例において、サーバ固有プロセスであるか否かの判定に利用される情報の収集に用いられる各種のコマンドは、例えば、ＵＮＩＸ（登録商標）、Ｗｉｎｄｏｗｓ ＮＴ（登録商標）等のＯＳにおいては標準で利用可能なコマンドである。そのため、サーバに情報収集のための追加のツールを導入することが不要である。これは例えば、システムの提供先であるユーザとの契約において、追加のツールの導入が許容されない場合等においては優位点となる。
【０１７５】
また、情報処理装置２００がデータセンタである場合においては、本実施例において、サーバ固有プロセスであるか否かの判定に利用される情報が、システムの安定稼動のために収集されている場合もある。したがって、本実施例の実現にあたり新たな情報の収集処理が不要であり、またシステムの運用において継続的に情報の収集を行なうことが容易であるという利点がある。
【０１７６】
また、本実施例においては、ディレクトリにプロセスの実行ファイルの格納状態に基づいて、サーバのバックグランドプロセスなどもサーバ固有プロセスとして特定することができ、判定精度の向上を実現できる。これは、本実施例において説明したサーバ固有プロセスの追加特定処理に対応する。なお、発明者の検討によれば、例えばＤＢサーバの場合、サーバ固有プロセスによるリソースの使用量のおよそ３割は、バックグランドプロセスによる使用量であるとされている。
【０１７７】
本実施例においては、サーバの種別はＷｅｂサーバ、ＡＰサーバ、ＤＢサーバに分類されることとした。ただし、例えば、ＷｅｂサーバとＡＰサーバが一体化されたサーバについては、Ｗｅｂサーバに対するプロセス判定処理とＡＰサーバに対するプロセス判定処理と判定部２１３が実行することとしても良い。そして、Ｗｅｂサーバに対するプロセス判定処理とＡＰサーバに対するプロセス判定処理の少なくとも一方でサーバ固有プロセスと判定されたプロセスを、判定部２１３がサーバ固有プロセスとして特定することとしても良い。
【符号の説明】
【０１７８】
２００  情報処理装置
３００  集約制御装置
４００  端末装置
５００  ネットワーク
２０１  入力部
２０２  表示部
２０３  通信部
２１０  処理部
２２０  記憶部
１９０１  バス
１９０２  ＣＰＵ
１９０３  メモリ
１９０４  記憶装置
１９０５  ＮＩＣ
１９０６  媒体読取装置
１９０７  入力装置
１９０８  表示装置
【図１】
2018120354.tif 000003
【図２】
2018120354.tif 000004
【図３Ａ】
2018120354.tif 000005
【図３Ｂ】
2018120354.tif 000006
【図４】
2018120354.tif 000007
【図５】
2018120354.tif 000008
【図６】
2018120354.tif 000009
【図７】
2018120354.tif 000010
【図８】
2018120354.tif 000011
【図９】
2018120354.tif 000012
【図１０】
2018120354.tif 000013
【図１１】
2018120354.tif 000014
【図１２】
2018120354.tif 000015
【図１３】
2018120354.tif 000016
【図１４】
2018120354.tif 000017
【図１５】
2018120354.tif 000018
【図１６】
2018120354.tif 000019
【図１７】
2018120354.tif 000020
【図１８】
2018120354.tif 000021
【図１９】
2018120354.tif 000022