(57)【特許請求の範囲】
【請求項１】
サービスを提供するためにアプリケーションを実行する複数のサーバ装置と、前記アプリケーションの実行を前記複数のサーバ装置に分散して実行させる管理装置とを備えたアプリケーション分散実行システムであって、
前記管理装置は、
前記複数のサーバ装置の各サーバ情報であって、リソース情報、アプリケーションの実行に必要なサーバプロセスの状態及び実行中アプリケーションプロセスの状態のいずれか一つ以上と、実行中アプリケーションプロセス数とを含む前記各サーバ情報を、前記複数のサーバ装置からそれぞれ受信するサーバ情報受信手段と、
前記受信した各サーバ情報を記憶する記憶手段と、
前記記憶した各サーバ情報内のリソース情報、前記サーバプロセスの状態及び実行中アプリケーションプロセスの状態のいずれか一つ以上に基づき、前記複数のサーバ装置の各サーバ状態を判定するサーバ状態判定手段と、
前記各サーバ情報内の実行中アプリケーションプロセス数及び前記判定した各サーバ状態と、サーバ装置選定履歴とのいずれか一つ以上の情報に基づき、アプリケーションプロセスを生成するサーバ装置を前記複数のサーバ装置から選定し、前記サーバ装置選定履歴に基づき、直近に選定されたサーバ装置のうち予め設定された台数のサーバ装置を選定対象から除外するサーバ装置選定手段と、
前記選定したサーバ装置にアプリケーションプロセス生成要求を送信するアプリケーションプロセス生成要求送信手段とを備え、
前記複数のサーバ装置は、
自身の前記サーバ情報を収集するサーバ情報収集手段と、
前記収集した自身のサーバ情報を前記管理装置に送信するサーバ情報送信手段と、
前記管理装置から送信されたアプリケーションプロセス生成要求に基づき、前記アプリケーションプロセスを生成するアプリケーションプロセス生成手段と、
を備えたことを特徴とするアプリケーション分散実行システム。
【請求項２】
サービスを提供するためにアプリケーションを実行する複数のサーバ装置と、前記アプリケーションの実行を前記複数のサーバ装置に分散して実行させる管理装置とを備えたアプリケーション分散実行システムであって、
前記管理装置は、
前記複数のサーバ装置の各サーバ情報であって、リソース情報、アプリケーションの実行に必要なサーバプロセスの状態及び実行中アプリケーションプロセスの状態のいずれか一つ以上と、実行中アプリケーションプロセス数とを含む前記各サーバ情報を、前記複数のサーバ装置からそれぞれ受信するサーバ情報受信手段と、
前記受信した各サーバ情報を記憶する記憶手段と、
前記記憶した各サーバ情報内のリソース情報、前記サーバプロセスの状態及び実行中アプリケーションプロセスの状態のいずれか一つ以上に基づき、前記複数のサーバ装置の各サーバ状態を判定するサーバ状態判定手段と、
前記各サーバ情報内の実行中アプリケーションプロセス数及び前記判定した各サーバ状態と、サーバ装置選定履歴とのいずれか一つ以上の情報に基づき、アプリケーションプロセスを生成するサーバ装置を前記複数のサーバ装置から選定し、生成するアプリケーションの種別毎に選定方法が設定されるサーバ装置選定手段と、
前記選定したサーバ装置にアプリケーションプロセス生成要求を送信するアプリケーションプロセス生成要求送信手段とを備え、
前記複数のサーバ装置は、
自身の前記サーバ情報を収集するサーバ情報収集手段と、
前記収集した自身のサーバ情報を前記管理装置に送信するサーバ情報送信手段と、
前記管理装置から送信されたアプリケーションプロセス生成要求に基づき、前記アプリケーションプロセスを生成するアプリケーションプロセス生成手段と、
を備えたことを特徴とするアプリケーション分散実行システム。
【請求項３】
前記サーバ状態判定手段は、前記各サーバ状態として前記サービスを提供できない異常が発生している状態か否かをサーバ装置毎に設定された閾値に基づいて判定する、請求項１又は請求項２に記載のアプリケーション分散実行システム。
【請求項４】
前記サーバ装置選定手段は、前記異常が発生していない状態と判定されたサーバ状態をもつサーバ装置のうち、前記実行中アプリケーションプロセス数が最も少ないサーバ装置を選定する、請求項３に記載のアプリケーション分散実行システム。
【請求項５】
前記実行中アプリケーションプロセス数は、前記アプリケーションプロセス生成要求に基づき実行するアプリケーションと同じアプリケーションのプロセス数である、請求項４に記載のアプリケーション分散実行システム。
【請求項６】
サービスを提供するためにアプリケーションを実行する複数のサーバ装置と、前記アプリケーションの実行を前記複数のサーバ装置に分散して実行させる管理装置とを備えたアプリケーション分散実行システムにおけるアプリケーション分散実行方法であって、
前記管理装置は、
前記複数のサーバ装置の各サーバ情報であって、リソース情報、アプリケーションの実行に必要なサーバプロセスの状態及び実行中アプリケーションプロセスの状態の何れか一つ以上と、実行中アプリケーションプロセス数とを含む前記各サーバ情報を、前記複数のサーバ装置からそれぞれ受信するサーバ情報受信工程と、
前記受信した各サーバ情報を記憶する記憶工程と、
前記記憶した各サーバ情報内のリソース情報、前記サーバプロセスの状態及び実行中アプリケーションプロセスの状態のいずれか一つ以上に基づき、前記複数のサーバ装置の各サーバ状態を判定するサーバ状態判定工程と、
前記各サーバ情報内の実行中アプリケーションプロセス数及び前記判定した各サーバ状態と、サーバ装置選定履歴とのいずれか一つ以上の情報に基づき、アプリケーションプロセスを生成するサーバ装置を前記複数のサーバ装置から選定し、前記サーバ装置選定履歴に基づき、直近に選定されたサーバ装置のうち予め設定された台数のサーバ装置を選定対象から除外するサーバ装置選定工程と、
前記選定したサーバ装置にアプリケーションプロセス生成要求を送信するアプリケーションプロセス生成要求送信工程とを備え、
前記複数のサーバ装置は、
自身の前記サーバ情報を収集するサーバ情報収集工程と、
前記収集した自身のサーバ情報を前記管理装置に送信するサーバ情報送信工程と、
前記管理装置から送信されたアプリケーションプロセス生成要求に基づき、前記アプリケーションプロセスを生成するアプリケーションプロセス生成工程と、
を備えたことを特徴とするアプリケーション分散実行方法。
【請求項７】
サービスを提供するためにアプリケーションを実行する複数のサーバ装置と、前記アプリケーションの実行を前記複数のサーバ装置に分散して実行させる管理装置とを備えたアプリケーション分散実行システムにおけるアプリケーション分散実行方法であって、
前記管理装置は、
前記複数のサーバ装置の各サーバ情報であって、リソース情報、アプリケーションの実行に必要なサーバプロセスの状態及び実行中アプリケーションプロセスの状態の何れか一つ以上と、実行中アプリケーションプロセス数とを含む前記各サーバ情報を、前記複数のサーバ装置からそれぞれ受信するサーバ情報受信工程と、
前記受信した各サーバ情報を記憶する記憶工程と、
前記記憶した各サーバ情報内のリソース情報、前記サーバプロセスの状態及び実行中アプリケーションプロセスの状態のいずれか一つ以上に基づき、前記複数のサーバ装置の各サーバ状態を判定するサーバ状態判定工程と、
前記各サーバ情報内の実行中アプリケーションプロセス数及び前記判定した各サーバ状態と、サーバ装置選定履歴とのいずれか一つ以上の情報に基づき、アプリケーションプロセスを生成するサーバ装置を前記複数のサーバ装置から選定し、生成するアプリケーションの種別毎に選定方法が設定されるサーバ装置選定工程と、
前記選定したサーバ装置にアプリケーションプロセス生成要求を送信するアプリケーションプロセス生成要求送信工程とを備え、
前記複数のサーバ装置は、
自身の前記サーバ情報を収集するサーバ情報収集工程と、
前記収集した自身のサーバ情報を前記管理装置に送信するサーバ情報送信工程と、
前記管理装置から送信されたアプリケーションプロセス生成要求に基づき、前記アプリケーションプロセスを生成するアプリケーションプロセス生成工程と、
を備えたことを特徴とするアプリケーション分散実行方法。
【請求項８】
サービスを提供するためにアプリケーションを実行する複数のサーバ装置に、前記アプリケーションを分散して実行させる管理装置であって、
前記複数のサーバ装置の各サーバ情報であって、リソース情報、アプリケーションを実行するのに必要とされるサーバプロセスの状態及び実行中アプリケーションプロセスの状態のいずれか一つ以上と、実行中アプリケーションプロセス数とを含む前記各サーバ情報を、前記複数のサーバ装置からそれぞれ受信するサーバ情報受信手段と、
前記受信した各サーバ情報を記憶する記憶手段と、
前記記憶した各サーバ情報内のリソース情報、前記サーバプロセスの状態及び実行中アプリケーションプロセスの状態のいずれか一つ以上に基づき、前記複数のサーバ装置の各サーバ状態を判定するサーバ状態判定手段と、
前記各サーバ情報内の実行中アプリケーションプロセス数及び前記判定した各サーバ状態と、サーバ装置選定履歴とのいずれか一つ以上の情報に基づき、アプリケーションプロセスを生成するサーバ装置を前記複数のサーバ装置から選定し、前記サーバ装置選定履歴に基づき、直近に選定されたサーバ装置のうち予め設定された台数のサーバ装置を選定対象から除外するサーバ装置選定手段と、
前記選定したサーバ装置にアプリケーションプロセス生成要求を送信するアプリケーションプロセス生成要求送信手段と、
を備えたことを特徴とする管理装置。
【請求項９】
サービスを提供するためにアプリケーションを実行する複数のサーバ装置に、前記アプリケーションを分散して実行させる管理装置であって、
前記複数のサーバ装置の各サーバ情報であって、リソース情報、アプリケーションを実行するのに必要とされるサーバプロセスの状態及び実行中アプリケーションプロセスの状態のいずれか一つ以上と、実行中アプリケーションプロセス数とを含む前記各サーバ情報を、前記複数のサーバ装置からそれぞれ受信するサーバ情報受信手段と、
前記受信した各サーバ情報を記憶する記憶手段と、
前記記憶した各サーバ情報内のリソース情報、前記サーバプロセスの状態及び実行中アプリケーションプロセスの状態のいずれか一つ以上に基づき、前記複数のサーバ装置の各サーバ状態を判定するサーバ状態判定手段と、
前記各サーバ情報内の実行中アプリケーションプロセス数及び前記判定した各サーバ状態と、サーバ装置選定履歴とのいずれか一つ以上の情報に基づき、アプリケーションプロセスを生成するサーバ装置を前記複数のサーバ装置から選定し、生成するアプリケーションの種別毎に選定方法が設定されるサーバ装置選定手段と、
前記選定したサーバ装置にアプリケーションプロセス生成要求を送信するアプリケーションプロセス生成要求送信手段と、
を備えたことを特徴とする管理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、アプリケーションを分散して実行するアプリケーション分散実行システム、方法及び管理装置に関する。
【背景技術】
【０００２】
近年、ユーザが用意していたデータ領域やソフトウェア等により実現される機能を、インターネットを通じてユーザに提供する形態が増加している。このような形態として、クラウドコンピューティングが知られている。一般に、クラウドコンピューティングは、サービス提供者が用意する多数のサーバにサービス提供用のアプリケーションを実行させることで、不特定多数のユーザにサービスを提供することを実現する。
【０００３】
しかしながら、サーバにアプリケーションを実行させる場合、不特定多数のユーザからのリクエストによってサーバの負荷が高まると、ユーザ体験（応答時間）が悪くなる。また、特に、アプリケーション仮想化、シンクライアント等に代表されるクライアント・サーバ型のシステムにおいてアプリケーションを実行する際は、サーバ選定方式によってユーザ体験が異なることが知られている。より良いユーザ体験でサービスを提供するためには、多数のサーバにアプリケーションが効率よく収容されるように、偏りなくアプリケーションを分散させる必要がある。したがって、複数のサーバにおけるアプリケーションの収容効率を高く維持しつつアプリケーションを分散実行させ、当該分散実行を管理する技術が求められている。
【０００４】
このような技術の候補としては、例えば、ラウンドロビン方式や最小コネクション方式などが知られている（例えば、非特許文献１参照。）。ラウンドロビン方式は、一定順序でサーバに対してリクエストを振り分ける方式である。最小コネクション方式は、接続中のコネクション数が最も少ないサーバにリクエストを振り分ける方式である。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】W. Zhan, ”Linux Virtual Server for Scalable Network Services”, Ottawa Linux
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、従来の技術は、コネクション数を平均的に振り分けようとするものであり、実行するアプリケーションに依存する負荷の大小を考慮することができない。このため、サーバ負荷の平準化が図れず、サーバにおけるアプリケーションの収容効率が低下してしまう。
【０００７】
また、従来の技術は、コネクション数を平均的に振り分けることにより、長期的には負荷を平滑化できるが、短期的には、負荷の偏りが発生してしまう。
【０００８】
さらに、従来の技術は、通信回線の混雑等、サーバの負荷以外の要因によりサービスの品質が低下する可能性について考慮できていない。
【０００９】
まとめると、従来の技術は、アプリケーション毎のサーバ負荷及び短期的なサーバ負荷の平準化が図れないことから、アプリケーションの収容効率が低下し、また、負荷以外の要因も考慮できないことから、サービスの品質が低下する可能性がある。
【００１０】
このため、従来の技術は、複数のサーバ装置におけるアプリケーションの収容効率とサービスの品質とを高く維持しつつ、アプリケーションを実行することができない、という不都合がある。
【００１１】
この発明は上記事情に着目してなされたもので、その目的とするところは、複数のサーバ装置におけるアプリケーションの収容効率とサービスの品質とを高く維持しつつ、アプリケーションを実行するサーバ装置を選定できるようにしたアプリケーション分散実行システム、方法及び管理装置を提供することにある。
【課題を解決するための手段】
【００１２】
上記目的を達成するためにこの発明の第１の観点は、以下のような構成要素を備えている。すなわち、サービスを提供するためにアプリケーションを実行する複数のサーバ装置と、上記アプリケーションの実行を上記複数のサーバ装置に分散して実行させる管理装置とを備えている。上記管理装置は、上記複数のサーバ装置の各サーバ情報であって、リソース情報、アプリケーションの実行に必要なサーバプロセスの状態及び実行中アプリケーションの状態のいずれか一つ以上と、実行中アプリケーションプロセス数とを含む上記各サーバ情報を、上記複数のサーバ装置から受信する。上記受信した各サーバ情報を記憶するとともに、上記記憶した各サーバ情報内のリソース情報、アプリケーションの実行に必要なサーバプロセスの状態及び実行中アプリケーションの状態のいずれか一つ以上に基づき、上記複数のサーバ装置の各サーバ状態を判定し、記憶する。
【００１３】
管理装置は、コマンド入力、もしくは、クライアント装置からのアプリケーションプロセス生成要求の受信を契機に、上記各サーバ情報内の実行中アプリケーションプロセス数及び上記判定した各サーバ状態と、サーバ装置選定履歴とのいずれか一つ以上の情報に基づき、アプリケーションプロセスを生成するサーバ装置を上記複数のサーバ装置から選定し、上記選定したサーバ装置にアプリケーションプロセス生成要求を送信する。なお、管理装置は、上記サーバ装置選定履歴に基づき、直近に選定されたサーバ装置のうちあらかじめ設定された台数のサーバ装置を選定対象から除外する。或いは、管理装置による上記選定の方法は、生成するアプリケーションの種別毎に設定される。
【００１４】
上記アプリケーションプロセス生成要求を受信したサーバ装置は、アプリケーションプロセスの実行に必要なリソースを割当て、上記割当ての結果を管理装置に返送する。管理装置は、上記割当ての結果を、コマンド入力に対する応答として表示、もしくは、クライアント装置への応答としてクライアント装置に返送するとともに、記憶する。
【００１５】
つまり、上記複数のサーバ装置は、自身の上記サーバ情報を収集する。上記収集した自身のサーバ情報を上記管理装置に送信する。上記管理装置から送信されたアプリケーションプロセス生成要求に基づき、上記アプリケーションプロセスを生成するようにしたものである。
【００１６】
また、この発明の第１の観点は以下のような態様を備えることを特徴とする。
【００１７】
第１の態様は、上記各サーバ状態として上記サービスを提供できない異常が発生している状態か否かをサーバ装置毎に設定された閾値に基づいて判定するようにしたものである。
【００１８】
第２の態様は、上記異常が発生していない状態と判定されたサーバ状態をもつサーバ装置のうち、上記実行中アプリケーションプロセス数が最も少ないサーバ装置を選定するようにしたものである。
【００１９】
第３の態様は、上記実行中アプリケーションプロセス数が、上記アプリケーションプロセス生成要求に基づき実行するアプリケーションと同じアプリケーションのプロセス数であるようにしたものである。
【発明の効果】
【００２２】
この発明の第１の観点によれば、リソース情報、アプリケーションの実行に必要なサーバプロセスの状態及び実行中アプリケーションプロセスの状態のいずれか一つ以上と、実行中アプリケーションプロセス数とに基づきサーバ状態を判定することにより、実行する又は実行中のアプリケーションの特性を加味して、サーバ装置に要求するリソースの条件や、サーバの状態が判定される。また、判定されたサーバ状態と、サーバ装置で実行中のアプリケーションプロセス数と、サーバ装置選定履歴とに基づき、アプリケーションを実行するサーバ装置が選定される。このように、アプリケーションの特性・要求条件、サーバ装置の状態を総合的に加味してサーバ装置を選定することで、複数のサーバ装置における収容効率とサービス品質とを高く維持しつつ、アプリケーションを実行するサーバ装置を選定することが可能となる。
【００２３】
第１の態様によれば、サーバ状態を判定する際に、各サーバ装置においてサービスを提供できない異常が発生している状態か否かをサーバ装置毎に設定された閾値に基づいて判定する。このように、アプリケーションプロセスを生成するサーバ装置を選定するにあたり、異常なサーバ状態のサーバ装置を除外することで、より収容効率とサービス品質とを高く維持することが可能となる。
【００２４】
第２の態様によれば、サーバ装置を選定する際に、異常が発生していない状態と判定されたサーバ装置のうち、実行中のアプリケーションプロセス数が最も少ないサーバ装置を選定する。このように、サーバ状態を考慮し、複数のサーバ装置の中で最も負荷のかかっていないと思われるサーバ装置を選定することで、複数のサーバ装置において、より収容効率を高く維持することが可能となる。
【００２５】
第３の態様によれば、サーバ装置を選定する際に、アプリケーションプロセス生成要求に基づき実行するアプリケーションと同じアプリケーションの実行中アプリケーションプロセス数が最も少ないサーバを選定する。このため、サーバ状態を考慮すると共に、同じアプリケーションが同じサーバ装置で集中して実行される偏りを防ぐことができ、アプリケーションの特性によってこのような場合に生じる待ち時間の増加等といったユーザ体験の悪化を防止することができる。
【００２６】
第４の態様によれば、サーバ装置を選定する際に、サーバ装置選定履歴に基づき、直近に選定されたサーバ装置のうち予め設定された台数のサーバ装置を選定対象から除外する。このため、サーバ状態を考慮すると共に、同じアプリケーションが同じサーバ装置で集中して実行される偏りを防ぐことができ、アプリケーションの特性によってこのような場合に生じる待ち時間の増加等といったユーザ体験の悪化を防止することができる。
【００２７】
第５の態様によれば、サーバ装置を選定する際に、生成するアプリケーションの種別毎に選定方法が設定される。このため、アプリケーションの特性に応じてサーバ装置の選定方法を変更することができ、より多数のサーバ装置を効率よく動作させることができる。
【００２８】
すなわちこの発明によれば、複数のサーバ装置におけるアプリケーションの収容効率とサービスの品質とを高く維持しつつ、アプリケーションを実行するサーバ装置を選定できるようにしたアプリケーション分散実行システム、方法及び管理装置を提供することができる。
【図面の簡単な説明】
【００２９】
【図１】この発明の一実施形態に係るアプリケーション分散実行システムの機能構成の一例を示すブロック図である。
【図２】同実施形態におけるリソース情報の一例を示す模式図である。
【図３】同実施形態におけるサーバプロセスの状態の一例を示す模式図である。
【図４】同実施形態におけるアプリケーションプロセスの状態の一例を示す模式図である。
【図５】同実施形態におけるサーバ状態判定の動作を説明するためのシーケンス図である。
【図６】同実施形態における動作を説明するためのシーケンス図である。
【図７】同実施形態におけるサーバ装置選定の動作を説明するためのフローチャートである。
【図８】この発明の一実施形態の変形例を説明するためのフローチャートである。
【図９】この発明の一実施形態の変形例を説明するためのフローチャートである。
【図１０】この発明の一実施形態の変形例を説明するためのフローチャートである。
【図１１】この発明の一実施形態の変形例におけるサーバ選定方法の一例を示す模式図である。
【図１２】この発明の他の実施形態に係るアプリケーション分散実行システムの機能構成を示すブロック図である。
【図１３】この発明の他の実施形態に係るアプリケーション分散実行システムの機能構成を示すブロック図である。
【図１４】この発明の他の実施形態に係るアプリケーション分散実行システムの機能構成を示すブロック図である。
【図１５】この発明の他の実施形態に係るアプリケーション分散実行システムにおける動作を説明するためのフローチャートである。
【発明を実施するための形態】
【００３０】
以下、図面を参照してこの発明に関わる実施形態を説明する。なお、以下のアプリケーション分散実行システムは、アプリケーションを分散させて実行するアプリケーション分散実行システムとしてコンピュータを機能させるためのプログラムを用いて実施してもよい。すなわち、アプリケーション分散実行システムは、メモリ（コンピュータ読取り可能な記憶媒体）又はＣＰＵ(Computer Processing Unit)等のハードウェア資源に協働する機能ブロックの機能をプログラムにより実現してもよい。
【００３１】
［一実施形態］
図１は、この発明の一実施形態に係るアプリケーション分散実行システムの機能構成を示すブロック図である。アプリケーション分散実行システム１は、管理装置１０、外部記憶装置２０、サーバ装置３０及びサーバ装置４０を備えている。なお、各サーバ装置３０，４０は、管理装置１０に対して並列に接続されている。すなわち、各サーバ装置３０，４０は２台に限らず、２台以上の任意の台数を並列に接続可能となっている。なお、以下の説明では、便宜上新たに実行されるアプリケーションのプロセスを生成するサーバ装置としてサーバ装置３０が選定される場合を想定して説明する。また、以下の説明中、「アプリケーションＡのプロセス」及び「アプリケーションＢのプロセス」を、それぞれ「アプリＡプロセス」及び「アプリＢプロセス」ともいう。
【００３２】
管理装置１０は、管理装置モニタ部１００及び管理装置制御部１０１を備えている。
【００３３】
管理装置モニタ部１００は、各サーバ装置モニタ部３００，４００にサーバ情報要求メッセージを送信し、各サーバ装置モニタ部３００，４００からサーバ情報をそれぞれ受信する。管理装置モニタ部１００は、受信した各サーバ情報内のリソース情報１００ａ、アプリケーションの実行に必要なサーバプロセスの状態１００ｂ及び実行中アプリケーションプロセスの状態１００ｃのいずれか一つ以上に基づき、各サーバ装置３０，４０のサーバ状態を判定する。管理装置モニタ部１００は、サーバ情報及びサーバ状態に対する記憶要求メッセージを記憶部２００に送信し、サーバ情報及びサーバ状態に対する記憶応答を記憶部２００から受信する。以下、「サーバ情報及びサーバ状態に対する記憶要求メッセージ」及び「サーバ情報及びサーバ状態に対する記憶応答」を、それぞれ「サーバ情報／サーバ状態記憶要求メッセージ」及び「サーバ情報／サーバ状態記憶応答」ともいう。
【００３４】
サーバ情報は、サーバ装置毎に収集され、各サーバ装置自身の情報であって、リソース情報１００ａ、アプリケーションの実行に必要なサーバプロセスの状態１００ｂ及び実行中アプリケーションプロセスの状態１００ｃのいずれか一つ以上と、実行中アプリケーションプロセス数とを含む。サーバ情報は、各アプリケーションプロセスの生成時刻を含んでもよい。
【００３５】
リソース情報１００ａは、図２に示すように、リソース情報監視項目及び測定結果（測定値）が関連付けられる情報を含む。リソース情報監視項目は、ＣＰＵ使用量、メモリ使用量、インタフェース毎のNW（network）状態、インタフェース毎の帯域使用量及び接続ポート番号等を含んでもよい。
【００３６】
サーバプロセスの状態１００ｂは、図３に示すように、サーバプロセス情報監視項目と、各監視項目の稼働状況を判断するための情報に関する測定値が関連付けられる情報を含む。サーバプロセス情報監視項目は、サーバ装置モニタ部３００及びサーバ装置制御部３０１をふくむ。また、サーバプロセス情報監視項目は、各サーバ装置３０，４０内の図示しないアプリケーションサーバ（例えば、Ｔｏｍｃａｔ等）及びＷｅｂサーバ（例えば、Ａｐａｃｈｅ（登録商標）等）の稼働状況を判断するための情報に関する測定結果が関連付けられる情報を含んでもよい。また、サーバプロセスの状態１００ｂは、各サーバ装置３０，４０の機能部と、当該機能部の稼働状況（例、実行状態、実行可能状態、待ち状態）とを関連付けて記述した情報としてもよい。
【００３７】
アプリケーションプロセスの状態１００ｃは、図４に示すように、アプリケーションプロセス情報監視項目と、各監視項目の稼働状況を判断するための情報に関する測定値が関連付けられる情報を含む。アプリケーションプロセス情報監視項目は、ユーザ操作イベント有無、ＴＣＰ（Transmission Control Protocol）セッション／ＡＰ（Application）レベルのセッション正常性、フレームレート、プロセス処理時間、表示エラー有無、端末装置からの応答時間等を含む。アプリケーションプロセス情報監視項目は、各監視項目に対応する発生事象と更に関連付けられてもよい。なお、アプリケーションプロセスの状態１００ｃは、アプリケーションプロセス毎に生成される情報であるため、その数は各サーバ装置３０，４０内で実行されている実行中アプリケーションプロセス数に対応する。
【００３８】
実行中アプリケーションプロセス数は、アプリケーション種別毎に実行中アプリケーションプロセス数を識別できてもよい。例えば、図１におけるサーバ装置３０における実行中アプリケーションプロセス数は３であるが、アプリＡプロセス数は１であり、アプリＢプロセス数は２であることが識別できてもよい。更に、アプリケーション種別毎に実行中のアプリケーションプロセスの数に加えて、アプリケーションプロセスの利用状況（例えば、同じプロセスを利用している端末の数）を識別してもよい。
【００３９】
なお、管理装置モニタ部１００が各サーバ装置３０，４０のサーバ状態を判定する際は、各サーバ情報内のリソース情報１００ａ、サーバプロセスの状態１００ｂ及びアプリケーションプロセスの状態１００ｃのいずれか一つ以上に基づいてサーバ状態を判定する。管理装置モニタ部１００は、リソース情報１００ａ、サーバプロセスの状態１００ｂ及びアプリケーションプロセスの状態１００ｃ内の項目毎に、予めサーバ装置毎に設定した閾値に基づき判定する。閾値は、アプリケーション毎に設定してもよい。ここで、管理装置モニタ部１００は、各サーバ装置３０，４０における各サーバ状態として、新たに生成されるアプリケーションプロセスを実行して提供されるサービスを提供できない異常が発生している状態か否かを判定する。
【００４０】
リソース情報１００ａに関する判定処理においては、新たに生成されるアプリケーションプロセスが必要とするリソース情報を少なくとも上回るリソースが、各サーバ装置３０，４０にあるか否かを判定してもよい。すなわち、リソース情報１００ａの各項目に設定された閾値を逸脱する測定値が得られた場合、新たに生成されるアプリケーションプロセスに基づくサービスを提供できない異常が発生している状態として、当該項目が異常と判定される。また、リソース情報１００ａの各項目に設定された閾値を逸脱しない測定値が得られた場合、当該項目に係るリソースがサービスを異常なく提供できる状態として、当該項目を正常と判定してもよい。
【００４１】
サーバプロセスの状態１００ｂ及びアプリケーションプロセスの状態１００ｃに関する判定処理においては、測定値に基づき、当該サーバプロセス又はアプリケーションプロセスを用いてサービスを提供できない異常が発生している状態か否かを判定してもよい。すなわち、各項目に設定された閾値を逸脱する測定値が得られた場合、当該項目に係るサーバプロセス又はアプリケーションプロセスに、既にサービスを提供できない異常が発生している状態として、当該項目が異常と判定される。また、各項目に設定された閾値を逸脱しない測定値が得られた場合、新たに生成されるアプリケーションプロセスに基づくサービスを当該項目に係るサーバプロセス又はアプリケーションプロセスに異常な影響を受けることなく提供できる状態として、当該項目を正常と判定してもよい。
【００４２】
なお、監視項目（例えば、アプリケーションプロセスの状態１００ｃ内のプロセス処理時間等）によっては、サービスを提供できない異常が発生しているとは判定されないまでも、サービスの品質の劣化が観測されるケースも想定される。したがって、サービスの品質の劣化が観測される測定範囲に閾値を更に設定し、当該閾値内の測定値が得られた場合、当該項目を準正常と判定してもよい。各項目に関する測定値は１個に限らず、複数個の測定値に関して閾値を設定し、当該項目の正常、準正常又は異常を判定してもよい。
【００４３】
また、リソース情報１００ａに関する判定処理においては、各項目の測定値が突発的に変化する可能性がある。したがって、測定値の瞬間値で判定するのではなく、測定値の突発的な変化を考慮するために一定時間のサンプリングを行い、サンプリング期間中に閾値を超え続けた場合、当該項目を異常又は準正常と判定するようにしてもよい。
【００４４】
サーバ状態は、リソース情報１００ａ、サーバプロセスの状態１００ｂ及びアプリケーションプロセスの状態１００ｃの各項目において異常と判定された項目の数と、予め設定された閾値との比較結果に基づいて、サーバ装置の異常、準正常又は正常の情報を示す。なお、当該閾値は、０以上の任意の整数を設定可能であり、リソース情報１００ａ、サーバプロセスの状態１００ｂ及びアプリケーションプロセスの状態１００ｃ毎に異なる閾値を設定してもよく、更に、これらを組み合わせた閾値を設定してもよい。サーバ状態は、異常と判定された項目の数が当該閾値を超える場合、異常と判定されてもよく、当該閾値以下の場合、異常が発生していない状態として、正常又は準正常と判定されてもよい。なお、「閾値を超える場合」は「閾値以上の場合」としてもよく、「閾値以下の場合」は「閾値未満の場合」としてもよい。また、サーバ状態は、サーバ装置の異常、準正常又は正常の情報に加えて、各項目における判定結果に関する情報を含んでもよい。
【００４５】
管理装置制御部１０１は、サーバ情報及びサーバ状態に対する送信要求メッセージを管理装置モニタ部１００に送信し、管理装置モニタ部１００から各サーバ装置３０，４０のサーバ情報及びサーバ状態を受信する。以下、「サーバ情報及びサーバ状態に対する送信要求メッセージ」を「サーバ情報／サーバ状態要求メッセージ」ともいう。管理装置制御部１０１は、各サーバ情報内の実行中アプリケーションプロセス数及び各サーバ状態と、サーバ装置選定履歴とのいずれか一つ以上の情報に基づき、アプリケーションプロセスを生成するサーバ装置を各サーバ装置３０，４０から選定する。サーバを選定する方法は、アプリケーション種別により変えてもよい。管理装置制御部１０１は、選定されたサーバ装置（例えば、サーバ装置３０）にアプリケーションプロセス生成要求メッセージを送信し、選定されたサーバ装置３０からアプリケーションプロセス生成応答を受信する。
【００４６】
外部記憶装置２０は、記憶部２００を備える。
【００４７】
記憶部２００は、管理装置モニタ部１００から書込／読出可能なメモリであり、管理装置モニタ部１００によって収集された各サーバ装置３０，４０のサーバ情報及び判定された各サーバ装置３０，４０のサーバ状態及びサーバ選定結果を記憶する。詳しくは、記憶部２００は、管理装置モニタ部１００から受信したサーバ情報／サーバ状態記憶要求メッセージ内のサーバ情報及びサーバ状態及び上記情報に基づきサーバ装置を選定した結果を記憶し、管理装置モニタ部１００にサーバ情報／サーバ状態記憶応答を送信する。サーバ選定結果には、選定したサーバ装置を識別するID、サーバ装置を選定した時刻、アプリケーション種別、サーバ装置にて確保したリソース情報１００ａ等を含んでもよい。
【００４８】
各サーバ装置３０，４０は、それぞれサーバ装置モニタ部３００，４００、サーバ装置制御部３０１，４０１を備えている。サーバ装置３０は、更にアプリＡプロセス３０２、アプリＢプロセス３０３、アプリＢプロセス３０４を備えている。また、サーバ装置４０は、更にアプリＡプロセス４０２、アプリＡプロセス４０３を備えている。なお、各サーバ装置３０，４０の持つリソースは同等でもよく、サーバ装置３０，４０毎のリソースに差があってもよい。つまり、各サーバ装置３０，４０は、サーバ装置モニタ部３００，４００及びサーバ装置制御部３０１，４０１を備え、任意の数のアプリケーションプロセスを生成できるリソースを備えていてもよい。つまり、全ての閾値は、サーバ装置３０，４０毎にリソース等を考慮して設定される。
【００４９】
各サーバ装置モニタ部３００，４００は、管理装置モニタ部１００からサーバ情報要求メッセージを受信し、自身のサーバ情報を収集する。ここで、「自身」の用語は、「各サーバ装置３０，４０自身」又は「自装置」等と読み替えてもよい。各サーバ装置モニタ部３００，４００は、収集した自身のサーバ情報を管理装置モニタ部１００に送信する。新たなアプリケーションプロセスを生成するサーバ装置として選定されたサーバ装置３０は、管理装置制御部１０１からアプリケーションプロセス生成要求メッセージを受信し、新たなアプリケーションプロセスを生成する。サーバ装置３０は、アプリケーションプロセス生成応答を管理装置制御部１０１に送信する。
【００５０】
各アプリＡプロセス３０２，４０２，４０３は、各サーバ装置３０，４０内で生成され、実行中のアプリケーションＡに関する実行プロセスである。なお、各アプリＡプロセス３０２，４０２，４０３は、各サーバ装置３０，４０の有するリソースの範囲内で、１個以上の任意の数で生成可能である。また、各アプリＡプロセス３０２，４０２，４０３は、各サーバ装置３０，４０において生成されなくてもよい。
【００５１】
各アプリＢプロセス３０３，３０４は、サーバ装置３０内で生成され、実行中のアプリケーションＢに関する実行プロセスである。なお、各アプリＢプロセス３０３，３０４は、各サーバ装置３０，４０の有するリソースの範囲内で、１個以上の任意の数で生成可能である。また、各アプリＢプロセス３０３，３０４は、各サーバ装置３０，４０において生成されなくてもよい。
【００５２】
なお、各サーバ装置３０，４０内は、アプリケーションＡ，Ｂに限らず、任意の種別のアプリケーションを実行可能である。
【００５３】
次に、以上のように構成されたアプリケーション分散実行システムの動作について図５及び図６に示すシーケンス図並びに図７に示すフローチャートを用いて説明する。なお、以下の説明は、サーバ装置選定における各サーバ装置３０，４０のサーバプロセスは、全て動作中であるものとし、各サーバ装置３０，４０のアプリケーションプロセス実行状況は、図１に示したブロック図に基づいている場合について述べる。なお、動作中ではないサーバ装置が予め分かっている場合は、当該サーバ装置に対する処理を省略することもできる。また、新たにアプリケーションＡを実行するものとし、アプリＡプロセスを生成するサーバ装置を選定するものとする。
【００５４】
いま、管理装置制御部１０１は、例えば、オペレータからのコマンド入力、もしくは、クライアント装置からの要求に基づき、アプリケーションＡの実行によるサービスをユーザに提供するため、ユーザ情報、ユーザ端末（図示せず）のロケーション情報及びアプリケーションＡの種別等を含む付加情報を記憶装置（図示せず）から読み出す。このとき、アプリケーションＡの種別等は、アプリケーションＡの種別の他に、アプリケーションＡの要求条件（例、遅延の要求条件など）を含んでもよい。なお、オペレータからのコマンド入力、もしくは、クライアント装置からの要求を受け付けるにあたって、事前に認証の手順を踏み、正当なユーザ、もしくは、クライアント装置からのアクセスであることを担保することもできる。動作中ではない状態とは、メンテナンス中又は切り離し中等である。メンテナンス中の状態とは、アプリケーションプロセスは動作したままの状態でサーバ選定対象から除外されている状態を意味する。また、切り離し中の状態とは、管理装置制御部１０１からサーバ装置制御部３０１，４０１に実行中のアプリケーションプロセスを停止させる指示を出すことにより、アプリケーションプロセスが動作していない、及びサーバ選定対象から除かれている状態を意味する。
【００５５】
ここでは、管理装置制御部１０１は、管理装置モニタ部１００にサーバ情報／サーバ状態要求メッセージを送信する（ＳＴ１１）。管理装置モニタ部１００は、受信したサーバ情報／サーバ状態要求メッセージに基づき、サーバ情報収集及びサーバ状態の判定を行う（ＳＴ２１〜ＳＴ２７）。具体的には、以下に示すように、管理装置モニタ部１００、記憶部２００、各サーバ装置モニタ部３００，４００がステップＳＴ２１〜ＳＴ２７を実行する。なお、ステップＳＴ２１〜ＳＴ２７は、ステップＳＴ１１の処理がない場合でも、定期的に実行することが可能である。この場合、オペレータからのコマンド入力、もしくは、クライアント装置からの要求発生時に、ステップＳＴ２１〜ＳＴ２７を実行せず、記憶部２００に記憶されたサーバ装置選定履歴、サーバ状態及び／又は実行中アプリケーションプロセス数の情報を利用することもできる。また、サーバ情報を要求するメッセージＳＴ２１を複数に分割して実行することもできる。
【００５６】
管理装置モニタ部１００は、サーバ情報要求メッセージを各サーバ装置モニタ部３００，４００に送信する（ＳＴ２１）。各サーバ装置モニタ部３００，４００は、サーバ情報要求メッセージを受信すると、自身のサーバ情報をそれぞれ収集し（ＳＴ２２−１，ＳＴ２２−２）、収集したサーバ情報を管理装置モニタ部１００に送信する（ＳＴ２３−１，ＳＴ２３−２）。
【００５７】
管理装置モニタ部１００は、各サーバ装置モニタ部３００，４００から受信した各サーバ情報内のリソース情報１００ａ、サーバプロセスの状態１００ｂ及びアプリケーションプロセスの状態１００ｃのいずれか一つ以上に基づき、各サーバ装置３０，４０の各サーバ状態を判定する（ＳＴ２４）。
【００５８】
管理装置モニタ部１００は、記憶部２００にサーバ情報及び判定したサーバ状態を含むサーバ情報／サーバ状態記憶要求メッセージを送信し（ＳＴ２５）、記憶部２００は、受信したサーバ情報及びサーバ状態を記憶する（ＳＴ２６）。記憶部２００は、サーバ情報及びサーバ状態の記憶が完了した後、管理装置モニタ部１００にサーバ情報／サーバ状態記憶応答を送信する（ＳＴ２７）。
【００５９】
管理装置モニタ部１００は、サーバ情報／サーバ状態記憶応答を受信した後、記憶部２００からサーバ情報及びサーバ状態を読出し、管理装置制御部１０１にサーバ情報及びサーバ状態を送信する（ＳＴ１２）。なお、管理装置モニタ部１００は、サーバ状態判定（ＳＴ２４）に際し、サーバ情報及びサーバ状態を図示しないメモリに一時的に記憶し、ステップＳＴ２５〜ＳＴ２７と並行してステップＳＴ１２を実行してもよい。
【００６０】
管理装置制御部１０１は、受信した各サーバ情報内の実行中アプリケーションプロセス数及び各サーバ状態と、サーバ装置選定履歴とのいずれか一つ以上の情報に基づき、アプリケーションプロセスを生成するサーバ装置を各サーバ装置３０，４０の中から選定する（ＳＴ３１〜ＳＴ３６）。具体的には、以下に示すように、管理装置制御部１０１がステップＳＴ３１〜ＳＴ３６を実行する。なお、サーバ装置の選定の際には、前述した付加情報を用いてもよい。例えば、付加情報に含まれるアプリケーションＡの遅延の要求条件が厳しい場合には、アプリケーションプロセス数が少ないサーバ装置を選定し、他の場合には、アプリケーションプロセス数が多いサーバ装置を選定するようにしてもよい。もしくは、アプリケーション種別を用いてもよい。例えば、アプリケーションＡについては、アプリケーションプロセス数が少ないサーバ装置を選定し、他の場合は、アプリケーションプロセス数が多いサーバ装置を選定するようにしてもよい。また、負荷情報に含まれるクライアント端末５０の位置情報（例えば、接続中の無線アクセスポイント又は基地局の情報、位置情報及びＩＰ（Internet Protocol）アドレス等）を元に、クライアント端末５０から近いサーバ装置を優先的に選定するようにしてもよい。
【００６１】
いずれにしても、管理装置制御部１０１は、アプリケーションプロセスを生成するサーバ装置を選定するに際し、サーバ装置選定候補を抽出するためのサーチを実行する（ＳＴ３１〜ＳＴ３６）。具体的には、以下に示す手順を実施する。
【００６２】
まず、管理装置制御部１０１は、管理装置１０に接続されたすべてのサーバ装置３０，４０について、予め定められた期間内にサーチを実行したか否かを確認する（ＳＴ３１）。否の場合（ＳＴ３１；Ｎｏ）、サーチを実行していないサーバ装置の中から、サーチするサーバ装置を選択する（ＳＴ３２）。全てのサーバ装置３０，４０のサーチを実行した場合は、ステップＳＴ３６に進む。なお、サーバ装置が動作中ではないことが予め分かっている場合、当該サーバ装置については、サーチを省略することが出来る。もしくは、サーバ装置から、サーチに対する応答がない場合、当該サーバ装置を動作中ではないとみなし、サーバ装置選定候補から除外してもよい。
【００６３】
次に、管理装置制御部１０１は、選択したサーバ装置に関するサーバ状態を検索し、当該サーバ装置において異常と判定された項目の数が閾値以下かをサーチする（ＳＴ３３）。サーチの結果、異常と判定された項目の数が閾値より大きい場合（ＳＴ３３；Ｎｏ）、当該サーバ装置はサーバ装置選定候補として外れるため、次のサーバ装置をサーチするためにステップＳＴ３１に進む。
【００６４】
サーチの結果、異常と判定された項目の数が閾値以下の場合（ＳＴ３３；Ｙｅｓ）、サーバ情報内のプロセス数に基づき、当該サーバ装置内で実行されている観測対象のプロセス数（例えば、生成対象のアプリケーションに関わるプロセス数、もしくは、総プロセス数、もしくは、両方のプロセス数）がサーバ装置毎に予め定められた閾値以下であるかを確認する（ＳＴ３４）。観測対象のプロセス数が閾値を上回る場合（ＳＴ３４；Ｎｏ）、当該サーバ装置はサーバ装置選定候補として外れるため、次のサーバ装置をサーチするためにステップＳＴ３１に進む。
【００６５】
観測対象のプロセス数が閾値以下の場合（ＳＴ３４；Ｙｅｓ）、当該サーバ装置をサーバ装置選定候補として抽出する（ＳＴ３５）。
【００６６】
すべてのサーバ装置についてサーチを実行した後（ＳＴ３１；Ｙｅｓ）、サーバ装置選定候補の中から、サーバ情報内のプロセス数に基づき、当該サーバ装置内で実行されている評価対象のプロセス数（例えば、生成対象のアプリケーションに関わるプロセス数、もしくは、総プロセス数）が最小のサーバ装置を選定する（ＳＴ３６）。もしくは、アプリケーション毎のアプリケーションプロセス数の重み付け和等の演算結果を、評価対象のプロセス数としてもよい。図１は、生成対象のアプリケーションに関わるプロセス数が最小のサーバ装置を選定する例である。図１のブロック図に基づくと、サーバ装置３０は、アプリＡプロセスは１個実行中であり、サーバ装置４０は、アプリＡプロセスは２個実行中である。したがって、ステップＳＴ３６における選定では、アプリＡプロセスの実行数が少ないサーバ装置３０が選定されることとなる。
【００６７】
なお、新たに生成するアプリケーションがアプリＢプロセスを実行する場合、サーバ装置３０は、アプリＢプロセスは２個実行中であり、サーバ装置４０は、アプリＢプロセスは０個実行中である。したがって、ステップＳＴ３６における選定では、アプリＢプロセスの実行数が少ないサーバ装置４０が選定されることとなる。
【００６８】
管理装置制御部１０１は、選定されたサーバ装置３０のサーバ装置制御部３０１に、アプリケーションプロセス生成要求メッセージを送信する（ＳＴ１３）。このとき、アプリケーションプロセス生成要求メッセージと共に、セッションを示す識別子及び付加情報（ユーザ情報、ロケーション情報、アプリケーションの種別及び要求条件など）がサーバ装置制御部３０１に送信される。サーバ装置制御部３０１は、受信したアプリケーションプロセス生成要求メッセージに基づき、アプリケーションプロセスを生成するために必要なリソースを割り当て、新たなアプリＡプロセスを生成する（ＳＴ１４）。割り当てられるリソースとしては、例えば、アプリケーションＡがブラウザの場合、ポート番号が用いられる。
【００６９】
サーバ装置制御部３０１は、アプリＡプロセスの生成に成功した場合、アプリケーションプロセス生成応答を管理装置制御部１０１に送信する（ＳＴ１５）。アプリケーションプロセス生成応答は、例えば、セッションを示す識別子に紐付けたアプリケーションプロセス生成結果情報（サーバＩＤ、アプリケーション種別、接続アドレス、接続ポート番号など）を含んでいる。
【００７０】
管理装置制御部１０１は、アプリケーションプロセス生成応答を受信すると、アプリケーションプロセス生成結果情報を、アプリケーションプロセス生成通知として、管理装置モニタ部１００に送信する（ＳＴ１６）。
【００７１】
管理装置モニタ部１００は、アプリケーションプロセス生成通知を受信すると、記憶部２００に対して、アプリケーションプロセス記憶要求を送信する（ＳＴ１７）。管理装置モニタ部１００は、アプリケーションプロセス記憶要求送信時に、サーバ装置選定履歴の更新も要求してもよい。
【００７２】
記憶部２００は、アプリケーションプロセス記憶要求を受信すると、当該アプリケーション生成結果情報を記憶し（ＳＴ１８）、管理装置モニタ部１００に対して、アプリケーションプロセス記憶応答を送信する（ＳＴ１９）。記憶部２００は、アプリケーションプロセス記憶要求受信時に、サーバ装置選定履歴を更新してもよい。
【００７３】
管理装置モニタ部１００は、アプリケーションプロセス記憶応答を受信すると、当該アプリケーション記憶応答を管理装置制御部１０１に送信する（ＳＴ２０）。
【００７４】
以上詳述したように、一実施形態では、アプリケーション分散実行システム１は、サービスを提供するためにアプリケーションを実行する複数のサーバ装置３０，４０と、上記アプリケーションの実行を上記複数のサーバ装置３０，４０に分散して実行させる管理装置１０とを備える。上記管理装置１０は、リソース情報１００ａ、アプリケーションの実行に必要なサーバプロセスの状態１００ｂ及び実行中アプリケーションプロセスの状態１００ｃのいずれか一つ以上と、実行中アプリケーションプロセス数とを含むサーバ装置３０，４０毎のサーバ情報を、上記複数のサーバ装置３０，４０からそれぞれ受信し、上記受信した各サーバ情報を記憶する。上記記憶した各サーバ情報内のリソース情報１００ａ、アプリケーションの実行に必要なサーバプロセスの状態１００ｂ及び実行中アプリケーションプロセスの状態１００ｃのいずれか一つ以上に基づき、前記複数のサーバ装置３０，４０の各サーバ状態を判定する。上記各サーバ情報内の実行中アプリケーションプロセス数及び上記判定した各サーバ状態と、サーバ装置選定履歴とのいずれか一つ以上の情報に基づき、アプリケーションプロセスを生成するサーバ装置を上記複数のサーバ装置３０，４０から選定し、上記選定したサーバ装置にアプリケーションプロセス生成要求を送信するようにしている。また、上記複数のサーバ装置３０，４０は、自身の上記サーバ情報を収集し、上記収集した自身のサーバ情報を上記管理装置１０に送信し、上記管理装置１０から送信されたアプリケーションプロセス生成要求に基づき、上記アプリケーションプロセスを生成するようにしている。
【００７５】
したがって、実行するアプリケーションの特性・要求条件、サーバの状態、サーバ装置選定履歴を総合的に加味してアプリケーションプロセスを生成するサーバを選定することができる。補足すると、管理装置に接続された複数のサーバ装置から生成するアプリケーションプロセスを実行するアプリケーションを選定するに際して、サーバ装置毎に収集するサーバ情報に基づき、サーバ状態を判定する。サーバ状態は、サーバ情報内のリソース情報、アプリケーションの実行に必要なサーバプロセスの状態１００ｂ及び実行中アプリケーションプロセスの状態１００ｃのいずれか一つ以上に基づいて判定される。また、サーバ情報、サーバ状態判定のために設定される閾値及びサーバ状態判定方法は、オペレータからの指示で、システムの動作を停止させることなく変更することができる。したがって、アプリケーションがサーバ装置に要求する条件やアプリケーションの特性に加え、実行中アプリケーションプロセスがサーバ装置の状態に与える影響を考慮することが可能となる。
【００７６】
これにより、サーバを選定する際に、異常なサーバ状態のサーバ装置を除外できるため、複数のサーバ装置におけるアプリケーションの収容効率とサービスの品質とを高く維持しつつ、アプリケーションを実行するサーバ装置を選定することができる。
【００７７】
［他の実施形態］
外部記憶装置２０内の記憶部２００は、図８に示すように、管理装置１０内の記憶部１０２として備えられていてもよい。これに伴い、外部記憶装置２０は、省略される。
【００７８】
記憶部１０２は、管理装置モニタ部１００及び管理装置制御部１０１から書込／読込可能なメモリであってもよい。
【００７９】
この時、図６に示すシーケンス図は、記憶部２００を記憶部１０２と読み替えて動作する。また、管理装置モニタ部１００は、ステップＳＴ２４にてサーバ状態判定を実施した後、記憶部１０２にサーバ情報及びサーバ状態を送信する前に、管理装置制御部１０１にサーバ情報及びサーバ状態を送信してもよい。これにより、事前にサーバ情報を収集し、記憶部１０２に記憶しておく必要なく、アプリケーションプロセスを生成する必要が生じた時点で速やかにサーバ情報を収集し、サーバ選定を実施することが可能である。
【００８０】
その他、管理装置の構成や機能、管理装置内の各部との通信手順、処理手順と処理内容等についても、この発明の要旨を逸脱しない範囲で種々変形して実施可能である。
【００８１】
例えば、図９に示すように、管理装置１０は、ネットワークを介してクライアント端末５０と接続されていてもよい。クライアント端末５０は、管理装置制御部１０１にアプリケーションプロセス生成要求を送信する。クライアント端末５０は、管理装置制御部１０１からアプリケーションプロセス生成応答を受信すると共に、所望のサービスを提供される。
【００８２】
これにより、クライアント端末５０は、ネットワークを介して管理装置１０にサービスをリクエストすることにより、複数のサーバ装置３０，４０を意識することなくサービスを受けることが可能になる。
【００８３】
また、図１０に示すように、外部記憶装置２０内の記憶部２００は、管理装置１０内の記憶部１０２として備えられていてもよく、さらに、管理装置１０は、ネットワークを介してクライアント端末５０に接続されていてもよい。
【００８４】
例えば、図５及び図６に示した処理は、図１１に示すように、ステップＳＴ１１にて管理装置制御部１０１が管理装置モニタ部１００にサーバ情報／サーバ状態要求メッセージが送信される前に、クライアント端末５０から管理装置制御部１０１にアプリケーションプロセス生成要求メッセージを送信する（ＳＴ１０）。また、ステップＳＴ１５にてサーバ装置制御部３０１から管理装置制御部１０１にアプリケーションプロセス生成応答が送信された後に、クライアント端末５０は、管理装置制御部１０１からアプリケーションプロセス生成応答を受信する（ＳＴ１６）と共に、所望のサービスを提供される。なお、クライアント端末５０がサービスを要求する場合、アプリケーションプロセス生成要求メッセージ及びアプリケーションプロセス生成応答は、ユーザ及び／又はクライアント端末５０を識別する情報を含む。
なお、図８に示した例と同様に、記憶部１０２を介さずに各種情報の通信及び処理を実施してもよく、サーバ情報収集及びサーバ状態判定に係る一連の処理（ＳＴ１１−ＳＴ１２）については、ステップＳＴ１０を受信する前に実施しておいてもよく、定期的に実施してもよい。
【００８５】
さらに、管理装置制御部におけるサーバ選定に係る処理手順と処理内容等についても、この発明の要旨を逸脱しない範囲で種々変形して実施可能である。
【００８６】
例えば、図７に示した処理は、図１２に示すように、ステップＳＴ３１ですべてのサーバ装置をサーチし終えた後、サーバ装置選定候補の中から、当該アプリケーションに関わるプロセス数が最少のサーバ装置を選定する（ＳＴ３６’）ように変形することも可能である。
【００８７】
このように、この変形例では、サーバ装置選定の際に、異常が発生していない状態と判定されたサーバ装置のうち、アプリケーションプロセス生成要求に基づき実行するアプリケーションと同じアプリケーションの実行中アプリケーションプロセス数が最も少ないサーバ装置を選定するようにしている。すなわち、この変形例は、（１）異常が発生していない状態と判定されたサーバ状態をもつサーバ装置のうち、実行中アプリケーションプロセス数が最も少ないサーバ装置を選定する処理において、（２）実行中アプリケーションプロセス数を、アプリケーションプロセス生成要求に基づき実行するアプリケーションと同じアプリケーションのプロセス数としている。
【００８８】
これにより、特定のアプリケーションを実行するプロセスが特定のサーバ装置に集中することを防止できる。したがって、特定のアプリケーションを実行するプロセスの集中により、待ち時間が増加してユーザ体験が著しく悪化するといったアプリケーションの特性を考慮し、ユーザ体験の悪化を阻止し得るサーバ装置の選定が可能となる。なお、上記変形例は、上記（２）を実施せずに、上記（１）を実施するように更に変形してもよい。この更なる変形例は、上記（２）を実施しないことから、特定アプリケーションプロセスの特定サーバへの集中を防げないものの、上記（１）を実施することから、サーバ負荷の平準化を図ることができる。
【００８９】
また、図７に示した処理は、図１３に示すように、ステップＳＴ３４でプロセスを生成するアプリケーションに関わるアプリケーションプロセス数が閾値以下であると判定された後、サーバ装置選定履歴に基づき、当該サーバ装置が直近のＮ回で選定されたサーバ装置か否かを判定（ＳＴ３４−１）してもよい。ここで、Ｎは、予め定められた選定回数であり任意の回数の設計変更可能である。
【００９０】
当該サーバ装置が直近のＮ回で選定されたサーバ装置である場合、当該サーバ装置はサーバ装置選定候補として外れるため、次のサーバ装置をサーチするためにステップＳＴ３１に進む。当該サーバ装置が直近のＮ回で選定されたサーバ装置でない場合、当該サーバ装置をサーバ装置選定候補として抽出する（ＳＴ３５）。
【００９１】
このように、この変形例では、サーバ装置を選定する際に、サーバ装置選定履歴に基づき、直近に選定されたサーバ装置のうち予め設定された台数のサーバ装置を選定対象から除外するようにしている。
【００９２】
これにより、直近にアプリケーションプロセスを生成したサーバ装置を再度選定することを防止できる。したがって、アプリケーションの特性を考慮すると共に、より収容効率を高く維持しつつサーバ装置を選定することが可能となる。
【００９３】
また、図１３に示した処理は、図１４に示すように、ステップＳＴ３４に代えて、当該アプリケーションに関わるプロセス生成に直近のＮ回で選定されたサーバ装置か否かを判定（ＳＴ３４−１’）してもよい。
【００９４】
また、管理装置制御部１０１は、図１５に示すように、アプリケーション種別及び／又はアプリケーション種別名とサーバ装置選定方法とを関連付けたサーバ選定情報１００ｄに基づき、生成するプロセスを実行するアプリケーションの種別毎にサーバ選定方法を設定してもよい。
【００９５】
サーバ選定情報１００ｄはサーバ装置選定方法毎に、具体的な選定手順を実行するためのプログラムと関連付けられ、記憶部２００又は管理装置モニタ部１００内の図示しないメモリに予め記憶される。つまり、サーバ選定情報１００ｄは、オペレータからの指示により、システムの動作を停止させることなく変更することができる。
【００９６】
管理装置制御部１０１は、サーバ装置選定を実施する前に、管理装置モニタ部１００を介して記憶部２００又は管理装置モニタ部１００内の図示しないメモリからサーバ選定情報１００ｄを読出し、生成するアプリケーションプロセスを実行するアプリケーションに対応するサーバ装置選定方法をサーバ装置選定に適用する。
【００９７】
このように、この変形例では、サーバ装置を選定する際に、生成するアプリケーションの種別毎に選定方法が設定されるようにしている。
【００９８】
これにより、アプリケーション毎の特性に応じてサーバ装置の選定方法を変更することができ、より多数のサーバ装置を効率よく動作させることが可能となる。
【００９９】
要するにこの発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態に亘る構成要素を適宜組み合せてもよい。
【符号の説明】
【０１００】
１…アプリケーション分散実行システム、１０…管理装置、２０…外部記憶装置、３０，４０…サーバ装置、５０…クライアント端末、１００…管理装置モニタ部、１０１…管理装置制御部、１００ａ…リソース情報、１００ｂ…サーバプロセスの状態、１００ｃ…アプリケーションプロセスの状態、１００ｄ…サーバ装置選択方法、２００…記憶部、３００，４００…サーバ装置モニタ部、３０１，４０１…サーバ装置制御部、３０２，４０２，４０３…アプリＡプロセス、３０３，３０４…アプリＢプロセス。
【図１】
0006025788.tif 000002
【図２】
0006025788.tif 000003
【図３】
0006025788.tif 000004
【図４】
0006025788.tif 000005
【図５】
0006025788.tif 000006
【図６】
0006025788.tif 000007
【図７】
0006025788.tif 000008
【図８】
0006025788.tif 000009
【図９】
0006025788.tif 000010
【図１０】
0006025788.tif 000011
【図１１】
0006025788.tif 000012
【図１２】
0006025788.tif 000013
【図１３】
0006025788.tif 000014
【図１４】
0006025788.tif 000015
【図１５】
0006025788.tif 000016