説明

リクエスト情報処理方法および計算機システム

【課題】
アプリケーションサーバではリクエスト処理のタイムアウトまでの時間は動的に変化させることができないため、一時的なサーバの負荷などによって不当にタイムアウトとなってしまうが、アプリケーションサーバ上ではリクエスト処理が続くため、リクエストの処理が完了してもレスポンスを返す事ができず、無駄な処理になってしまう。
【解決手段】
クライアント装置40から受信したリクエストの処理結果をアプリケーションサーバ処理プログラム210が統計情報として、タイムアウト管理サーバ処理プログラム410に通知しリクエスト情報テーブル420に格納することで、Webサーバ処理プログラム610が統計情報を基にタイムアウト値を変更するかどうかの判定を行い、動的にタイムアウト値を延長することで、上記課題を解決することが可能となる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、受け付けたリクエストを処理する計算機の機能を制御する技術に関するものである。
【背景技術】
【0002】
従来、クライアント装置からネットワークを介して接続されたシステムにおいて、サーバ装置上のWebサーバ処理プログラムがアプリケーションサーバ処理プログラムにリクエストを転送した後、所定の時間内に処理が完了しなかった際にタイムアウトとしてエラーをクライアント装置に返却する技術がある。
また、画像読み取りシステム、画像読み取り方法およびドキュメント管理サーバなどにおける格納処理においては、サーバ毎にタイムアウト値を設定することができ、負荷が高いときなど、格納処理に時間がかかっている場合は、正常に格納処理が実施されているかどうかを判断し、正常に動作しているのであれば、処理時間を延長する技術がある。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2006−166100
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら従来技術では、タイムアウトの時間は一度設定すると動的に変化させることができないため、高負荷時など、あと少しで処理が終了するはずだったリクエストもエラーとなってしまい、エラーとなったリクエストについても、サーバ装置のアプリケーションサーバ処理プログラムの中では処理が続くため、無駄な処理となってしまっている。
【0005】
また、このようにタイムアウトになってしまったクライアント装置からは再度同じリクエストを送信することが多く、それらのリクエストもタイムアウトしてしまう。この動作を繰り返してしまうことで、サーバ装置側の負荷がさらに高くなってしまい、当該リクエストがよりタイムアウトが発生しやすくなってしまうだけでなく、サーバ装置の負荷が高くなってしまうことで、今までタイムアウトしなかったリクエストについてもタイムアウトしてしまう可能性が高まり、さらにサーバ装置の負荷を高騰させる因子となってしまう可能性があり、一方で、リクエスト情報処理システムではドキュメント管理サーバにおける格納処理とは異なり、正常に動作しているかを判断することが困難であるため、リクエストの処理が正常に動作しているかを判断して処理時間を延長することはできない。そこで、本発明はタイムアウト技術におけるのこれらの危険性を、タイムアウトとなるまでの時間を動的に変更する事で排除することを目的とする。
【0006】
また、タイムアウトとなるまでの時間を適切に延長することによって、クライアント装置からの無駄なリトライが少なくなることによって、サーバ装置の負荷が意味もなく高騰してしまうことを防ぐこと目的とする。
【課題を解決するための手段】
【0007】
前記目的を達成するために、本発明では、クライアント装置から受け付けたリクエストをサーバ装置で処理した際に、タイムアウトが発生した場合は、タイムアウトが最終的にリクエストの処理に要した時間とクライアント装置からのリクエストURI(Uniform Resource Identifer)を、タイムアウトが発生しなかった際は、クライアント装置からのリクエストURIをサーバ装置と相互に通信が可能な他のサーバ装置のメモリ上に情報として保持させ、クライアント装置からのリクエストをサーバ装置上のWebサーバ処理プログラムがアプリケーションサーバ処理プログラムに転送する前に、保持させた情報を基にタイムアウトとするまでの時間を変更する。
【発明の効果】
【0008】
タイムアウトを動的に変更する事によって、あと少しで処理が終了したというリクエストを救う事が可能である。
【図面の簡単な説明】
【0009】
【図1】本実施形態におけるサーバ装置が接続されたリクエスト処理システムの構成を示す図である。
【図2】本実施形態におけるリクエスト処理システムの処理の流れで、タイムアウトが発生しなかった時の処理の流れを示す図である。
【図3】本実施形態におけるリクエスト処理システムの処理の流れで、タイムアウトが発生した時の処理の流れを示す図である。
【図4】本実施形態におけるタイムアウト管理サーバ処理部でのアプリケーションサーバ処理部が処理したリクエストの統計情報の構成を示す図である。
【図5】本実施形態におけるWebサーバ処理部での動作を定義するファイルの構成を示す図である。
【図6】本実施形態におけるサーバ装置において、Webサーバ処理プログラムの処理の流れを示すフローチャート図である。
【発明を実施するための形態】
【0010】
以下、本発明を実施するための形態(以下「実施形態」という)について、図面を参照して説明する。
【0011】
図1は、本実施形態におけるサーバ装置が接続されたリクエスト処理システムを示す図である。図1に示すように、本実施形態におけるリクエスト処理システム1は、複数のサーバ装置10、サーバ装置20、サーバ装置30を含んで構成される。クライアント装置40とサーバ装置30はネットワーク50を介して相互に通信可能に構成されている。ここではサーバ装置10とサーバ装置30は1台ずつ示されているが、それぞれ複数であってもその数が限定されるものではなく、サーバ装置10とサーバ装置30は1つのサーバ装置に纏めることも可能である。また、クライアント装置40は2台示されているが、複数であれば特にその数が限定されるものではない。
【0012】
クライアント装置40は、ネットワーク50を介してサーバ装置30にリクエストを送信する機能を有するとともに、サーバ装置30からそのリクエストに対するレスポンスを受け取る機能を有する。
【0013】
サーバ装置10は、CPU(Central Processing Unit)100と、メモリ200とを含んで構成される。記憶部としてのメモリ200は、アプリケーションサーバ処理部210を含んで記憶する機能を有する。処理部としてのCPU100は、メモリ200に記憶されている処理部を構成するプログラムを実行する機能を有する。
【0014】
サーバ装置20は、CPU300と、メモリ400とを含んで構成される。記憶部としてのメモリ400は、タイムアウト管理サーバ処理部410と、リクエスト情報テーブル420を含んで記憶する機能を有する。処理部としてのCPU300は、メモリ400に記憶されている処理部を構成するプログラムを実行する機能を有する。
【0015】
サーバ装置30は、CPU500と、メモリ600とを含んで構成される。記憶部としてのメモリ600は、Webサーバ処理部610と、サーバ動作定義ファイル620を含んで記憶する機能を有する。処理部としてのCPU500は、メモリ600に記憶されている処理部を構成するプログラムを実行する機能を有する。
【0016】
アプリケーションサーバ処理部210は、Webサーバ処理部610からリクエストが送信されると、そのリクエストの処理を実行し、Webサーバ処理部610にその実行結果としてレスポンスを返信し、Webサーバ処理部610でタイムアウトが発生していなければタイムアウト管理サーバ処理処理部410にURIを通知し、Webサーバ処理プログラム610でタイムアウトが発生して、接続が切断されていたためにWebサーバ処理部610へレスポンスの返信ができなかった場合は、タイムアウト管理サーバ処理部410にURIとリクエストの処理に要した処理時間を通知するコードが記述されたプログラムである。
【0017】
タイムアウト管理サーバ処理部410は、起動時にWebサーバ処理処理部610から、サーバ動作定義ファイル620に設定されているタイムアウト値を取得し、Webサーバ処理部610がクライアント装置40からのリクエストを受信した際に、リクエスト情報テーブル420からリクエストに関する情報を取得しWebサーバ処理部610に通知するコードと、アプリケーションサーバ処理部210からリクエストに関する情報が通知された際にリクエスト情報テーブル420に格納するコードが記載されたプログラムである。
【0018】
リクエスト情報テーブル420は統計情報としてURIと総リクエスト数とタイムアウト設定時間超過回数とタイムアウト設定時間平均超過時間を保持する。
【0019】
Webサーバ処理部部610は、クライアント装置40からリクエストが送信された際に、当該リクエストのURIに関する情報をタイムアウト管理サーバ410へ送信し、タイムアウト管理サーバ410から通知された情報を基に当該リクエストにおけるタイムアウトまでの時間を計算し、アプリケーションサーバ処理部210にリクエストを転送した後、計算したタイムアウトまでの時間でアプリケーションサーバ処理部210からの返信を得るまでのタイマ監視処理を実行し、アプリケーションサーバ処理部210からレスポンスが返信された際は、そのレスポンスをクライアント装置40に返信し、アプリケーションサーバ処理部210からレスポンスが返信される前にサーバ動作定義ファイル620に定義されたタイムアウトまでの時間が経過した際は、タイムアウト処理としてアプリケーションサーバ処理部210との接続を切断し、クライアント装置40にはエラーを返信するコードが記載されたプログラムである。
【0020】
サーバ動作定義ファイル620はWebサーバ610の動作を制御するための情報を含み、クライアント装置40から送信されたリクエストをアプリケーションサーバ処理部210に転送し、アプリケーションサーバ処理プログラム210からレスポンスが返ってくるまでの待ち時間(タイムアウトまでの時間)と、総リクエスト数に対してどの程度の超過回数まで許容するかの閾値と、タイムアウトまでの時間を最大でどのくらい延長するかの上限値を定義し、閾値は割合で、延長時間の上限値は秒数で定義する。閾値と延長時間の上限については、全てのリクエストに共通した値となるが、URI毎に値を変えて定義することも可能である。
【0021】
図2は、本実施形態における通常時におけるリクエスト処理システムの処理の流れで、タイムアウトまでの時間を延長し、その後タイムアウトが発生することなくリクエストの処理が完了した際の処理を示す図である。図2に示すように、ここでは、リクエスト処理システム1が、クライアント40からリクエストを受けた場合を例に挙げて、タイムアウトまでの時間の変更とリクエスト処理について説明する。また、Webサーバ処理部610、タイムアウト管理サーバ処理部410、およびアプリケーションサーバ処理部210はそれぞれ、図1におけるアプリケーションサーバ処理部210、タイムアウト管理サーバ処理部410、およびWebサーバ処理部610がそれぞれCPU100、CPU300およびCPU500より、それぞれ実行されることによって実現されるものである。
【0022】
クライアント40からリクエスト(http://・・・/index.jsp)が送信された場合(ステップS1001)、Webサーバ処理部610はタイムアウト管理サーバ処理部410へリクエストのURIに関する統計情報を要求(ステップS1002)し、タイムアウト管理サーバ処理部410は統計情報を取得して(ステップS1003)Webサーバに通知する(ステップS1004)。その後、Webサーバ処理部610は、当該リクエストにおいてタイムアウトまでの時間を変更するかどうかのタイムアウト延長判定処理を実施(ステップS1005)し、タイムアウトまでの時間を決定してからアプリケーションサーバ処理部210にリクエストを転送(ステップS1006)し、決定したタイムアウトまでの時間でタイマ監視をおこなう。アプリケーションサーバ210はWebサーバ処理部610から転送されたリクエストを処理(ステップS1007)し、処理結果をレスポンスとしてWebサーバ610に返信(ステップS1008)した後、タイムアウト管理サーバ410処理部に対し、当該リクエストのURIを通知し(ステップS1009)、タイムアウト管理サーバ処理部410は、通知された情報を統計情報として格納する(ステップS1010)。Webサーバ730はアプリケーションサーバ710からレスポンスを受信したら(ステップS1008)クライアント40にレスポンスを返し(ステップS1011)、クライアント40はそれを受信する(ステップS1012)。
【0023】
図3は、本実施形態におけるリクエスト処理システム1の処理の流れで、タイムアウトまでの時間を延長したが、その後タイムアウトが発生した際の処理を示す図である。図3に示すように、ここでは、リクエスト処理システム1がクライアント装置40からリクエストを受け、処理を実施したが処理に時間を要しタイムアウトが発生してしまった場合を例に挙げて、タイムアウトが発生した際の処理について説明する。また、Webサーバ610、タイムアウト管理サーバ410、およびアプリケーションサーバ処理部210はそれぞれ、図1におけるアプリケーションサーバ処理処理部210、タイムアウト管理サーバ処理部410、およびWebサーバ処理プログラム610がそれぞれCPU100、CPU300およびCPU500によって実行されることによって実現されるものである。
【0024】
クライアント40からリクエスト(http://・・・/index.jsp)が送信された場合(ステップS2001)、Webサーバ処理部610はタイムアウト管理サーバ処理部410へリクエストのURIに関する統計情報を要求し(ステップS2002)、タイムアウト管理サーバ処理部410は、統計情報を取得して(ステップS2003)、Webサーバに通知する(ステップS2004)。その後、Webサーバ処理部610は、当該リクエストにおいてタイムアウトまでの時間を変更するかどうかの処理を実施し(ステップS2005)、タイムアウトまでの時間を決定してからアプリケーションサーバ処理部210にリクエストを転送し(ステップS2006)、決定したタイムアウトまでの時間でタイマ監視をおこなうが、アプリケーションサーバ処理部210がリクエスト処理を開始(ステップS2007)してからレスポンスが返ってくるまでに決定したタイムアウトまでの時間が経過した場合、Webサーバ処理部610はタイムアウト処理としてアプリケーションサーバ処理部210との接続を切断し(ステップS2008)、クライアント40に対してはエラーを返却(ステップS2009)し、クライアント40はそれを受信する(ステップ2010)。
その後、アプリケーションサーバ処理部210でのリクエスト処理(ステップS2007)が完了した際に、タイムアウト管理サーバ処理部410に対し、当該リクエストに要した処理時間をURIとともに通知し(ステップS2011)、タイムアウト管理サーバ処理部410はアプリケーションサーバ処理部210から受け取った当該リクエストの処理時間とURIをリクエスト情報テーブルに格納する(ステップS2012)。
【0025】
図4は、本実施形態におけるリクエスト情報テーブル420のデータ構造の例である。図4に示すように、リクエスト情報テーブル420は、URI801と、タイムアウトが発生した回数である超過回数802と、総リクエスト回数803と、平均超過時間804を含んで構成される。リクエスト情報テーブル420では、アプリケーションサーバ処理部210(図2参照)でのリクエスト処理が完了した後に、処理したリクエストに関する情報を整理して、管理し、ステップ1009によって、登録および情報の更新が行われる。
【0026】
URI801は、クライアント装置40(図2参照)から送信されたリクエストの識別子を示しており、リクエストの処理が完了した際に、アプリケーションサーバ処理部210(図2参照)から通知され、既にリクエスト情報テーブル420に登録されている場合は当該URIに対応する総リクエスト回数803に1を加算し、リクエスト情報テーブル420に登録されていなければ、総リクエスト数801を1としてリクエスト情報テーブル420に登録する。
【0027】
超過回数802は、通知されたURIにおいて設定されたタイムアウト値を超過してタイムアウトとなった回数を示す。
総リクエスト回数803は、通知されたURIに対するリクエストの総回数を示す。
【0028】
平均超過時間804は、{(計算時点でリクエスト情報テーブルに登録されている平均超過時間804×計算時点でリクエスト情報テーブルに登録されている総リクエスト回数802+アプリケーションサーバ処理部210から通知されるリクエスト処理時間)÷ 当該リクエストを含めた総リクエスト回数}−{Webサーバ動作定義ファイル620(図1参照)に定義されているタイムアウト設定値}の式で計算され、タイムアウトが発生するごとに上書きされる。
【0029】
図5は、本実施形態におけるWebサーバ動作定義ファイル620のデータ構造の例である。図5に示すようにWebサーバ動作定義ファイル620はクライアントから受信したリクエストをアプリケーションサーバ処理部210(図2参照)に転送してからアプリケーションサーバ処理部210(図2参照)からレスポンスを受信するまでのタイムアウト値を定義するタイムアウト値901と、総リクエスト数に対してどの程度の超過回数まで許容するかを設定する閾値902と、タイムアウトまでの時間を変更するときに最大でどのくらい延長するかの上限値を設定するタイムアウト延長上限値903を含んで構成される。Webサーバ動作定義ファイル620のデータは、リクエスト処理システム1の管理者などにより設定される。
【0030】
図6は、本実施形態におけるサーバ装置において、WebサーバにおけるWebサーバ処理処理部610のタイムアウト値延長判定処理(図2のステップ1004)の詳細動作を示すフロー図である。
【0031】
Webサーバ処理部730(図2参照)がリクエストを受信した際、リクエストのURIに対応する統計情報をタイムアウト管理サーバ処理部410(図2参照)がリクエスト情報テーブル420から取得し(ステップS101)、超過回数802(図4参照)と総リクエスト回数803(図4参照)を基に、当該URIにおいてどのくらいの割合でタイムアウト設定値を超過しているかを算出し、算出した結果をWebサーバ動作定義ファイル620(図5参照)に設定されている閾値902(図5参照)と比較する(ステップS102)。閾値902を超えていなければ(ステップS102でn%未満)タイムアウト値の変更はしないで、タイムアウト値として、サーバ動作定義ファイル620のタイムアウト値901の設定値を使用し(ステップS106)処理を終了する。一方、算出した結果が閾値902(図5参照)以上であれば(ステップS102でn%以上)、タイムアウト管理サーバ処理部410(図2参照)から取得した平均超過時間804(図4参照)とWebサーバ動作定義ファイル620(図5参照)に設定されている、タイムアウト延長上限値903(図5参照)との比較を実施する(ステップS103)。平均超過時間804(図4参照)がWebサーバ動作定義ファイル620(図5参照)に設定されている、タイムアウト延長上限値903(図5参照)よりも長ければ(ステップS103で上限値より長い)タイムアウト値をタイムアウト延長上限値903(図5参照)分タイムアウト値901(図5参照)を延長し(ステップS104)、タイムアウト延長上限値903(図5参照)よりも短ければ(ステップS103で上限値以下)タイムアウト値を平均超過時間804(図4参照)分タイムアウト値901(図5参照)を延長し(ステップS105)、処理を終了する。
【0032】
本実施形態に付随される効果として、タイムアウトになった際は、アプリケーションサーバで引き続き処理されているリクエストに要した時間を統計情報としてリクエストテーブル420に蓄積することで、延長すべき時間の精度を上げていくことが可能である。
【0033】
また、適切なタイマ監視が可能になることで、無駄なリトライが無くなり、クライアント側だけでなくサーバ側の負担も低減することが可能である。
【0034】
以上、本発明の実施形態を説明したが、この実施形態は本発明の説明のための例示にすぎず、本発明の範囲をその実施形態にのみ限定する趣旨ではない。本発明は、その要旨を逸脱することなく、その他の様々な態様でも実施することができる。
【符号の説明】
【0035】
1 リクエスト処理システム
10 サーバ装置
20 サーバ装置
30 サーバ装置
40 クライアント装置
50 ネットワーク
100 CPU
200 メモリ
210 アプリケーションサーバ処理部
300 CPU
400 メモリ
410 タイムアウト管理サーバ処理部
420 リクエスト情報テーブル
500 CPU
600 メモリ
610 Webサーバ処理処理部
620 サーバ動作定義ファイル

【特許請求の範囲】
【請求項1】
Webサーバ処理装置と、クライアント装置から受け付けたリクエストを処理し、記憶装置を備えた通信制御装置とを含む計算機システムにおける通信制御方法において、
タイムアウト管理処理部は、前記リクエストの統計情報を記憶装置に格納し、
前記タイムアウト管理サーバ処理部は、前記リクエストを受信した際に、前記タイムアウト管理に前記蓄積されたリクエストの統計情報を読み出し、
前記Webサーバ処理装置は、前記タイムアウト情報の統計情報を基にタイムアウトまでの時間を変更させることを特徴とするリクエスト情報処理方法。
【請求項2】
前記アプリケーションサーバ処理部は、前記Webサーバ処理装置から転送された前記リクエストを処理し、処理の結果を前記タイムアウト管理サーバに通知することをとした請求項1の記載のリクエスト情報処理方法。
【請求項3】
前記タイムアウト管理サーバ処理部は、前記Webサーバ処理装置の前記動作定義ファイルにタイムアウトまでの時間を変更させる基準となるタイムアウト超過率閾値を保持するようにしたことを特徴とした請求項1の記載のリクエスト情報処理方法。
【請求項4】
前記タイムアウト管理サーバ処理部は、前記Webサーバ処理装置の動作定義ファイルにタイムアウトを延長する上限の時間であるタイムアウト延長上限値を保持するようにしたことを特徴とした請求項1の記載のリクエスト情報処理方法。
【請求項5】
Webサーバ処理装置と、クライアント装置から受け付けたリクエストを処理し、記憶装置を備えた通信制御装置とを含む計算機システムにおいて、
タイムアウト管理処理部は、前記リクエストの統計情報を記憶装置に格納し、
前記タイムアウト管理サーバ処理部は、前記リクエストを受信した際に、前記タイムアウト管理に前記蓄積されたリクエストの統計情報を読み出し、
前記Webサーバ処理装置は、前記タイムアウト情報の統計情報を基にタイムアウトまでの時間を変更させることを特徴とする計算機システム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate