JP2008108163A - Server device, request processing control method, and program thereof - Google Patents
Server device, request processing control method, and program thereof Download PDFInfo
- Publication number
- JP2008108163A JP2008108163A JP2006292084A JP2006292084A JP2008108163A JP 2008108163 A JP2008108163 A JP 2008108163A JP 2006292084 A JP2006292084 A JP 2006292084A JP 2006292084 A JP2006292084 A JP 2006292084A JP 2008108163 A JP2008108163 A JP 2008108163A
- Authority
- JP
- Japan
- Prior art keywords
- request
- processing
- server
- information
- processing unit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
- Computer And Data Communications (AREA)
Abstract
Description
本発明は、クライアント装置から受け付けたリクエストを処理するサーバ装置の機能を制御する技術に関するものである。 The present invention relates to a technique for controlling a function of a server device that processes a request received from a client device.
従来、複数のサーバ装置がネットワークを介して接続されたシステムにおいて、サーバ装置がクライアント装置から受け付けたリクエストの処理を他のサーバ装置に負荷分散する技術がある。例えば、サーバ装置が、リクエストの処理を他のサーバ装置に委託した際の処理時間やデータ転送時間などを履歴情報として保持し、クライアント装置からリクエストを受け付けた場合に、保持している履歴情報に基づいて、このリクエストの処理の実行に要する時間が短いサーバ装置を負荷分散先のサーバ装置として選出する技術が開示されている(例えば、特許文献1参照)。サーバ装置は、選出したサーバ装置に処理の実行を委託する。このような技術によれば、リクエストの処理を複数のサーバ装置に分散させることが可能である。
しかしながら、特許文献1に開示された技術では、例えば、1つのリクエストでメモリを大量に消費してしまうような不具合がサーバ装置のプログラムに存在した場合や、サーバ装置が悪意のあるリクエストを受け付けた場合などに、1つのリクエストを処理する過程で、サーバ装置によるリクエストを処理する機能が停止してしまう可能性がある。このようなリクエストがクライアント装置からサーバ装置に連続的に送信された場合、リクエストの処理を負荷分散させる機能により、サーバ装置が他のサーバ装置にリクエストの処理を連続的に委託するため、複数のサーバ装置によるリクエストを処理する機能が連続的に停止してしまう可能性がある。
However, in the technique disclosed in
そこで本発明は、クライアント装置から受け付けたリクエストを処理する複数のサーバ装置において、リクエストを処理する機能が連続的に停止することを防止することを目的とする。 Therefore, an object of the present invention is to prevent a function for processing a request from being continuously stopped in a plurality of server devices that process a request received from a client device.
前記目的を達成するために、本発明は、ネットワークを介してクライアント装置から受け付けたリクエストを処理する複数のサーバ装置が、相互に通信可能に構成されており、クライアント装置からのリクエストによって指定されるリソースの識別子と、リクエストに対する処理の制御が実行されるための条件と、制御の処理内容であるアクションと、リクエストの受け付け状況に関する情報とを対応させた情報を記憶する記憶部と、情報を処理する処理部とを備えるものである。処理部は、リクエストを処理する機能の停止を検知すると、リクエストの受け付け状況に関する情報が、この情報に対応する条件を満たす場合に、記憶部からリソースの識別子およびアクションを取得して、取得したリソースの識別子およびアクションを他のサーバ装置に通知する。 In order to achieve the above object, according to the present invention, a plurality of server devices that process requests received from a client device via a network are configured to be able to communicate with each other, and are designated by requests from the client device. A storage unit that stores information that associates resource identifiers, conditions for executing control of processing for a request, actions that are control processing contents, and information about the reception status of a request, and processing information And a processing unit. When the processing unit detects the stop of the function for processing the request, when the information about the reception status of the request satisfies a condition corresponding to this information, the processing unit acquires the resource identifier and the action from the storage unit, and acquires the acquired resource. Is notified to other server devices.
本発明によれば、クライアント装置から受け付けたリクエストを処理する複数のサーバ装置において、リクエストを処理する機能が連続的に停止することを防止することが可能である。 ADVANTAGE OF THE INVENTION According to this invention, it is possible to prevent that the function which processes a request stops in the some server apparatus which processes the request received from the client apparatus continuously.
以下、本発明を実施するための最良の形態(以下「実施形態」という)について、図面を参照して説明する。 Hereinafter, the best mode for carrying out the present invention (hereinafter referred to as “embodiment”) will be described with reference to the drawings.
図1は、本実施形態におけるサーバ装置が複数接続されたリクエスト処理システムの構成を示す図である。図1に示すように、本実施形態におけるリクエスト処理システム1は、クライアント装置20と、サーバ装置10Aと、サーバ装置10Bとを含んで構成されている。クライアント装置20、サーバ装置10Aおよびサーバ装置10Bは、ネットワーク30を介して相互に通信可能に構成されている。サーバ装置10Aおよびサーバ装置10Bは、冗長構成(同様の構成)であり、ここではサーバ装置10が2台示されているが、複数であれば特にその数が限定されるものではない。また、クライアント装置20は3台示されているが、複数であれば特にその数が限定されるものではない。
FIG. 1 is a diagram showing a configuration of a request processing system in which a plurality of server devices are connected in the present embodiment. As shown in FIG. 1, the
クライアント装置20は、ネットワーク30を介してサーバ装置10にリクエストを送信する機能を有するとともに、サーバ装置10からそのリクエストに対するレスポンスを受け取る機能を有する。
The
サーバ装置10は、CPU(Central Processing Unit)100と、メモリ200とを含んで構成される。記憶部としてのメモリ200は、アプリケーションサーバ処理プログラム210と、監視サーバ処理プログラム220と、モジュールプログラム(リクエスト送出力モジュールプログラム)230と、Webサーバ処理プログラム240と、監視サーバ定義ファイル250と、モジュールカウンタテーブル260と、Webサーバリクエスト受付統計情報270とを含んで記憶する機能を有する。処理部としてのCPU100は、メモリ200に記憶されているプログラムを実行する機能を有する。
The
アプリケーションサーバ処理プログラム210は、モジュールプログラム230からリクエストが入力されると、そのリクエストの処理を実行し、モジュールプログラム230にその実行結果としてのレスポンスを出力するコードが記述されたプログラムである。
When a request is input from the
監視サーバ処理プログラム220は、リクエストを処理する機能(アプリケーションサーバ処理プログラム210がCPU100に実行されることによって実現する機能)を監視し、その停止を検知すると、監視サーバ定義ファイル250から取得したリソースの識別子およびアクションを他のサーバ装置10およびモジュールプログラム230に通知するコードが記述されたプログラムである。他のサーバ装置10は、リソースの識別子およびアクションが通知されることによって、通知されたリソースの識別子を指定するリクエストを受信した場合の処理を制御することが可能になる。つまり、監視サーバ処理プログラム220は、他のサーバ装置10のリクエスト処理を制御するリクエスト処理制御プログラムとしてのプログラムである。ここで、リソースとは、クライアント装置20がサーバ装置10を介して取得可能な情報であり、例えば、電子文書や画像などの情報である。リソースの識別子とは、クライアント装置からのリクエストによって指定されるものであり、このリソースの識別子には、例えば、URI(Uniform Resource Identifier)が用いられる。さらに、監視サーバ処理プログラム220は、他の装置からリソースの識別子およびアクションを受信すると、受信したリソースの識別子およびアクションをモジュールプログラム230に出力するコードが記述されたプログラムである。監視サーバ定義ファイル250については後記する。さらに、リソースの識別子およびアクションを監視サーバ定義ファイル250から取得する方法についても後記する。
The monitoring
モジュールプログラム230は、監視サーバ処理プログラム220からリソースの識別子およびアクションが入力されると、モジュールカウンタテーブル260にデータを登録するコードが記述されたプログラムである。モジュールカウンタテーブル260については後記する。また、モジュールプログラム230は、Webサーバ処理プログラム240からリクエストが入力されると、モジュールカウンタテーブル260に従って、アプリケーションサーバ処理プログラム210で処理させるリクエストの制御を行うコードが記述されたプログラムである。さらに、アプリケーションサーバ処理プログラム210からレスポンスが入力されると、Webサーバ処理プログラム240にレスポンスを出力するコードが記述されたプログラムである。
The
Webサーバ処理プログラム240は、クライアント装置20からリクエストを受け付けると、モジュールプログラム230にリクエストを出力するコードが記述されたプログラムである。また、Webサーバ処理プログラム240は、モジュールプログラム230からレスポンスが入力されると、クライアント装置20に送信するコードが記述されたプログラムである。さらに、Webサーバ処理プログラム240は、Webサーバリクエスト受付統計情報270に含まれるリクエストの受け付け状況に関する情報を所定の時間ごと(例えば、1秒ごと)に更新するコードが記述されたプログラムである。Webサーバリクエスト受付統計情報270およびそれに含まれるリクエストの受け付け状況に関する情報については後記する。
The Web
図2は、本実施形態におけるリクエスト処理システムが2台のサーバ装置を含む場合の処理の流れを示す図である。図2に示すように、ここでは、リクエスト処理システム1が、クライアント装置20と、2台のサーバ装置10(サーバ装置10Aおよびサーバ装置10B)とを含んで構成される場合を例に挙げて、サーバ装置10Aによるリクエスト処理の機能が停止した場合に、サーバ装置10(サーバ装置10Aおよびサーバ装置10B)がそのリクエストの受信を拒否する処理について説明する(適宜図1参照)。また、アプリケーションサーバ処理部310、監視サーバ処理部320、モジュール部330およびWebサーバ処理部340は、それぞれアプリケーションサーバ処理プログラム210、監視サーバ処理プログラム220、モジュールプログラム230およびWebサーバ処理プログラム240がCPU100によって実行されることによって実現されるものである。また、モジュール部330は、Webサーバ処理部340のプロセス上で動作するものである。
FIG. 2 is a diagram illustrating a processing flow when the request processing system according to the present embodiment includes two server apparatuses. As shown in FIG. 2, here, as an example, the
クライアント装置20から送信されたリクエスト(http://・・・/hoge.jsp)をアプリケーションサーバ処理部310Aが受け付けて処理を行おうとしたが、問題が発生し(1つのリクエストでメモリを大量に消費してしまうような不具合がサーバ装置10Aのアプリケーションサーバ処理プログラム210に存在した場合や、サーバ装置10Aが悪意のあるリクエストを受け付けた場合など)、アプリケーションサーバ処理部310Aがダウン(リクエストを処理する機能が停止)したとする。監視サーバ処理部320Aは、アプリケーションサーバ処理部310Aのプロセスが存在するか否かを所定の時間ごと(例えば、1秒ごと)に監視しており、アプリケーションサーバ処理部310Aがダウンしたことを検知すると(ステップS1001)、Webサーバ処理部340Aが保持するWebサーバリクエスト受付統計情報270からデータを取得して、解析を行う(ステップS1002)。解析の際には、Webサーバリクエスト受付統計情報270から取得したデータと、自己が保持する監視サーバ定義ファイル250のデータとを比較する。
The application
監視サーバ処理部320Aは、解析した後にリクエスト(http://・・・/hoge.jsp)を受信拒否すると判定すると、リクエスト(http://・・・/hoge.jsp)を受信拒否する旨の通知を、監視サーバ処理部320Bおよびモジュール部330Aに行う(ステップS1003)。監視サーバ処理部320Bは、モジュール部330Bに対してリクエスト受信拒否の通知を行う(ステップS1004)。モジュール部330Aは、クライアント装置20から、Webサーバ処理部340Aを介して受け付けたリクエスト(http://・・・/hoge.jsp)がWebサーバ処理部340Aから入力された場合には、以降の処理でリクエストをアプリケーションサーバ処理部310Aに出力しないようにし、Webサーバ処理部340Aを介してクライアント装置20にエラーを出力することでリクエスト受信拒否を行う(ステップS1005)。同様に、モジュール部330Bは、クライアント装置20から受け付けたリクエスト(http://・・・/hoge.jsp)がWebサーバ処理部340Bから入力された場合には、以降の処理でリクエストをアプリケーションサーバ処理部310Bに出力しないようにし、Webサーバ処理部340Bを介してクライアント装置20にエラーを出力することでリクエスト受信拒否を行う(ステップS1006)。
If the monitoring
図3は、本実施形態におけるWebサーバリクエスト受付統計情報の構成を示す図である。図3に示すように、Webサーバリクエスト受付統計情報270は、URI(リソースの識別子)271と、リクエストの受け付け状況に関する情報276とを含んで構成される。ここでは、リクエストの受け付け状況に関する情報276として、カウンタ273、1秒あたりのリクエスト数274、平均レスポンスタイム275が示されており、各項目の値は、時間272ごとに設定されている。
FIG. 3 is a diagram showing a configuration of Web server request reception statistical information in the present embodiment. As shown in FIG. 3, the Web server request reception
URI271は、クライアント装置20(図1参照)からのリクエストによって指定されるリソースの識別子である。
The
カウンタ273は、時間272あたり(秒・分・時間・日)に成功したリクエスト処理数の累計である「成功」と、時間272あたり(秒・分・時間・日)に失敗したリクエスト処理数の累計である「失敗」とを含む。「成功」としては、例えば、HTTP(HyperText Transfer Protocol)ステータスコード:200番台から300番台のレスポンス数を用い、「失敗」としては、例えば、HTTPステータスコード:500番台のレスポンス数を用いることができる。また、「成功」にHTTPステータスコード:100番台のレスポンス数を加えるようにしてもよいし、「失敗」にHTTPステータスコード:400番台のレスポンス数を累計に加えるようにしてもよい。
The
1秒あたりのリクエスト数274は、1秒間にクライアント装置20(図1参照)から受け付けたリクエスト数を、時間272(秒・分・時間・日)単位の平均値として算出した値である。例えば、1秒あたりのリクエスト数274(「日」単位の平均値)が9.1リクエスト数/秒で、1秒あたりのリクエスト数274(「分」単位の平均値)が12.7リクエスト数/秒の場合には、現在から遡って1分の間は、リクエストの受け付けによる負荷が高い状態(ピーク状態)になっている可能性があると判断できる。また、1秒あたりのリクエスト数274の代わりに、他の単位時間あたりのリクエスト数を用いてもよく、例えば、1分あたりのリクエスト数、1時間あたりのリクエスト数などを用いてもよい。
The number of
平均レスポンスタイム275は、Webサーバ処理部340(図2参照)がクライアント装置20(図2参照)からリクエストを受け付けてからクライアント装置20(図2参照)にレスポンスを返すまでの処理時間を、時間272(秒・分・時間・日)単位の平均値として算出した値である。例えば、平均レスポンスタイム275(「日」単位の平均値)が18.5ミリ秒で、平均レスポンスタイム275(「分」単位の平均値)が25.6ミリ秒の場合には、現在から遡って1分の間は、リクエストを受け付けてからレスポンスを返すまでに多くの時間を要していることから、リクエストの受け付けによる負荷が高い時間状態(ピーク状態)になっている可能性があると判断できる。
The
Webサーバリクエスト受付統計情報270は、運用上リクエスト処理の状況を確認するために利用されるようにしてもよい。また、Webサーバリクエスト受付統計情報270は、Webサーバリクエスト受付統計情報270をクリアすることもできる。
The Web server request reception
図4は、本実施形態における監視サーバ定義ファイルの構成を示す図である。図4に示すように、監視サーバ定義ファイル250は、URI251と、条件252と、アクション253とを含んで構成される。この監視サーバ定義ファイル250のデータは、例えば、管理者(不図示)などによって定義されるものである。また、メモリ200(図1参照)は、すくなくともURI251と、条件252と、アクション253と、リクエストの受け付け状況に関する情報276(図3参照)とを対応させた情報を記憶する。
FIG. 4 is a diagram showing the configuration of the monitoring server definition file in this embodiment. As shown in FIG. 4, the monitoring
URI251は、クライアント装置20(図1参照)からのリクエストによって指定されるリソースの識別子である。ここでは、URI251として、”/”のコンテキストルートから始まるURIが定義してある。また、3行目のデータのように、URI251の中に“*”をワイルドカードとして使用してもよい。このように、監視サーバ定義ファイル250をURI251別に定義しておくことによって、例えばログイン画面を表示させるリクエストを受信拒否しない(監視サーバ定義ファイル250に設定しない)ようにしておけば、クライアント装置20からログインができなくなることを防止できる。
The
条件252は、リクエストに対する処理の制御が実行されるための条件である。条件252としては、Webサーバリクエスト受付統計情報270(図3参照)のカウンタ273、リクエスト数274および平均レスポンスタイム275のうち、いずれの項目を用いてもよいし、それらの項目を組み合わせて条件252を構成するようにしてもよい。また、条件252に、しきい値(例えば、平均レスポンスタイム275のしきい値)を設定しておき、サーバ装置10(図1参照)が、実測値としきい値とに基づいてリクエストに対する処理を実行するようにしてもよい(平均レスポンスタイムの実測値がしきい値よりも大きいと判定した場合に、リクエストに対する処理の制御を実行するなど)。
The
アクション253は、リクエストに対する処理の制御を実行する際の処理内容である。ここでは、アクション253にリクエストの「流量制御」「受信拒否」などが定義されている。「流量制御」の「同時処理数」は、アプリケーションサーバ処理部310で同時に処理できるリクエスト数の上限値であり、「流量制御」の「キュー」は、リクエスト処理待ちとして、キューに格納できるリクエスト数の上限値を示している。また、「受信拒否」は、「流量制御(同時処理数:0)」と同じ意味であるため、アクション253には「受信拒否」の代わりに、「流量制御(同時処理数:0)」を設定してもよい。アクション253としては、「同時処理数」および「キュー」のいずれか一方を用いてもよいし、双方を設定してもよい。
The
図5は、本実施形態におけるモジュールカウンタテーブルの構成を示す図である。モジュールカウンタテーブル260は、URI261を含み、監視サーバ定義ファイル250(図4参照)に「同時処理数」が定義されている場合には、すくなくとも上限値262と、リクエストカウンタ263とを含んで構成され、監視サーバ定義ファイル250(図4参照)に「キュー」が定義されている場合には、すくなくともキューサイズ264と、キューカウンタ265とを含んで構成されるものである。
FIG. 5 is a diagram showing the configuration of the module counter table in the present embodiment. The module counter table 260 includes a
URI261は、クライアント装置20(図1参照)からのリクエストによって指定されるリソースの識別子である。
The
上限値262は、アプリケーションサーバ処理部310(図2参照)で同時に実行できるリクエストの最大数である。
The
リクエストカウンタ263は、アプリケーションサーバ処理部310(図2参照)で実行中のリクエストの数である。
The
キューサイズ264は、モジュール部330(図2参照)が保持するキューに格納できるリクエストの最大数である。
The
キューカウンタ265は、モジュール部330(図2参照)が保持するキューに格納されているリクエストの数である。
The
図6は、本実施形態におけるサーバ装置によるリクエスト処理の機能停止時の処理の流れを示すフローチャートである。図6を参照して(適宜図1ないし図5参照)、サーバ装置10Aが自己のリクエストを処理する機能の停止を検知する処理および検知した際に実行する処理の流れを説明する。 FIG. 6 is a flowchart showing the flow of processing when the function of request processing by the server device in the present embodiment is stopped. With reference to FIG. 6 (refer to FIG. 1 to FIG. 5 as appropriate), a description will be given of a process for detecting the stop of the function of processing its own request by the server device 10A and a flow of a process executed when it is detected.
監視サーバ処理部320Aは、アプリケーションサーバ処理部310Aのプロセスを監視する(ステップS101)。すなわち、監視サーバ処理部320Aは、所定の時間ごとにアプリケーションサーバ処理部310Aにヘルスチェックの要求を送信し、アプリケーションサーバ処理部310Aが正常なレスポンスを返すか否かで、アプリケーションサーバ処理部310Aがダウンしているか否か(サーバ装置10Aのリクエストを処理する機能が停止しているか否か)を確認する。監視サーバ処理部320Aが、アプリケーションサーバ処理部310Aがダウンしていない(サーバ装置10Aのリクエストを処理する機能が停止していない)と判定した場合(ステップS102で「No」)、ステップS101に戻る。監視サーバ処理部320Aが、アプリケーションサーバ処理部310Aがダウンした(サーバ装置10Aのリクエストを処理する機能が停止した)と判定した場合(ステップS102で「Yes」)、監視サーバ処理部320Aは、アプリケーションサーバ処理部310Aを再起動する(ステップS103)。
The monitoring
次に、監視サーバ処理部320Aは、監視サーバ定義ファイル250とWebサーバリクエスト受付統計情報270とを比較する(ステップS104)。すなわち、監視サーバ処理部320Aは、監視サーバ定義ファイル250の条件252で使用される情報(監視サーバ定義ファイル250の1行目であればWebサーバリクエスト受付統計情報270の平均レスポンスタイム275(秒・分・時間・日))を、監視サーバ定義ファイル250のURI251と同一のURI261を有するWebサーバリクエスト受付統計情報270のデータから取得し、監視サーバ定義ファイル250の条件252を満たすURI251が存在するか否かを解析する。
Next, the monitoring
監視サーバ処理部320Aは、条件に適合する情報が存在しないと判定した場合(ステップS105で「No」)、ステップS101に戻る。条件に適合する情報が存在すると判定した場合(ステップS105で「Yes」)、ステップS105で条件252を満たすと判定したデータのURI251およびアクション253を、他の監視サーバ処理部320Bに通知する(ステップS106)。ここでは、他の監視サーバ処理部320Bは1台であるとしたが、複数であってもよい。
If the monitoring
以下のステップS107〜ステップS109の処理は、サーバ装置10Aが、ステップS105で条件252を満たすと判定したデータのURI251を指定するリクエストを受信した際にアクション253を実行することによって、リクエスト処理を制御するために行う。すなわち、監視サーバ処理部320Aは、ステップS105で条件252を満たすと判定したデータのURI251およびアクション253をモジュール部330Aに出力する(ステップS107)。モジュール部330Aは、モジュールカウンタテーブル260に情報を登録する(ステップS108)。すなわち、監視サーバ処理部320Aから入力されたURI251をモジュールカウンタテーブル260のURI261に、監視サーバ処理部320Aから入力されたアクション253の「同時処理数」を上限値262に、「キュー」をモジュールカウンタテーブル260のキューサイズ264に登録する。リクエストカウンタ263およびキューカウンタ265には、例えば「0」を設定しておく。
The processing of the following steps S107 to S109 controls the request processing by executing the
モジュール部330Aは、Webサーバ処理部340Aを再起動する(ステップS109)。このステップS109は、Webサーバ処理部340のプロセス上で動作しているモジュール部330が保持するモジュールカウンタテーブル260の変更を反映させるために行う。Webサーバ処理部340の再起動の方法には、処理中のリクエストが終了してから再起動を行い、再起動の間に受け付けたリクエストをWebサーバ処理部340のキューに格納する方法、リクエストの終了を待たずに強制的に再起動を行う方法などがある。その後、ステップS101に戻る。
The
図7は、本実施形態におけるリクエスト処理の機能停止の通知を受けたサーバ装置によって実行される処理の流れを示すフローチャートである。図7を参照して(適宜図1ないし図5参照)、サーバ装置10Aのリクエストを処理する機能が停止した際に、サーバ装置10Bがサーバ装置10Aからその旨の通知を受け付ける処理および受け付けた際に実行する処理の流れを説明する。 FIG. 7 is a flowchart showing the flow of processing executed by the server device that has received the notification of the request processing function stop in this embodiment. Referring to FIG. 7 (refer to FIGS. 1 to 5 as appropriate), when the function of processing a request of server apparatus 10A is stopped, server apparatus 10B receives a notification to that effect from server apparatus 10A, and The flow of processing to be executed will be described.
監視サーバ処理部320Bは、監視サーバ処理部320Aからアプリケーションサーバ処理部310Aがダウンした旨の通知(サーバ装置10Aのリクエストを処理する機能が停止した旨の通知)として、URI251およびアクション253を受け付けたか否かを判定する(ステップS201)。URI251およびアクション253を受け付けていない場合には(ステップS201で「No」)、受け付けるまでステップS201を繰り返す。URI251およびアクション253を受け付けた場合には(ステップS201で「Yes」)、監視サーバ処理部320Bは、監視サーバ処理部320Aから受け付けたURI251およびアクション253をモジュール部330Bに出力する(ステップS202)。
Whether the monitoring
モジュール部330Bは、監視サーバ処理部320Bから入力されたURI251およびアクション253を、モジュールカウンタテーブル260に登録する(ステップS203)。登録の方法については、ステップS108(図6参照)と同様である。モジュール部330Bは、Webサーバ処理部340Bを再起動する(ステップS204)。再起動の方法については、ステップS109と同様である。その後、ステップS201に戻る。
The
図8は、本実施形態におけるモジュール部によるリクエスト受信時の処理の流れを示すフローチャートである。図8を参照して(適宜図1ないし図5参照)、サーバ装置10のモジュール部330がWebサーバ処理部340からリクエストを受信する処理および受信した際に実行する処理の流れを説明する。
FIG. 8 is a flowchart showing the flow of processing when a request is received by the module unit in the present embodiment. With reference to FIG. 8 (refer to FIG. 1 to FIG. 5 as appropriate), the
モジュール部330は、Webサーバ処理部340からリクエストを受信したか否かを判定する(ステップS301)。リクエストを受信していない場合には(ステップS301で「No」)、受信するまでステップS301を繰り返す。リクエストを受信した場合には(ステップS301で「Yes」)、アプリケーションサーバ処理部310がダウンしているか否かの判定を行う(ステップS302)。アプリケーション処理部310がダウンしている場合には(ステップS302で「Yes」)、他のアプリケーションサーバ処理部310にリクエストを転送して(ステップS303)、ステップS301に戻る。この転送は、Webサーバ処理部340を介して行われる。また、ここでは、ステップS103(図6参照)のアプリケーションサーバ処理部310の再起動の処理が未完了の場合などに、アプリケーションサーバ処理部310がダウンしている可能性がある。
The
アプリケーション処理部310がダウンしていない場合(ステップS302で「No」)、モジュール部330は、受信したリクエストによって指定されるURIが、モジュールカウンタテーブル260に登録されているか否かを判定する(ステップS304)。登録されていないと判定した場合には(ステップS304で「No」)、アプリケーションサーバ処理部310にリクエストを出力し(ステップS305)、ステップS301に戻る。登録されていると判定した場合には(ステップS304で「Yes」)、モジュールカウンタテーブル260の上限値262が「0」であるか否かを判定する(ステップS306)。ここでの上限値262は、モジュール部330が受信したリクエストによって指定されるURIでモジュールカウンタテーブル260を検索して、該当したものである。
When the
上限値262が「0」の場合(ステップS306で「Yes」)、Webサーバ処理部340にエラーを出力し(ステップS307)、ステップS301に戻る。上限値が「0」ではなかった場合(ステップS306で「No」)、上限値262がリクエストカウンタ263よりも大きいか否かを判定する(ステップS308)。ここでの上限値262およびリクエストカウンタ263は、モジュール部330が受信したリクエストによって指定されるURIでモジュールカウンタテーブル260を検索して、該当したものである。なお、ステップS308で使用する上限値262およびリクエストカウンタ263は、ステップS306の判定を行う際に取得してもよい。
If the
上限値262がリクエストカウンタ263以下の場合(上限値262がリクエストカウンタ263より大きくない場合)(ステップS308で「No」)、キューサイズ264がキューカウンタよりも大きいか否かを判定する(ステップS309)。ここでのキューサイズ264およびキューカウンタ265は、モジュール部330が受信したリクエストによって指定されるURIでモジュールカウンタテーブル260を検索して、該当したものである。なお、ステップS309で使用するキューサイズ264およびキューカウンタ265は、ステップS306の判定を行う際に取得してもよい。
When the
キューサイズ264がキューカウンタ265以下の場合(キューサイズ264がキューカウンタ265より大きくない場合)(ステップS309で「No」)、Webサーバ処理部340にエラーを出力し(ステップS310)、ステップS301に戻る。
When the
キューサイズ264がキューカウンタ265よりも大きい場合(ステップS309で「Yes」)、キューカウンタ265に「1」を加算し(ステップS311)、リクエスト処理待ちの処理を行い(ステップS312)、ステップS301に戻る。ここで「1」が加算されるキューカウンタ265は、モジュール部330が受信したリクエストによって指定されるURIでモジュールカウンタテーブル260を検索して、該当したものである。リクエスト処理待ちの処理とは、リクエストをキューに格納して、アプリケーションサーバ処理部310にリクエストを転送するのを保留することである。また、キューにリクエストを格納するとともに、その格納順番を、「1」を加算した後のキューカウンタ265の値とする。
If the
上限値262がリクエストカウンタ263より大きい場合(ステップS308で「Yes」)、リクエストカウンタ263に「1」を加算し(ステップS313)、アプリケーションサーバ処理部310にリクエストを出力して(ステップS314)、ステップS301に戻る。ここで「1」が加算されるリクエストカウンタ263は、モジュール部330が受信したリクエストによって指定されるURIでモジュールカウンタテーブル260を検索して、該当したものである。
When the
図9は、本実施形態におけるモジュール部によるレスポンス受信時の処理の流れを示すフローチャートである。図9を参照して(適宜図1ないし図5参照)、サーバ装置10のモジュール部330がアプリケーションサーバ処理部310からレスポンスを受信する処理および受信した際に実行する処理の流れを説明する。
FIG. 9 is a flowchart showing the flow of processing when a response is received by the module unit in the present embodiment. With reference to FIG. 9 (refer to FIGS. 1 to 5 as appropriate), the
モジュール部330は、アプリケーションサーバ処理部310からレスポンスを受信したか否かを判定する(ステップS401)。レスポンスを受信していない場合には(ステップS401で「No」)、受信するまでステップS401を繰り返す。レスポンスを受信した場合には(ステップS401で「Yes」)、Webサーバ処理部340から受信したリクエストによって指定されるURIが、モジュールカウンタテーブル260に登録されているか否かを判定する(ステップS402)。登録されていないと判定した場合には(ステップS402で「No」)、Webサーバ処理部340にレスポンスを出力し(ステップS403)、ステップS401に戻る。登録されていると判定した場合には(ステップS402で「Yes」)、リクエストカウンタ263から「1」を減算し(ステップS404)、Webサーバ処理部340にレスポンスを出力する(ステップS405)。ここで「1」が減算されるリクエストカウンタ263は、モジュール部330が受信したリクエストによって指定されるURIでモジュールカウンタテーブル260を検索して、該当したものである。
The
続いて、モジュール部330は、キュー待ちのリクエストが存在するか否かを判定する(ステップS406)。キュー待ちのリクエストが存在しない場合には(ステップS406で「No」)、ステップS401に戻る。キュー待ちのリクエストが存在する場合には(ステップS406で「Yes」)、格納順番が1(最初)のリクエストをアプリケーションサーバ処理部310に出力し(ステップS407)、キューに格納されている各リクエストの格納順番から「1」を減算し(ステップS408)、リクエストカウンタ263に「1」を加算し(ステップS409)、キューカウンタ265から「1」を減算して(ステップS410)、ステップS401に戻る。ここで「1」が加算されるリクエストカウンタ263および「1」を減算されるキューカウンタ265は、モジュール部330が受信したリクエストによって指定されるURIでモジュールカウンタテーブル260を検索して、該当したものである。
Subsequently, the
以上において説明したように、本実施形態におけるリクエスト処理システム1は、ネットワーク30を介してクライアント装置20から受け付けたリクエストを処理する複数のサーバ装置10が、相互通信可能に構成されている。サーバ装置10Aは、クライアント装置20からのリクエストによって指定されるリソースの識別子(例えば、URI251)と、リクエストに対する処理の制御が実行されるための条件252と、制御の処理内容であるアクション253と、リクエストの受け付け状況に関する情報276(例えば、時間272、カウンタ273、1秒あたりのリクエスト数274および平均レスポンスタイム275)とを対応させた情報をメモリ200に記憶している。そして、サーバ装置10Aの監視サーバ処理部320Aは、アプリケーションサーバ処理部310Aのプロセスのダウン(自己のリクエストを処理する機能の停止)を検知すると、リクエストの受け付け状況に関する情報276が、対応する条件252を満たす場合に、メモリ200からURI251およびアクション253を取得して他のサーバ装置10Bの監視サーバ処理部320Bに通知する。これによって、クライアント装置20から受け付けたリクエストを処理する機能がサーバ装置10Aで停止しても、URI251およびアクション253を通知されたサーバ装置10Bにおいて、通知されたURI251を指定するリクエストに対する処理を、通知されたアクション253が示すように制御できるため、リクエストを処理する機能が停止することを防止することができる。つまり、複数のサーバ装置において、リクエストを処理する機能が連続的に停止することを防止することができる。
As described above, the
1 リクエスト処理システム
10(10A,10B) サーバ装置
20 クライアント装置
30 ネットワーク
100 CPU
200 メモリ
210 アプリケーションサーバ処理プログラム
220 監視サーバ処理プログラム
230 モジュールプログラム
240 Webサーバ処理プログラム
250 監視サーバ定義ファイル
251 URI(リソースの識別子)
252 条件
253 アクション
260 モジュールカウンタテーブル
261 URI
262 上限値
263 リクエストカウンタ
264 キューサイズ
265 キューカウンタ
270 Webサーバリクエスト受付統計情報
271 URI(リソースの識別子)
272 時間(リクエストの受け付け状況に関する情報)
273 カウンタ(リクエストの受け付け状況に関する情報)
274 1秒あたりのリクエスト数(リクエストの受け付け状況に関する情報)
275 平均レスポンスタイム(リクエストの受け付け状況に関する情報)
DESCRIPTION OF
200
252
262
272 hours (information about the request acceptance status)
273 Counter (Information about the request acceptance status)
274 Number of requests per second (information about the request acceptance status)
275 Average response time (information about the request acceptance status)
Claims (5)
前記クライアント装置からのリクエストによって指定されるリソースの識別子と、前記リクエストに対する処理の制御が実行されるための条件と、前記制御の処理内容であるアクションと、前記リクエストの受け付け状況に関する情報とを対応させた情報を記憶する記憶部と、
前記リクエストを処理する機能の停止を検知すると、前記リクエストの受け付け状況に関する情報が、当該情報に対応する前記条件を満たす場合に、前記記憶部から前記リソースの識別子および前記アクションを取得し、
取得した前記リソースの識別子および前記アクションを他のサーバ装置に通知する処理部と
を備えることを特徴とするサーバ装置。 A plurality of server devices that accept requests from client devices via a network and process the requests are server devices in a system configured to be capable of mutual communication,
Corresponds to the identifier of the resource specified by the request from the client device, the condition for executing the control of the processing for the request, the action that is the processing content of the control, and the information about the reception status of the request A storage unit for storing the information,
When detecting the stop of the function of processing the request, when the information regarding the reception status of the request satisfies the condition corresponding to the information, the identifier of the resource and the action are acquired from the storage unit,
A server device comprising: a processing unit that notifies the acquired identifier of the resource and the action to another server device.
前記クライアント装置からのリクエストによって指定されるリソースの識別子と、前記リクエストに対する処理の制御が実行されるための条件と、前記制御の処理内容であるアクションと、前記リクエストの受け付け状況に関する情報とを対応させた情報を記憶する記憶部と、情報を処理する処理部と
を備え、
前記処理部は、
前記リクエストを処理する機能の停止を検知すると、前記リクエストの受け付け状況に関する情報が、当該情報に対応する前記条件を満たす場合に、前記記憶部から前記リソースの識別子および前記アクションを取得し、
取得した前記リソースの識別子および前記アクションを他のサーバ装置に通知する
ことを特徴とするリクエスト処理制御方法。 A request processing control method by a server device in a system in which a plurality of server devices that accept a request from a client device via a network and process the request are configured to be capable of mutual communication,
Corresponds to the identifier of the resource specified by the request from the client device, the condition for executing the control of the processing for the request, the action that is the processing content of the control, and the information about the reception status of the request A storage unit for storing the processed information, and a processing unit for processing the information,
The processor is
When detecting the stop of the function of processing the request, when the information regarding the reception status of the request satisfies the condition corresponding to the information, the identifier of the resource and the action are acquired from the storage unit,
A request processing control method, comprising: notifying another server device of the acquired identifier of the resource and the action.
前記リクエストの受け付け状況に関する情報を所定の時間ごとに更新し、
前記リクエストの受け付け状況に関する情報は、
単位時間当たりに受け付けたリクエスト数、単位時間当たりに処理を失敗したリクエスト数および平均レスポンスタイムのうち、すくなくとも1つを含む
ことを特徴とする請求項2に記載のリクエスト処理制御方法。 The processor is
Update the information regarding the acceptance status of the request every predetermined time,
Information about the acceptance status of the request
The request processing control method according to claim 2, comprising at least one of the number of requests accepted per unit time, the number of requests failed in processing per unit time, and the average response time.
他のサーバ装置から前記リソースの識別子および前記アクションを受信すると、
前記アクションに従って、前記リソースの識別子を指定するリクエストに対する処理の制御を実行する
ことを特徴とする請求項2または請求項3に記載のリクエスト処理制御方法。 The processor is
When the resource identifier and the action are received from another server device,
4. The request processing control method according to claim 2, wherein control of processing for a request designating an identifier of the resource is executed according to the action. 5.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006292084A JP2008108163A (en) | 2006-10-27 | 2006-10-27 | Server device, request processing control method, and program thereof |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006292084A JP2008108163A (en) | 2006-10-27 | 2006-10-27 | Server device, request processing control method, and program thereof |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2008108163A true JP2008108163A (en) | 2008-05-08 |
Family
ID=39441449
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006292084A Pending JP2008108163A (en) | 2006-10-27 | 2006-10-27 | Server device, request processing control method, and program thereof |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2008108163A (en) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010017765A1 (en) * | 2008-08-12 | 2010-02-18 | 华为技术有限公司 | User reporting method, apparatus and system |
JP2017129935A (en) * | 2016-01-18 | 2017-07-27 | キヤノン株式会社 | Server system, and method and program for controlling server system |
-
2006
- 2006-10-27 JP JP2006292084A patent/JP2008108163A/en active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010017765A1 (en) * | 2008-08-12 | 2010-02-18 | 华为技术有限公司 | User reporting method, apparatus and system |
JP2017129935A (en) * | 2016-01-18 | 2017-07-27 | キヤノン株式会社 | Server system, and method and program for controlling server system |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8010840B2 (en) | Generation of problem tickets for a computer system | |
CN111176873B (en) | Automatic micro-service offline method and device, computer equipment and storage medium | |
US10127028B2 (en) | Cancel and rollback update stack requests | |
US9594619B2 (en) | Robust hardware fault management system, method and framework for enterprise devices | |
US9720776B2 (en) | Server system, method for controlling the same, and program for executing parallel distributed processing | |
JP2003022258A (en) | Backup system for server | |
CN108200132B (en) | Resource acquisition method, device, equipment and computer readable storage medium | |
CN111343168A (en) | Identity authentication method and device, computer equipment and readable storage medium | |
CN113076112A (en) | Database deployment method and device and electronic equipment | |
CN107025129B (en) | Data processing method and device | |
CN114285844B (en) | Method and device for intelligently fusing server interface, electronic equipment and storage medium | |
JP4796086B2 (en) | Cluster system and method for selecting master node in the same system | |
US20050114867A1 (en) | Program reactivation using triggering | |
CN112055041B (en) | information processing system | |
JP2008108163A (en) | Server device, request processing control method, and program thereof | |
US9648111B2 (en) | Communication system and method of controlling the same | |
JP2003108252A (en) | License managing method, license managing server, license managing program, and recording media | |
CN113542424B (en) | Data processing method, device, equipment and readable storage medium | |
CN107800754B (en) | Data transmission task processing method and device, and data transmission task monitoring method and device | |
US20220276901A1 (en) | Batch processing management | |
CN115296979A (en) | Fault processing method, device, equipment and storage medium | |
KR100683901B1 (en) | Monitoring method of an web contents, computer readable medium storing the same, and monitoring system for the performing the same | |
CN110597682B (en) | Application deployment method and device, computer equipment and storage medium | |
CN114035948A (en) | Distributed task scheduling method and system | |
CN113515403B (en) | Micro-service state checking method, computer device and storage medium |