(57)【要約】【課題】  簡易な構成で過負荷時にもサーバに一定の性能を発揮させる。【解決手段】  本発明に係るサービス制御プログラムは、クライアント２０からの要求を受けてサービスを処理するサーバ装置１０において実行されることで、サービスの処理状況を測定するサービス処理状況測定部１１と、上記測定された処理状況から、所定の基準に基づき、上記サービスの並列処理可能数を変更等する並列処理可能数設定部１２と、クライアント２０からの要求に対してサービスの並列処理数を検出する並列処理数検出部１３と、上記クライアント２０からの要求があったときに、上記検出された並列処理数が、上記変更等された並列処理可能数未満であるか否かを判断し、未満である場合に、当該要求に対するサービスの処理を実行する制御を行うサービス処理数制御部１４にそれぞれの機能を発揮させる。【選択図】  図１
2005222332.tif 000002
【特許請求の範囲】
【請求項１】
クライアントからの要求を受けて１種類以上のサービスを処理するサーバ装置に、
前記サービスの種類に応じて、サービスの処理状況を測定するサービス処理状況測定処理と、
前記サービスの種類に応じて、サービスの並列処理可能数を設定し、前記サービス処理状況測定処理において測定された処理状況から所定の基準に基づき当該サービスの並列処理可能数を変更する並列処理可能数設定処理と、
前記サービスの種類に応じて、クライアントからの要求に対してサービスを並列に処理している数を検出する並列処理数検出処理と、
前記クライアントからの要求があったときに、前記並列処理数検出処理において検出された、当該要求に対応するサービスの種類の並列処理数が、前記並列処理可能数設定処理において設定又は変更された、当該要求に対応するサービスの種類の並列処理可能数未満であるか否かを判断し、当該並列処理数が当該並列処理可能数未満である場合に、当該要求に対するサービスの処理を実行する制御を行うサービス処理数制御処理と
を実行させるサービス制御プログラム。
【請求項２】
前記サービス処理状況測定処理において、単位時間あたりに処理が完了した前記サービスの数を前記サービスの処理状況として測定することを特徴とする請求項１に記載のサービス制御プログラム。
【請求項３】
前記サービス処理数制御処理において、前記並列処理数が前記並列処理可能数以上である場合に、前記要求に対するサービスの処理を禁止する制御を更に行うことを特徴とする請求項１又は２に記載のサービス制御プログラム。
【請求項４】
前記サービス処理数制御処理において禁止されたサービスの処理に関する前記要求を保持しておくクライアント要求保持処理と、
前記並列処理数検出処理において検出された、前記クライアント要求保持処理において保持された要求に対応するサービスの種類の並列処理数、及び前記並列処理可能数設定処理において設定又は変更された、前記クライアント要求保持処理において保持された要求に対応するサービスの種類の並列処理可能数から、前記クライアント要求保持処理において保持された要求に対するサービスの処理が可能であるか否かを所定の基準に基づき判断し、可能である場合に、当該要求に対するサービスの処理を実行する制御を行う待機中要求制御処理と
を前記サーバ装置に更に実行させる請求項３に記載のサービス制御プログラム。
【請求項５】
前記サービス処理数制御処理において、前記並列処理数が前記並列処理可能数以上である場合であっても、予め設定された条件に基づき前記要求に対するサービスの処理を実行する制御を行うことを特徴とする請求項１〜４の何れかに記載のサービス制御プログラム。
【請求項６】
クライアントからの要求を受けて１種類以上のサービスを処理するサーバ装置において、
前記サービスの種類に応じて、サービスの処理状況を測定するサービス処理状況測定手段と、
前記サービスの種類に応じて、サービスの並列処理可能数を設定し、前記サービス処理状況測定手段により測定された処理状況から所定の基準に基づき当該サービスの並列処理可能数を変更する並列処理可能数設定手段と、
前記サービスの種類に応じて、クライアントからの要求に対してサービスを並列に処理している数を検出する並列処理数検出手段と、
前記クライアントからの要求があったときに、前記並列処理数検出手段により検出された、当該要求に対応するサービスの種類の並列処理数が、前記並列処理可能数設定手段により設定又は変更された、当該要求に対応するサービスの種類の並列処理可能数未満であるか否かを判断し、当該並列処理数が当該並列処理可能数未満である場合に、当該要求に対するサービスの処理を実行する制御を行うサービス処理数制御手段と
を備えるサーバ装置。
【請求項７】
前記サービス処理状況測定手段は、単位時間あたりに処理が完了した前記サービスの数を前記サービスの処理状況として測定することを特徴とする請求項６に記載のサーバ装置。
【請求項８】
前記サービス処理数制御手段は、前記並列処理数が前記並列処理可能数以上である場合に、前記要求に対するサービスの処理を禁止する制御を更に行うことを特徴とする請求項６又は７に記載のサーバ装置。
【請求項９】
前記サービス処理数制御手段により禁止されたサービスの処理に関する前記要求を保持しておくクライアント要求保持手段と、
前記並列処理数検出手段により検出された、前記クライアント要求保持手段により保持された要求に対応するサービスの種類の並列処理数、及び前記並列処理可能数設定手段により設定又は変更された、前記クライアント要求保持手段により保持された要求に対応するサービスの種類の並列処理可能数から、前記クライアント要求保持手段により保持された要求に対するサービスの処理が可能であるか否かを所定の基準に基づき判断し、可能である場合に、当該要求に対するサービスの処理を実行する制御を行う待機中要求制御手段と
を更に備える請求項８に記載のサーバ装置。
【請求項１０】
前記サービス処理数制御手段は、前記並列処理数が前記並列処理可能数以上である場合であっても、予め設定された条件に基づき前記要求に対するサービスの処理を実行する制御を行うことを特徴とする請求項６〜９の何れかに記載のサーバ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、クライアントからの要求を受けて１種類以上のサービスを処理するサーバ装置を制御するためのサービス制御プログラム、及び当該サーバ装置に関する。
【背景技術】
【０００２】
クライアントからの要求を受けてサービスを提供するサーバに対し、非常に多数のクライアントが同時にサービスを要求すると、サーバが過負荷になってサービスが全く実行されなくなることがある。
【０００３】
多数のサービスを同時並行的に実行する際に、それぞれの処理をどのような順序でどれくらいずつ実行するかを計画するスケジューラを用いて、上記問題を解決する方法が提案されている。
【０００４】
また、非特許文献１では、内部の処理をいくつかの段階に分け、各段階をパイプラインのようにつないで、各処理で並列処理をすることにより、クライアントからのサービスの要求が集中する時にも一定の性能を発揮できる技術について言及されている。
【非特許文献１】Matt Welsh, David Culler, and Eric Brewer，SEDA：An Architecture for Well-Conditioned, Scalable Internet Services，Proceedings of the Eighteenth Symposium on Operating Systems Principles(SOSP-18)，ACM，October,2001
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、スケジューラによる方法は、スケジューラをオペレーティングシステムや言語処理系毎に専用のものとする必要があり、ソフトウェアの保守性等の点で課題となっている。
【０００６】
また、上記非特許文献１で言及されている技術は、サーバのソフトウェアの構成を従来のものと全く変えることによって性能向上を図っているものであり、従来のオペレーティングシステムや言語処理系に対して適用することができない。
【０００７】
一般にオペレーティングシステムや言語処理系の改造は、技術的、経済的に困難で、避けるべきである。
【０００８】
本発明は、上記課題を解決するために成されたものであり、簡易な構成で、過負荷時にもサーバが一定の性能を発揮することができるサービス制御プログラム及びサーバ装置を提供する。
【課題を解決するための手段】
【０００９】
上記目的を達成するために、本発明に係るサービス制御プログラムは、クライアントからの要求を受けて１種類以上のサービスを処理するサーバ装置に、上記サービスの種類に応じて、サービスの処理状況を測定するサービス処理状況測定処理と、上記サービスの種類に応じて、サービスの並列処理可能数を設定し、上記サービス処理状況測定処理において測定された処理状況から所定の基準に基づき当該サービスの並列処理可能数を変更する並列処理可能数設定処理と、上記サービスの種類に応じて、クライアントからの要求に対してサービスを並列に処理している数を検出する並列処理数検出処理と、上記クライアントからの要求があったときに、上記並列処理数検出処理において検出された、当該要求に対応するサービスの種類の並列処理数が、上記並列処理可能数設定処理において設定又は変更された、当該要求に対応するサービスの種類の並列処理可能数未満であるか否かを判断し、当該並列処理数が当該並列処理可能数未満である場合に、当該要求に対するサービスの処理を実行する制御を行うサービス処理数制御処理とを実行させることを特徴とする。
【００１０】
ここで、上記並列処理可能数設定処理において用いられる所定の基準とは、サーバ一定の性能を発揮できるサービスの並列処理数を保持できるような基準とする。また、上記並列処理可能数及び並列処理数は、必ずしも整数である必要はなく、何らかの指標等の実数でもよい。
【００１１】
本発明に係るサービス制御プログラムを上記サーバ装置に実行させることにより、以下のように処理が実行される。
【００１２】
まず、サーバ起動時等に、並列処理可能数設定処理において、上記サービスの種類に応じてサービスの並列処理可能数が設定される。当該設定された値は、初期値であり適当な値が設定されていればよい。
【００１３】
続いて、サービス処理状況測定処理において、サービスの処理状況が測定される。続いて、並列処理可能数設定処理において、当該測定された処理状況から、所定の基準に基づき、サービスの並列処理可能数が変更される。上記測定及び変更は、一定時間間隔、クライアントからの要求があったとき、又はサービスの処理が完了したとき等、適当なタイミングで行われる。
【００１４】
その一方、並列処理数検出手段において、サービスの種類に応じて並列処理数を検出する。上記検出も、一定時間間隔、又はクライアントからの要求があったとき等、適当なタイミングで行われる。
【００１５】
クライアントからの要求がサーバ装置に対してあったとき、サービス処理数制御処理において、当該要求に対応するサービスの種類について、上記検出された並列処理数が、上記設定又は変更された並列処理可能数未満であるか否かを判断する。当該並列処理数が当該並列処理可能数未満である場合に、当該要求に対するサービスの処理を実行する制御が行われる。
【００１６】
上記により、本発明に係るサービス制御プログラムによれば、サービスの種類に応じて並列処理数を、サーバ装置が過負荷状態にならないように制御することができるので、簡易な構成により、クライアントからのサービスの要求が集中する時にもサーバが一定の性能を発揮することができる。
【００１７】
また、本発明に係るサービス制御プログラムは、より具体的には、上記サービス処理状況測定処理において、単位時間あたりに処理が完了した上記サービスの数を上記サービスの処理状況として測定する構成とすることが望ましい。
【００１８】
また、本発明に係るサービス制御プログラムは、上記サービス処理数制御処理において、上記並列処理数が上記並列処理可能数以上である場合に、上記要求に対するサービスの処理を禁止する制御を更に行う構成とすることが望ましい。
【００１９】
上記により、本発明に係るサービス制御プログラムによれば、並列処理数が並列処理可能数以上である場合にサービスの処理がなされないので、より確実に過負荷時にもサーバが一定の性能を発揮することができる。
【００２０】
また、本発明に係るサービス制御プログラムは、上記サービス処理数制御処理において禁止されたサービスの処理に関する上記要求を保持しておくクライアント要求保持処理と、上記並列処理数検出処理において検出された、上記クライアント要求保持処理において保持された要求に対応するサービスの種類の並列処理数、及び上記並列処理可能数設定処理において設定又は変更された、上記クライアント要求保持処理において保持された要求に対応するサービスの種類の並列処理可能数から、上記クライアント要求保持処理において保持された要求に対するサービスの処理が可能であるか否かを所定の基準に基づき判断し、可能である場合に、当該要求に対するサービスの処理を実行する制御を行う待機中要求制御処理とを上記サーバ装置に更に実行させる構成とすることが望ましい。
【００２１】
上記待機中要求制御処理における所定の基準とは、例えば並列処理数がゼロになった場合、又は並列処理数が並列処理可能数未満になった場合に上記サービスの提供を可能とみなすという基準である。
【００２２】
待機中要求制御処理における上記判断は、一定時間間隔等、適当なタイミングで行われる。
【００２３】
上記により、本発明に係るサービス制御プログラムによれば、１度サービスの処理が禁止されたクライアントからの要求であっても、待機中要求制御処理において、改めてサービスの処理の提供が可能であるか判断され、可能である場合実行の処理が実行される。即ち、クライアントからの要求は、要求時に処理の禁止の制御がなされたとしても、その時に実行されている別の処理が順次終了し、いずれは処理が実行されることとなる。
【００２４】
また、本発明に係るサービス制御プログラムは、上記サービス処理数制御処理において、上記並列処理数が上記並列処理可能数以上である場合であっても、予め設定された条件に基づき上記要求に対するサービスの処理を実行する制御を行う構成とすることが望ましい。
【００２５】
ここで、予め設定された条件とは、例えば、特に優先してサービスを処理させたい要求の条件等である。
【００２６】
上記により、本発明に係るサービス制御プログラムによれば、特に優先してサービスを処理させたい要求がある等の例外的な運用が必要な場合、当該例外的運用を適切に行うことができ、より柔軟なサーバの運用を図ることができる。
【００２７】
本発明は、以下に述べるようなサーバ装置に係る発明として捉えることもでき、同様の作用及び効果を奏する。
【００２８】
本発明に係るサーバ装置は、クライアントからの要求を受けて１種類以上のサービスを処理するサーバ装置において、上記サービスの処理状況を測定するサービス処理状況測定手段と、上記サービスの種類に応じて、サービスの並列処理可能数を設定し、上記サービス処理状況測定手段により測定された処理状況から所定の基準に基づき当該サービスの並列処理可能数を変更する並列処理可能数設定手段と、上記サービスの種類に応じて、クライアントからの要求に対してサービスを並列に処理している数を検出する並列処理数検出手段と、上記クライアントからの要求があったときに、上記並列処理数検出手段により検出された、当該要求に対応するサービスの種類の並列処理数が、上記並列処理可能数設定手段により設定又は変更された、当該要求に対応するサービスの種類の並列処理可能数未満であるか否かを判断し、当該並列処理数が当該並列処理可能数未満である場合に、当該要求に対するサービスの処理を実行する制御を行うサービス処理数制御手段とを備えることを特徴とする。
【００２９】
本発明に係るサーバ装置において、上記サービス処理状況測定手段は、単位時間あたりに処理が完了した上記サービスの数を上記サービスの処理状況として測定する構成とすることが望ましい。
【００３０】
本発明に係るサーバ装置において、上記サービス処理数制御手段は、上記並列処理数が上記並列処理可能数以上である場合に、上記要求に対するサービスの処理を禁止する制御を更に行う構成とすることが望ましい。
【００３１】
本発明に係るサーバ装置は、上記サービス処理数制御手段により禁止されたサービスの処理に関する上記要求を保持しておくクライアント要求保持手段と、上記並列処理数検出手段により検出された、上記クライアント要求保持手段により保持された要求に対応するサービスの種類の並列処理数、及び上記並列処理可能数設定手段により設定又は変更された、上記クライアント要求保持手段により保持された要求に対応するサービスの種類の並列処理可能数から、上記クライアント要求保持手段により保持された要求に対するサービスの処理が可能であるか否かを所定の基準に基づき判断し、可能である場合に、当該要求に対するサービスの処理を実行する制御を行う待機中要求制御手段とを更に備える構成とすることが望ましい。
【００３２】
本発明に係るサーバ装置において、上記サービス処理数制御手段は、上記並列処理数が上記並列処理可能数以上である場合であっても、予め設定された条件に基づき上記要求に対するサービスの処理を実行する制御を行う構成とすることが望ましい。
【発明の効果】
【００３３】
上記により本発明によれば、簡易な構成により、過負荷時にもサーバが一定の性能を発揮することができる。
【発明を実施するための最良の形態】
【００３４】
以下、図面を参照しながら本発明の実施形態について説明する。
【００３５】
図１に、本発明に係るサービス制御プログラムが実行されるサーバ装置１０と、クライアント２０とを含むシステムの全体構成を示す。サーバ装置１０は、ネットワークＮを介したクライアント２０からの要求を受けて１種類以上のサービスを処理する。サーバ装置１０上で動作し、サービスを処理するソフトウェアをサーバといい、例えばクライアント２０からの要求に従ってＷｅｂブラウザで閲覧するコンテンツを作成し、クライアント２０に送信するＷｅｂアプリケーションサーバのようなものが相当する。クライアント２０は、サーバ装置１０に対してサービスの要求を送信し、サーバ装置１０により処理され送信されたサービスの処理結果を受信する。クライアント２０は、例えば、パーソナルコンピュータや移動通信端末等に相当する。ネットワークＮは、サーバ装置１０及びクライアント２０の接続対象であり、例えばインターネット網や携帯電話網等に相当する。
【００３６】
本実施形態において、１つのサービスの種類は、例えば、利用者が買い物を行うことができる機能を提供するＷｅｂアプリケーションサーバにおいて、商品の購入をする場合に、商品の情報についてのＷｅｂページの表示、必要な情報を入力するためのページの表示等の個々の機能を一つの意味のある単位にまとめたものとする。上記一連の処理を１つのサービスの種類としたのは、サービスの処理の制御、例えばサービスの処理の禁止が、一連の処理の途中で行われないようにするためである。
【００３７】
図１に示すように、サーバ装置１０は、クライアント２０から要求を受信し当該要求に対しサービスを処理するサービス処理部１７と、サービス処理状況測定部１１と、並列処理可能数設定部１２と、並列処理数検出部１３と、サービス処理数制御部１４と、クライアント要求保持部１５と、待機中要求制御部１６とを備える。
【００３８】
サービス処理状況測定部１１は、サービスの種類に応じて、サービスの処理状況を測定する。ここで、サービスの処理状況として単位時間あたりに処理が完了したサービスの数（以下この数をスループットと呼ぶ）を用い、Ｔｈｒ（ｔ）で表す（ｔは時刻を示すインデックスである）。スループットＴｈｒ（ｔ）は、具体的には例えばサービスの処理が完了した時点で算出され、サービスの処理の開始から完了までの時間の逆数とそれまでのスループットの値との平均により算出される。なおＴｈｒ（０）＝０とする。
【００３９】
並列処理可能数設定部１２は、サービスの種類に応じてサービスの並列処理可能数を設定し、上記測定された処理状況から、所定の基準に基づき、サービスの並列処理可能数を変更する。ここで、並列処理可能数をＭａｘ（ｔ）で表す。なお、所定の基準は、サーバが過負荷にならないように並列処理化可能数を制御可能とするようなものとし、具体的な内容については後述する。また、Ｍａｘ（ｔ）は、サーバ装置１０の処理性能等を考慮して予め上限と下限とを定めておき、この値を超えて大きくなったり小さくなったりすることはないようにしておくことが好ましい。
【００４０】
並列処理数検出部１３は、サービスの種類に応じて、クライアント２０からの要求に対してサービス処理部１７がサービスを並列に処理している数を検出する。
【００４１】
サービス処理数制御部１４は、クライアント２０からサービスの処理についての要求があったときに、要求されたサービスの種類を参照して、サービス処理部１７におけるサービスの実行を制御する。具体的には、サービス処理数制御部１４は、要求に対応するサービスの種類に応じて、並列処理数検出部１３で検出された並列処理数、及び並列処理可能数設定部１２で設定又は変更された並列処理可能数を取得する。そして、並列処理数と並列処理可能数を比較し、並列処理数が並列処理可能数未満である場合に、要求に対するサービスの処理をサービス処理部１７に実行させる制御を行う。
【００４２】
一方、並列処理数が並列処理可能数以上である場合には、サービス処理数制御部１４は、好ましくは、サービス処理部１７に対してサービスの処理を禁止する制御を行う。あるいは、並列処理数が並列処理可能数以上であっても、必要に応じてサービスの処理を実行するように制御を行ってもよい。この場合、設定されている並列処理可能数を超えたサービスの処理をサービス処理部１７に実行させるように制御を行うことが好ましい。このような条件としては、例えば、クライアント２０からサービスの要求と併せて送信されるユーザＩＤ等の情報を用いて、特定のユーザに対しては優先的にサービスの提供を行う等の条件がある。
【００４３】
クライアント要求保持部１５は、上記サービス処理数制御処理において禁止されたサービスの処理に関する要求を保持しておく。
【００４４】
待機中要求制御部１６は、クライアント要求保持部１５により保持された要求に対応するサービスの種類の並列処理数、及びクライアント要求保持部１５により保持された要求に対応するサービスの種類の並列処理可能数を取得する。ここで、並列処理数は並列処理数検出部１３により検出されたものであり、並列処理可能数は並列処理可能数設定部１２により設定又は変更されたものである。そして、並列処理数と並列処理可能数とからクライアント要求保持部１５により保持された要求に対するサービスの処理が可能であるか否かを所定の基準に基づき判断する。サービスの処理が可能である場合、当該要求に対するサービスの処理を実行するようサービス処理部１７を制御する。なお、ここでの所定の基準の内容は後述する。
【００４５】
図２に、サーバ装置１０のハードウェア構成を示す。上記の各構成要素によるソフトウェア的処理機能は、これらのハードウェア構成によって行われる。
【００４６】
ＣＰＵ１０１は、ソフトウェアプログラムを実行することにより、データの計算、加工を行い、後述するサーバ装置１０の各構成要素の機能を司る。ＣＰＵ１０１には、サーバ装置１０の処理動作に必要な各ソフトウェアプログラム等が記憶されているＲＯＭ１０２と、プログラム実行中に一時的にデータが記憶されるＲＡＭ１０３とが接続されている。また、このＣＰＵ１０１には、ハードディスク等の外部記憶装置１０４が接続されている。
【００４７】
これらのＣＰＵ１０１等に対して、使用者が適宜操作及び参照が可能なように、入力装置１０５と、表示装置１０６とが接続されてサーバ装置１０が構成されている。入力装置１０５としては、例えばマウス等のポインティングデバイスやキーボード等が用いられる。また、表示装置１０６としては、例えばＣＲＴディスプレイや液晶ディスプレイなどが用いられる。また、ネットワークＮに接続し、データの送受信等をするため、通信インターフェース１０７が設けられている。
【００４８】
サーバ装置１０における、上記構成要素の機能を発揮させるための本発明に係るサービス制御プログラムについて説明する。図３に示すように、サービス制御プログラム３１は、サーバ装置１０内の記録媒体３０に形成されたプログラム格納領域３０ａ内に格納されている。
【００４９】
図３に示すように、サービス制御プログラム３１は、サービス状況測定モジュール３１ａと、並列処理可能数設定モジュール３１ｂと、並列処理数検出モジュール３１ｃと、サービス処理数制御モジュール３１ｄと、クライアント要求保持モジュール３１ｅと、待機中要求制御モジュール３１ｆとを備えて構成される。
【００５０】
サービス状況測定モジュール３１ａを実行させることによって、サーバ装置１０が有するサービス処理状況測定部１１の機能が実現される。同様に、並列処理可能数設定モジュール３１ｂは並列処理可能数設定部１２の、並列処理数検出モジュール３１ｃは並列処理数検出部１３の、サービス処理数制御モジュール３１ｄはサービス処理数制御部１４の、クライアント要求保持モジュール３１ｅはクライアント要求保持部１５の、待機中要求制御モジュール３１ｆは待機中要求制御部１６の機能をそれぞれ実現する。
【００５１】
なお、サーバ装置１０の各構成要素の機能は、プログラムにより実現されるものではなく、サーバ装置１０自体に有していてもよい。
【００５２】
以下、図４のフローチャートを用いて、クライアント２０から要求が送信されたときの、本実施形態に係るサーバ装置１０において実行される処理を説明する。
【００５３】
クライアント２０からの要求が、ネットワークＮを介してサーバ装置１０に送信されると処理が開始される。処理の開始の前に、サーバ装置１０では、並列処理可能数設定部１２によりサービスの種類に応じてＭａｘ（ｔ）の値が設定又は変更されている。並列処理可能数設定部１２は、過去の実績から単位時間あたりの処理可能数を算出した値等の適当な値を、並列処理可能数Ｍａｘ（ｔ）の初期値であるＭａｘ（０），Ｍａｘ（１）として設定する。当該設定は、サーバ起動時等の適当なタイミングで行われる。また、Ｍａｘ（ｔ）の変動の値として、サービスの種類に応じて正の値deltaを定義する。通常、deltaは１とする。
【００５４】
要求が送信されたサーバ装置１０では、サービス処理部１７が要求を受信する（Ｓ０１）。
【００５５】
続いて、サービス処理数制御部１４は、要求が予め設定された条件に合致するか否か判断する（Ｓ０２）。ここで、予め設定された条件は、例えば上記要求が特定のユーザからのものである、等の内容である。合致する場合は、サービス処理数制御部１４が要求に対するサービスの処理を実行するように、サービス処理部１７を制御し、サービス処理部１７がサービスの処理を実行する（Ｓ０５）。
【００５６】
続いて、並列処理数検出部１３が、要求に関するサービスの種類に対応するサービスの並列処理数を検出する（Ｓ０３）。なお、検出は、要求時点で実際に処理がなされているサービスの数を取得してもよいし、並列処理数を保持しておいてその数を参照してもよい。並列処理数を保持しておく方法においては、サービスの処理が開始されたときはその数に１を加え、サービスの処理が完了したときはその数から１を引く。
【００５７】
続いて、サービス処理数制御部１４が、検出された並列処理数がサービスの種類のＭａｘ（ｔ）未満であるか否かを判断する（Ｓ０４）。
【００５８】
並列処理数がＭａｘ（ｔ）未満である場合、サービス処理数制御部１４が上記要求に対するサービスの処理を実行するように、サービス処理部１７を制御し、サービス処理部１７がサービスの処理を実行する（Ｓ０５）。
【００５９】
並列処理数がＭａｘ（ｔ）以上である場合、サービス処理数制御部１４が上記要求に対するサービスの処理を禁止するように、サービス処理部１７を制御する。また、クライアント要求保持部１５が禁止されたサービスの処理に関するクライアント２０からの要求を保持しておく（Ｓ０６）。保持の後、並列処理数検出部１３が、サービスの種類に対応するサービスの並列処理数を検出する（Ｓ０７）。ここで、待機中要求制御部１６が、検出されたサービスの並列処理数がゼロであるか否かという基準で、保持されている要求に対するサービスの処理が可能であるか否か判断する（Ｓ０８）。なお、ここでの基準は、上記以外でも、例えば、検出されたサービスの並列処理数がサービスの種類の並列処理可能数Ｍａｘ（ｔ）未満であるというものが用いられてもよい。ここで、並列処理数がゼロであった場合は、サービス処理数制御部１４が要求に対するサービスの処理を実行するように、サービス処理部１７を制御し、サービス処理部１７がサービスの処理を実行する（Ｓ０５）。並列処理数がゼロでなかった場合は、一定時間後等に、再度Ｓ０７の処理を行う。
【００６０】
Ｓ０５において、サービスの処理が完了した後、サービス処理状況測定部１１が、処理が完了したサービスの種類のスループットＴｈｒ（ｔ）を測定する（Ｓ０９）。
【００６１】
続いて、上記測定されたスループットＴｈｒ（ｔ）を参照してＭａｘ（ｔ）を変更する（Ｓ１０）。本処理についての詳細を図５に示すフローチャートを用いて説明する。
【００６２】
まず、並列処理数検出部１３が、処理が完了したサービスの種類に対応するサービスの並列処理数を検出する（Ｓ２１）。続いて、並列処理可能数設定部１２が、検出された並列処理数が、そのサービスの種類のＭａｘ（ｔ）未満であるかを判断する（Ｓ２２）。以上である場合、以下のＭａｘ（ｔ）の変更処理を行う。未満である場合は、Ｍａｘ（ｔ）の変更処理は行わない。変更処理を行わない理由は、並列処理数が、サービスの種類のＭａｘ（ｔ）未満である場合は、並列処理数に余裕があるといえるので、Ｍａｘ（ｔ）を変更する必要がないからである。
【００６３】
続いて、並列処理可能数設定部１２が、最後に変更された並列処理可能数Ｍａｘ（ｔ）がその１つ前に変更された値Ｍａｘ（ｔ−１）を超えているか否か（Ｓ２３）、及び最後に測定されたスループットＴｈｒ（ｔ）がその１つ前に測定されたスループットＴｈｒ（ｔ−１）を超えているか否か（Ｓ２４，２５）を判断する。
【００６４】
ここで、Ｍａｘ（ｔ−１）＜Ｍａｘ（ｔ）かつＴｈｒ（ｔ−１）＜Ｔｈｒ（ｔ）である場合、及びＭａｘ（ｔ−１）≧Ｍａｘ（ｔ）かつＴｈｒ（ｔ−１）≧Ｔｈｒ（ｔ）である場合には、並列処理可能数設定部１２が、変更される並列処理可能数Ｍａｘ（ｔ＋１）をＭａｘ（ｔ）＋deltaとする（Ｓ２６）。並列処理可能数が増加し、かつスループットが向上している場合、及び並列処理可能数が減少し、かつスループットが低下している場合は、並列処理可能数を増加させるとサービス処理性能の改善が見込まれるので、並列処理可能数を増加させるようにしたものである。
【００６５】
また、Ｍａｘ（ｔ−１）＜Ｍａｘ（ｔ）かつＴｈｒ（ｔ−１）≧Ｔｈｒ（ｔ）である場合、及びＭａｘ（ｔ−１）≧Ｍａｘ（ｔ）かつＴｈｒ（ｔ−１）＜Ｔｈｒ（ｔ）である場合には、並列処理可能数設定部１２が、変更される並列処理可能数Ｍａｘ（ｔ＋１）をＭａｘ（ｔ）−deltaとする（Ｓ２７）。並列処理可能数が増加し、かつスループットが低下している場合、及び並列処理可能数が減少し、かつスループットが向上している場合は、並列処理可能数を減少させるとサービス処理性能の改善が見込まれるので、並列処理可能数を減少させるようにしたものである。以上が、並列処理可能数変更の処理であり、次からの処理では当該変更された値が並列処理可能数Ｍａｘ（ｔ）として用いられる。以上が、Ｍａｘ（ｔ）の変更の処理（図４のＳ１０）である。
【００６６】
続いて、サービス処理部１７が、実行されたサービスの処理を基に、クライアント２０に対し要求に対する返信を行う（Ｓ１１）。例えば、Ｗｅｂアプリケーションサーバの場合、ＨＴＭＬによるデータ等、Ｗｅｂブラウザで閲覧可能なデータをクライアント２０に対して送信する。
【００６７】
上記により、本実施形態によれば、サービスの種類に応じて並列処理数を、サーバ装置１０が過負荷状態にならないように制御することができるので、クライアントからのサービスの要求が集中する時にもサーバが一定の性能を発揮することができる。また、オペレーティングシステムや言語処理系を改造することなく、またそれらに特別なスケジューラを用意することなく、汎用的なプログラムにより一定の性能発揮を実現することができる。
【００６８】
なお、本実施形態においては、単位時間あたりに処理が完了したサービスの数、即ちスループットをサービスの処理状況の測定値として用いているが、別の基準を用いてもよい。例えば、サービスの処理時間の平均値等を基準としてもよい。
【００６９】
また、本実施形態のように、サービス処理数制御部１４が、並列処理数が並列処理可能数以上である場合に、要求に対するサービスの処理を禁止する制御を更に行うこととすれば、並列処理数が並列処理可能数以上である場合にサービスの処理がなされないので、より確実に過負荷時にもサーバが一定の性能を発揮することができる。
【００７０】
また、本実施形態のように、禁止された制御がなされたサービスの処理に関するクライアント２０からの要求を保持し、保持された要求に対する制御を行うこととすれば、クライアント２０からの要求は、要求時に処理の禁止の制御がなされたとしても、その時に実行されている別の処理が順次終了し、いずれは処理が実行されることとなる。但し、禁止の制御が行わない場合も、例えばサービスの処理がなされないことをサーバ装置１０及びクライアント２０の利用者に通知すること等によって、適切なサーバの運用を行うことができる。
【００７１】
また、本実施形態のように、並列処理数が並列処理可能数以上である場合であっても、予め設定された条件に基づきその要求に対するサービスの処理を実行する制御を行うこととすれば、特に優先してサービスを処理させたい要求がある等の例外的な運用が必要な場合、例外的運用を適切に行うことができ、より柔軟なサーバの運用をはかることができる。
【００７２】
なお、サービス制御プログラム３１は、その一部若しくは全部が、通信回線等の伝送媒体を介して伝送され、他の機器により受信されて記録（インストールを含む）される構成としてもよい。
【００７３】
また、上記のプログラムは、コンピュータ読取可能な記録媒体に記録して頒布することが可能である。このような記録媒体には、例えばハードディスク及びフレキシブルディスク等の磁気媒体、ＣＤ−ＲＯＭ及びＤＶＤ−ＲＯＭ等の光学媒体、フロプティカルディスク等の磁気光学媒体、あるいは、プログラム命令を実行又は格納するように特別に配置された、例えばＲＡＭ、ＲＯＭ、及び半導体不揮発性メモリなどのハードウェアデバイスなどが含まれる。また、このような記録媒体からプログラム等を読み取る記録媒体読取用のドライブ（例えばフレキシブルディスクドライブ等）をＣＰＵ１０１に対して接続しておいてもよい。
【図面の簡単な説明】
【００７４】
【図１】本発明の実施形態における、サーバ装置とクライアントとを含む全体構成、及びサーバ装置の機能構成を示す図である。
【図２】実施形態におけるサーバ装置のハードウェア構成を示すブロック図である。
【図３】本発明に係るサービス制御プログラムの構成を示す図である。
【図４】実施形態におけるサーバ装置での処理を示すフローチャートである。
【図５】並列処理可能数を変更する部分の処理を示すフローチャートである。
【符号の説明】
【００７５】
１０…サーバ装置、１１…サービス処理状況測定部、１２…並列処理可能数設定部、１３…並列処理数検出部、１４…サービス処理数制御部、１５…クライアント要求保持部
１６…待機中要求制御部、１７…サービス処理部、２０…クライアント、３０…記録媒体、３０ａ…プログラム格納領域、３１…サービス制御プログラム、３１ａ…サービス状況測定モジュール、３１ｂ…並列処理可能数設定モジュール、３１ｃ…並列処理数検出モジュール、３１ｄ…サービス処理数制御モジュール、３１ｅ…クライアント要求保持モジュール、３１ｆ…待機中要求制御モジュール、１０１…ＣＰＵ、１０２…ＲＯＭ、１０３…ＲＡＭ、１０４…外部記憶装置、１０５…入力装置、１０６…表示装置、１０７…通信インターフェース、Ｎ…ネットワーク。
【図１】
2005222332.tif 000003
【図２】
2005222332.tif 000004
【図３】
2005222332.tif 000005
【図４】
2005222332.tif 000006
【図５】
2005222332.tif 000007