JP4394710B2 - 負荷制御装置及び方法及びプログラム - Google Patents

負荷制御装置及び方法及びプログラム Download PDF

Info

Publication number
JP4394710B2
JP4394710B2 JP2007196196A JP2007196196A JP4394710B2 JP 4394710 B2 JP4394710 B2 JP 4394710B2 JP 2007196196 A JP2007196196 A JP 2007196196A JP 2007196196 A JP2007196196 A JP 2007196196A JP 4394710 B2 JP4394710 B2 JP 4394710B2
Authority
JP
Japan
Prior art keywords
request
response
server
data
buffer
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.)
Active
Application number
JP2007196196A
Other languages
English (en)
Other versions
JP2009032083A (ja
Inventor
亮介 榑林
和昭 尾花
修 石田
仁 上松
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Priority to JP2007196196A priority Critical patent/JP4394710B2/ja
Publication of JP2009032083A publication Critical patent/JP2009032083A/ja
Application granted granted Critical
Publication of JP4394710B2 publication Critical patent/JP4394710B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Computer And Data Communications (AREA)

Description

本発明は、負荷制御装置及び方法及びプログラムに係り、特に、クライアント装置とサーバとの間に配置され、クライアント装置から受信したリクエストをサーバに転送し、当該リクエストに対してサーバから返却されるレスポンスをクライアント装置に転送する装置における、リクエスト・レスポンスのバッファリングとスケジューリングに関する。なお、本明細書では、Webサーバに着目して説明するが、必ずしも他のサーバへの本発明の適用を制限するものではない。
インターネットの普及に伴い、ネットワークを介して様々なサービスを利用できるようになっている。メール、ホームページの閲覧、検索、オンライン取引、IP電話、ビデオオンデマンドなどは、その一例である。これらのネットワークサービスは様々な形態で提供し得るが、近年、クライアント装置とのインタフェースとして、Webの利用が主流になっている。
Webの基本的な仕組みは以下の通りである。まず、クライアント装置がWebサーバに対して取得したいコンテンツを識別するURL(Uniform Resource Locator)を付与したリクエストを送信する。Webサーバがリクエストを受け取ると、リクエスト中のURLに対応するコンテンツをレスポンスとしてクライアント装置に送り返す。Webにおけるサービスは全て、このリクエスト−レスポンスの繰り返しによって提供される。リクエストやレスポンスといったメッセージは、HTTP(Hyper Text Transfer Protocol)に基づいて転送される。以下、本明細書では、Webサーバ上でHTTPプロトコルを処理する機能を「HTTPサーバ」、リクエストに応じたコンテンツを生成する機能を「Webアプリケーション」と呼ぶ。
Webが普及するにつれて、サービスを快適に利用していくための課題も明らかになりつつある。その課題の一つとして、サービス利用が集中した際の過剰リクエストへの対応が挙げられる。サービス利用が集中する例として、人気の高い銘柄の株やチケットの売買によるリクエスト集中や、災害発生時の見舞呼などがある。また、悪意のあるクライアントによって、F5アタックなど無意味なリクエストが大量に送信される場合もある。これらの要因によって、Webサーバにリクエストが過剰に送信されると、Webサーバのリクエスト処理性能の低下が生じる。
過剰リクエスト時におけるサーバのリクエスト処理性能の低下要因は以下の通りである。すなわち、第1に、サーバで処理しきれないリクエストの受信に伴う、割込み、TCP/IP処理といった入出力オペレーションが増加する。第2に、リクエストを処理するスレッドまたはプロセス数が増大し、スレッドまたはプロセスの切替処理に要するオーバヘッドである文脈切り替えオーバヘッドが顕在化する。第3に、クライアントにレスポンスが返されるまでの応答時間が増加するため、応答を待ちきれないクライアントがリクエストを途中でキャンセルするようになる。これらの結果、Webサーバが混雑すればするほど、Webサーバの処理性能が低下するという問題が生じる。
図15は、リクエスト過剰によるWebサーバの処理性能の低下を示す実験結果である。同図では、あるWebサーバに対して、入力するリクエストレート、すなわち、単位時間当たりのリクエスト数(rps)を変化させてリクエストを送信する。そして、スループット、すなわち、Webサーバが単位時間当たりに完了できたリクエスト数(rps)を計測している。同図に示されるように、入力するリクエストレートが一定範囲内であるならば、リクエストレートに対してスループットは比例して増加する(図15(a))。しかしながら、Webサーバの最大スループットに達すると、スループットが低下に転じる(図15(c))。この結果から、Webサーバの最大性能を超えるリクエストを受信した場合でも、図15(b)に沿って、Webサーバ最大性能を維持できる技術が必要といえる。
過剰リクエストによるサーバ性能低下を防ぐため、サーバに送信されるリクエスト量を予め制限する手法が提案されている。リクエスト量を制限する指標として、(a)TCP接続数、(b)サーバ負荷状態、(c)帯域、(d)並列度などが用いられる(例えば、非特許文献1,2参照)。
B. Laurie, P. Laurie, "Apache ハンドブック第2版"、オライリージャパン 松沼正浩、日比野秀章、佐藤芳樹、光来健一、千葉滋著、"過負荷時のWebアプリケーションの性能劣化を改善するSession-Level Queue Scheduling"、第2回ディペンダブルソフトウェアワークショップ(DSW'05),pp.105−114,2005年1月
しかしながら、上記の指標を用いた場合には、以下のような問題がある。
(a)「TCP接続数」を用いる場合は、同時接続可能なTCP接続数の上限を定めることによって、サーバの過負荷回避を試みる。ApacheのMax Clientsディレクティブなど、汎用的なHTTPサーバ、負荷分散システムなどで用いられる(非特許文献1)。しかしながら、リクエストの種類、クライアントの送受信速度などによって、TCP接続毎にその負荷が大きく異なる。このため、TCP接続数の上限に達する前にサーバが過負荷となる。逆に、TCP接続数が上限に達していることによって、サーバリソースが余っていても新たなTCP接続を確立できない、といった問題が生じる。
(b)「サーバの負荷状態」を用いる場合は、CPU利用率、メモリ使用量、応答時間などを定期的に計測し、サーバが過負荷か否かを判定する。そして、過負荷と判定した場合は、サーバの負荷を軽減させるためのトラヒック制御として、新しく受信したリクエストを第三のサーバに転送したり、またはリクエストを拒絶したりする。しかし、過負荷と判定されてから初めてトラヒック制御を行うため、一時的なサーバの性能低下が免れない。
(c)「帯域」を用いる場合は、シェーパなどの帯域制御機能を用いて、サーバに到達されるトラヒック量を制限する。しかしながら、帯域はサーバの負荷を正確に測る指標とはならない。例えば、画像ファイルのダウンロードは、大きな帯域を占めるがサーバに与える負荷は比較的小さい。故に、帯域制限によって、サーバのリソースを充分に活用しつつ、過負荷を確実に回避することは難しい。
(d)「並列度」を用いる場合は、サーバが同時に実行するスレッドまたはプロセス数を制限する。これにより、リクエストを処理するスレッドまたはプロセス数の増大に伴う文脈切り替えオーバヘッドを削減できる。並列度を制御する具体例として、ページ単位に並列度を制限するように、HTTPサーバを拡張した技術(非特許文献2)がある。しかし、サーバ上で並列度を制御しても、リクエスト処理性能低下の第一要因である、サーバが処理しきれないリクエストの受信に伴う、割込み、TCP/IP処理などのオーバヘッドを避けることができない。その結果、他の手法と同様に、過剰リクエスト時におけるサーバの処理性能の低下が生じる。また、HTTPサーバまたは、Webアプリケーションの変更が必要になるため、既に運用中のサービスへの導入障壁が高いといった問題がある。
本発明は、上記の点に鑑みなされたもので、過剰リクエスト時におけるサーバの性能低下を回避することができる負荷制御装置及び方法及びプログラムを提供することを目的とする。
図1は、本発明の原理構成図である。
本発明(請求項1)は、クライアント装置300とサーバ200との間に配置され、該クライアント装置300からリクエストを受信するリクエスト受信手段120と、該リクエストを該サーバ200に送信するリクエスト送信手段160と、該リクエストに対して該サーバから返却されるレスポンスを受信するレスポンス受信手段170と、該レスポンスを該クライアント装置300に送信するレスポンス送信手段130と、を有する負荷制御装置100であって、
クライアント装置300から受信したリクエストデータをサーバ200に送信するまで一時蓄積するリクエストバッファ111と、
サーバ200から受信したレスポンスデータをクライアント装置300に送信するまで一時蓄積するレスポンスバッファ112と、
応答待ちリクエストのリクエストデータまたはレスポンスデータをサーバ200と送受信する速度が、クライアント装置300と該リクエストデータまたは該レスポンスデータを送受信する速度によって制限されるか否かを、リクエストバッファ111のリクエストデータ及びレスポンスバッファ112のレスポンスデータの蓄積状態に基づいて判定する判定手段1611,1711と、
応答待ちのリクエストの総数、判定手段1611,1711でサーバ200との送受信速度が制限されると判定された応答待ちリクエストの数、及び該判定手段1611,1711で該サーバ200との送受信速度が制限されないと判定された応答待ちリクエストの数が、それぞれに設けられている閾値を下回るまで、該サーバ200への新たなリクエスト送信を待ち合わせる制御手段150と、
を有し、
サーバ200に送信開始済みであるが、該サーバからレスポンス全体が返却されていない応答待ちリクエストの数を制限する。
また、本発明(請求項2)は、判定手段において、
サーバへのリクエスト送信完了前に、リクエストバッファに蓄積されている当該リクエストのリクエストデータのサイズが所定の閾値以下となった場合に、該サーバとの送受信速度が制限される判定する判定手段1611を含む。
また、本発明(請求項3)は、判定手段において、
サーバからのレスポンス受信完了前に、レスポンスバッファに蓄積されているレスポンスデータのサイズが所定の閾値に達した場合に、該サーバと送受信速度が制限されると判定する判定手段1711を含む。
また、本発明(請求項4)は、制御手段150において、
リクエスト全体がリクエストバッファに蓄積されていること、または、該バッファに蓄積されているリクエストデータの大きさが所定の閾値以上であることを、サーバにリクエスト送信するための必要条件とする。
また、本発明(請求項5)は、リクエスト受信手段120において、
リクエストのリクエストデータまたは、該リクエストに対するレスポンスデータをサーバと送受信する速度が、クライアント装置とリクエストデータまたはレスポンスデータを送受信する速度によって制限されると判定された場合に、リクエストバッファに蓄積できるリクエストデータの最大サイズを変化させる手段を含む。
また、本発明(請求項6)は、リクエスト受信手段120において、
リクエストのリクエストデータまたは、該リクエストに対するレスポンスデータをサーバと送受信する速度が、クライアント装置とリクエストデータまたはレスポンスデータを送受信する速度によって制限されると判定された場合に、レスポンスバッファに蓄積できるレスポンスデータの最大サイズを変化させる手段を含む。
図2は、本発明の原理を説明するための図である。
本発明(請求項)は、クライアント装置とサーバとの間に配置され、該クライアント装置から受信したリクエストを該サーバに送信し、該リクエストに対して該サーバから返却されるレスポンスを該クライアント装置に送信する装置における、過剰リクエストを回避させるための負荷制御方法であって、
クライアント装置とサーバとの間に配置され、該クライアント装置からリクエストを受信するリクエスト受信手段と、該リクエストを該サーバに送信するリクエスト送信手段と、該リクエストに対して該サーバから返却されるレスポンスを受信するレスポンス受信手段と、該レスポンスを該クライアント装置に送信するレスポンス送信手段と、判定手段及び制御手段とを有する負荷制御装置が、
リクエスト受信手段が、クライアント装置から受信したリクエストデータをサーバに送信するまで一時リクエストバッファに蓄積し、レスポンス受信手段が、サーバから受信したレスポンスデータをクライアント装置に送信するまで一時レスポンスバッファに蓄積している状況において、
判定手段が、応答待ちリクエストのリクエストデータまたはレスポンスデータをサーバと送受信する速度が、クライアント装置と該リクエストデータまたは該レスポンスデータを送受信する速度によって制限されるか否かを、リクエストバッファのリクエストデータ及びレスポンスバッファのレスポンスデータの蓄積状態に基づいて判定する判定ステップ(ステップ1)と、
制御手段が、応答待ちのリクエストの総数、判定ステップにおいてサーバとの送受信速度が制限されると判定された応答待ちリクエストの数、及び該判定ステップにおいて該サーバとの送受信速度が制限されないと判定された応答待ちリクエストの数が、それぞれに設けられている閾値を下回るまで、該サーバへの新たなリクエスト送信を待ち合わせるようリクエスト送信手段を制御する制御ステップ(ステップ2)と、を行い、
サーバに送信開始済みであるが、該サーバからレスポンス全体が返却されていない応答待ちリクエストの数を制限する。
また、本発明(請求項)は、判定ステップ(ステップ1)において、
サーバへのリクエスト送信完了前に、リクエストバッファに蓄積されている当該リクエストのリクエストデータのサイズが所定の閾値以下となった場合に、該サーバとの送受信速度が制限される判定するステップを行う。
また、本発明(請求項)は、判定ステップ(ステップ1)において、
サーバからのレスポンス受信完了前に、レスポンスバッファに蓄積されているレスポンスデータのサイズが所定の閾値に達したか場合に、該サーバと送受信速度が制限されると判定するステップを行う。
また、本発明(請求項10)は、制御ステップ(ステップ2)において、
リクエスト全体がリクエストバッファに蓄積されていること、または、該バッファに蓄積されているリクエストデータの大きさが所定の閾値以上であることを、サーバにリクエスト送信するための必要条件とする。
また、本発明(請求項11)は、判定ステップ(ステップ1)において、
リクエストのリクエストデータまたは、該リクエストに対するレスポンスデータをサーバと送受信する速度が、クライアント装置とリクエストデータまたはレスポンスデータを送受信する速度によって制限されると判定された場合に、リクエストバッファに蓄積できるリクエストデータの最大サイズを変化させるステップを行う。
また、本発明(請求項12)は、判定ステップ(ステップ1)において、
リクエストのリクエストデータまたは、該リクエストに対するレスポンスデータをサーバと送受信する速度が、クライアント装置とリクエストデータまたはレスポンスデータを送受信する速度によって制限されると判定された場合に、レスポンスバッファに蓄積できるレスポンスデータの最大サイズを変化させるステップを行う。
本発明(請求項13)は、請求項1乃至のいずれか1項に記載の負荷制御装置を構成する各手段としてコンピュータを機能させる負荷制御プログラムである。
上記のように本発明の負荷制御装置によれば、サーバからの応答待ちリクエストの数を制限し、サーバへのリクエストの送信を待ち合わせることにより、サーバが処理しきれないリクエストがサーバに送信されない。これにより、サーバが処理しきれないリクエストの受信処理に伴うサーバのオーバヘッドを削減することができる。
以下、図面と共に本発明の実施の形態を説明する。
最初に、本発明の概要を前述の図1の構成に基づいて説明する。
本発明の負荷制御装置は、クライアント装置300とサーバ200との間に配置され、両者のリクエスト・レスポンスの送受信を仲介する。すなわち、クライアント装置300から受信したリクエストをサーバに転送し、さらにサーバ200から返却されるレスポンスをクライアント装置300に転送する。このとき、本発明は、サーバ200に送信済みであるが、サーバ200からレスポンスが返却されていないリクエスト、すなわち、応答待ちリクエストの数を制限する。この制限を行うためには、判定手段1611が応答待ちリクエスト数が閾値を超える場合は、リクエストをリクエストバッファ111にバッファリングし、制御手段150が応答待ちリクエスト数が閾値を下回るまで、リクエストの送信を待ち合わせるようリクエスト送信手段160を制御する。
説明を単純化し、まず、応答待ちリクエスト数の閾値を"1"とした場合を、図3に示す。
本発明では、サーバ200でのスレッドの実行完了をサーバ200からレスポンスの受信によって認識する。そして、先に送信したリクエストに対するレスポンスが返却されて初めて、次のリクエストをサーバ200に送信する。このため、本発明に基づけば、サーバ200が処理しきれないリクエストがサーバに送信されない。ゆえに、処理しきれないリクエストの受信処理に伴うサーバのオーバヘッドが削減される。
図3では、サーバ200が負荷制御装置100のレスポンス受信手段170にレスポンスを返却してから、負荷制御装置100が次のリクエストを送信するまでの遅延によって、サーバ200に空き時間が生じている。この問題を回避するため、本発明では、応答待ちリクエスト数の閾値として、"1"より大きい値を設定できる。図4は、応答待ちリクエスト数の閾値を"2"とした場合の実行例を示している。応答待ちリクエスト数を複数とすることによって、サーバ上で実行可能状態にあるスレッド数が増加する。あるスレッドの実行が完了すると、次のスレッドの実行を即時に開始できるため、サーバ200のリソースに空きが生じ難くなる。また、閾値より多くのスレッドがサーバ200上で生成されないため、文脈切替のオーバヘッドを抑えることができる。
さらに、本発明に基づけば、サーバ200の内部情報を参照することなく、サーバ200の外部からサーバ200の負荷を制御できる。故に、既に稼動中のサーバ200に対して付加的な機能の追加または変更を行わないで、本発明を導入することができる。
さらに、本発明の負荷制御装置100は、応答待ちリクエスト数を制限してもサーバ200の効率を低下しないようにするため、クライアント装置300から受信するリクエスト、及びサーバ200から受信するレスポンスをレスポンスバッファ112に一時蓄積する。
インターネットでは、クライアント装置のアクセス環境は多様であり、FTTH(Fiber To The Home)を使って高速にリクエスト・レスポンスを送受信できるクライアント装置もあれば、携帯電話などのように送受信速度が低いクライアント装置もある。一方で、負荷制御装置は、サーバに隣接されるため、負荷制御装置−サーバ間は、高速な通信を仮定できる。このとき、負荷制御装置にて、クライアント装置から受信したリクエスト、または、サーバから受信したレスポンスを一時蓄積なしに転送すると、低速なクライアント装置がアクセスした際に、サーバの利用効率が低下するという問題が生じる。図5、図6は、このような問題を示したもので、負荷制御装置が、一時蓄積なしに、クライアント装置から受信したリクエストをサーバに転送し、サーバから受け取ったレスポンスをクライアント装置に返す場合のシーケンス図を例示している。図5は、高速なクライアント装置がアクセスした場合であり、図6は、低速なクライアント装置がアクセスした場合を示している。リクエストの一時蓄積をしないため、負荷制御装置は、クライアント装置からリクエストデータを受け取ると、即時にそのリクエストデータをサーバに転送しなければならない。故に、クライアント装置が低速であるほど、サーバにおいて、リクエストの受信を開始してから全体の受信を完了するまでに要する時間が増加する。また、負荷制御装置がサーバからレスポンスを受信する場合も、受信したレスポンスデータをクライアント装置に転送し終えるまで、続きのレスポンスデータをサーバから受信できない。故に、クライアント装置が低速であるほど、サーバが負荷制御装置にレスポンス送信を開始してから全体の送信が完了するまでに要する時間が増加する。従って、例え、同じリソースを取得するリクエストであっても、その送信元クライアント装置の送受信速度が低い場合、サーバでのリクエスト実行時間が増加する。その結果、サーバのスループット(単位時間当たりに処理できるリクエストの数)の低下を引き起こす。
これに対し、本発明の負荷制御装置100は、クライアント装置300から受信したリクエスト、及び、サーバ200から受信したレスポンスの全体、または、一部をバッファ110に一時蓄積する。これにより、クライアント装置−負荷制御装置間の送受信速度に依存しないで、負荷制御装置−サーバ間で高速にリクエスト・レスポンスを送受信できる。図7に、本発明における、リクエスト・レスポンスをバッファ110に一時蓄積して送受信する場合のシーケンス図を示す。なお、同図にクライアント装置300は、図6と同様の低速なクライアント装置であるとする。図7に示すように、負荷制御装置100は、所定サイズに達するまで、クライアント装置300から受信したリクエストデータをサーバ200に送信せずに、自身のリクエストバッファ111に蓄積する。そして、所定サイズのリクエストデータがリクエストバッファ111に蓄積された後、サーバ200へのリクエスト送信を開始する。従って、負荷制御装置100からサーバ200にリクエストを送信する際には、負荷制御装置100内のリクエストバッファ111に蓄積されているリクエストデータを読み出せばよく、クライアント装置−負荷制御装置間の送受信速度に依存しないで、高速にリクエストを送信できる。同様に、レスポンス受信時には、負荷制御装置100は、サーバ200から受信したレスポンスデータをレスポンスバッファ112に蓄積する。このとき、クライアント装置300へのレスポンスデータの送信完了を待つ必要がない。ゆえに、負荷制御装置100は、クライアント装置300との送受信速度に依存しないで、高速にサーバ200からレスポンスを受信できる。このようにリクエスト・レスポンスを負荷制御装置100にて一時蓄積することによって、送受信速度が低いクライアント装置に起因するサーバのリクエスト実行時間の増加を解消できる。
サーバの効率を高めるためには、負荷制御装置100において、常に受信したリクエスト・レスポンスの全体を一時蓄積できることが望ましい。しかし、現実には、物理的なメモリサイズの制限などから、負荷制御装置100にて一時蓄積できるデータサイズが制限される。その結果、サーバ200へのリクエスト送信完了前に、負荷制御装置100にて一時蓄積していたリクエストデータが読み尽されたり(データ枯渇)、サーバ200からのレスポンス受信途中にレスポンスデータを格納すべき空き領域がレスポンスバッファ112になくなったりする(バッファ溢れ)。これらの場合、図6のバッファ110に一時蓄積しない場合と同様に、負荷制御装置−サーバ間のリクエスト・レスポンスの送受信速度が、クライアント装置−負荷制御装置間の送受信速度によって制限される。
故に、本発明では、負荷制御装置100が、クライアント装置−負荷制御装置間の送受信速度に制限されないで、応答待ちリクエストのリクエストデータ・レスポンスデータをサーバと送受信できるか否かを、判定手段1611,1711が負荷制御装置100におけるリクエスト・レスポンスデータのバッファ110への蓄積状態に基づき判定する。ここで、サーバ200とリクエスト・レスポンスの送受信速度が、クライアント装置−負荷制御装置の送受信速度によって制限されない場合、そのリクエストを高速クラスに属するとみなす。一方、サーバ200とのリクエスト・レスポンスの送受信速度が、クライアント−負荷制御装置間の送受信速度によって制限される場合、そのリクエストを低速クラスに属すると見做す。そして、応答待ちリクエストの総数に加え、高速クラスに属する応答待ちリクエストの数、及び、低速クラスに属する応答待ちリクエストの数それぞれに閾値を設定する。
例えば、高速クラスの応答待ちリクエスト数の閾値を"2"、低速クラスの応答待ちリクエスト数の閾値を"10"、及び、応答待ちリクエストの総数の閾値を"11"とする。また、リクエストは、最初は高速クラスに属するものとする。そして、データ枯渇やバッファ溢れによってサーバ200とのリクエスト・レスポンスの送受信速度が制限されると、そのリクエストを低速クラスに分類しなおす。
この場合、負荷制御装置100からサーバに2つのリクエストを送信した時点で、高速クラスの応答待ちリクエスト数がその閾値に達する。閾値に達すると、負荷制御装置100は、サーバ200への次のリクエストの送信を待ち合わせる。データ枯渇やバッファ溢れが生じない限り、図4に示したシーケンスに従ってリクエストがサーバ200で実行される。ここで、サーバ200で実行されている応答待ちリクエストの一つに、データ枯渇、または、バッファ溢れが生じたとする。すると、その応答待ちリクエストが属するクラスは、判定手段1611によって高速クラスから低速クラスに変更される。このとき、高速クラスの応答待ちリクエストの数が"2"から"1"に減少する。その結果、高速クラスの応答待ちのリクエストの数がその閾値を下回るようになるため、負荷制御装置100は、新しいリクエストをサーバ200に対して送信する。すなわち、ある応答待ちリクエストにデータ枯渇やバッファ溢れが生じると、制御手段150により、リクエスト送信手段160に対して、別の新しいリクエストのサーバ200への送信が促される。その結果、データ枯渇やバッファ溢れに伴うサーバの効率低下が、新しいリクエストの実行によって埋め合わせられる。
また、本発明では、判定手段1611,1711によって、リクエストが高速クラスに属するか、低速クラスに属するかによって、そのリクエストのリクエストデータのリクエストバッファ111、または、レスポンスデータのレスポンスバッファ112に蓄積できる最大サイズを変化させることができる。すなわち、サーバとのリクエスト・レスポンスの送受信速度が制限される低速クラスのリクエストのバッファリング可能な最大サイズを小さくすることによって、効率を落とすことなく負荷制御装置のメモリ使用量を削減できる。
以下に、負荷制御装置について詳細に説明する。
図8は、本発明の一実施の形態のシステム構成を示す。同図に示すシステムは、リクエストを発行する複数のクライアント装置300と、リクエストに対応するレスポンスを返すサーバ200、及び、リクエスト及びレスポンスを仲介する負荷制御装置100から構成される。なお、サーバ200は、Apacheなどのソフトウェアモジュールであってもよく、負荷制御装置100とは物理リソースが独立であるハードウェアモジュールであってもよい。また、本発明の負荷制御装置100を2つ以上のサーバに接続し、1つの負荷制御装置100で複数のサーバ200に対して負荷制御をしてもよい。さらに、負荷制御装置100は、リバースプロキシ、Webアクセラレータ、Firewall、負荷分散システムなどの既存技術を拡張して実装してもよい。負荷制御装置100にて、サーバ200に送信開始済みであるが、サーバ200からレスポンス全体が返されていない応答待ちリクエストの数を制限する。
説明の単純化のため、以下の仮定をおく。
・クライアント装置100から送信されるリクエストと、サーバ200におけるリクエストの処理結果であるレスポンスとは常に1対1に対応する。すなわち、リクエストの受信完了前にサーバ200からレスポンスが返される、リクエストに対してレスポンスが返されない、または、一つのリクエストに対して複数のレスポンスが返される、といったことはないものとする。
・負荷制御装置100では、1つのリクエスト(またはレスポンス)のうちバッファに蓄積できる最大サイズ(メッセージあたりの最大バッファサイズ)に上限を設ける。最大バッファサイズを記号Sで表す。
図9は、本発明の一実施の形態における負荷制御装置の構成を示す。
負荷制御装置100は、主に、リクエストをクライアント装置300から受信するためのリクエスト受信部120、リクエストキューを用いて受信したリクエストをスケジューリングするリクエストキュー制御部150、リクエストをサーバ200に送信するためのリクエスト送信部160、サーバ200で処理されたリクエストの結果であるレスポンスを受け取るためのレスポンス受信部170、クライアント装置300にレスポンスを送信するためのレスポンス送信部130、リクエスト・レスポンスのデータを格納するためのバッファ110(リクエストバッファ111、レスポンスバッファ112)、及びリクエストキューを格納するメモリ140から構成される。
リクエスト受信部120は、複数のリクエスト受信処理部121を有する。
レスポンス送信部130は、複数のレスポンス送信処理部131を有する。
リクエスト送信部160は、複数のリクエスト送信処理部161を有し、各リクエスト送信処理部161は、それぞれクラス判定処理部1611を有する。
レスポンス受信部170は、複数のレスポンス受信処理部171を有し、各レスポンス受信処理部171は、それぞれクラス判定処理部1711を有する。
負荷制御装置100は、リクエスト受信部120のリクエスト受信処理部121においてクライアント装置300からリクエストを受信すると、クライアント装置−負荷制御装置間と、負荷制御装置−サーバ間の送受信速度差を吸収するため、受信したリクエストの全体、乃至は、一部をリクエストバッファ111に一時蓄積する。そして、リクエストバッファ111への一時蓄積が完了したリクエストをメモリ140のリクエストキューに登録する。リクエストキュー制御部150は、応答待ちリクエスト数の制限が解消するまで、リクエストの送信を待ち合わせるようにリクエスト送信処理部161を制御する。そして、メモリ140内の応答待ちリクエスト数の制限が解消されると、リクエスト送信処理部161に対してサーバ200に対してリクエストを送信するよう制御する。
サーバ200は、リクエストを実行すると、その結果をレスポンスとして負荷制御装置100に返す。負荷制御装置100は、返されたレスポンスをレスポンス受信部170のレスポンス受信処理部171において受信し、リクエストの受信時と同様に、レスポンスバッファ112に一時蓄積する。そして、レスポンス送信部130のレスポンス送信処理部131においてレスポンスバッファ112に蓄積されていたレスポンスを順次読み出して、対応するクライアント装置300に送信する。
負荷制御装置100のクラス判定処理部161,171は、リクエスト毎にそのリクエストデータ・レスポンスデータをサーバ200と送受信する速度が、クライアント装置300とリクエストデータ・レスポンスデータを送受信する速度によって制限されるか否かを、バッファ110におけるリクエスト・レスポンスの蓄積状態に基づき判定する。ここで、サーバ200との送受信速度がクライアント装置300との送受信速度によって制限されないリクエストは「高速クラス」に属するものとする。一方、サーバ200との送受信速度がクライアント装置300との送受信速度によって制限されるリクエストは「低速クラス」に属するものとする。ここで、「高速クラス」・「低速クラス」の判定例を以下に示す。
・クライアント装置300からのリクエスト受信時は、全てのリクエストを「高速クラス」に属するとする(分類例1)。
・リクエストバッファ111に一時蓄積されている未送信リクエストデータのサイズが所定の閾値以下(本形態では"0"とする)となった時点で、そのリクエストを「低速クラス」に分類する(分類例2)。
・リクエストのレスポンス受信時にレスポンスバッファ112に空き領域が無くなった時点、すなわち、レスポンスバッファ112に一時蓄積されている未送信レスポンスデータが最大バッファサイズSに達した時点で、対応するリクエストを「低速クラス」に分類する(分類例3)。
・サーバ200へのリクエスト送信時にその全体がバッファリングされていないリクエストを「低速クラス」に分類する(分類例4)。
・リクエストやレスポンスのヘッダを解析し、そのメッセージサイズが最大バッファサイズを超えていることが判明した時点で、そのリクエストを「低速クラス」に分類する(分類例5)。
上記の分類方法は、自由に組み合わせて利用できるが、本形態では、分類例1〜3までを併用する場合について記述する。
図10は、本発明の一実施の形態におけるクライアント装置からのリクエスト受信処理のフローチャートである。
まず、負荷制御装置100のリクエスト受信処理部121は、クライアント装置300からリクエストを受信する度に、リクエスト毎個別に起動される(ステップ101)。リクエスト受信処理部121では、リクエスト全体を受信するまで、または、リクエストバッファ111に蓄積される当該リクエストのリクエストデータの大きさが最大バッファサイズSに達するまで(すなわち、バッファ溢れが生じるまで)、受信したリクエストデータをリクエストバッファ111に蓄積する(ステップ102、103)。バッファ溢れが生じることなく、リクエスト全体を受信できた場合には(ステップ104、Yes)、メモリ140のリクエストキューに当該リクエストを登録する(ステップ105,106)。そして、当該リクエストの受信処理を終了する。
一方、バッファ溢れが生じた場合には、空き領域がリクエストバッファ111にないため、クライアント装置300から新たにリクエストデータを受信できなくなる。ゆえに、当該リクエストのサーバ200への送信開始によってバッファ溢れが解消されるまで、当該リクエスト受信処理を停止させる。すなわち、当該リクエストをメモリ140のリクエストキューに格納した上で(ステップ107〜109)、バッファ溢れが解消するまでリクエスト受信処理を待ち合わせる(ステップ110)。後述する図12に示すサーバ200へのリクエスト送信処理によってバッファ溢れが解消すると、リクエスト受信処理部121は、サーバ200へのリクエストデータの送信によって、リクエストバッファ111に生じた空き領域分だけ、クライアント装置300からの残りのリクエストデータを受信する。これを、当該リクエストの全体を受信するまで繰り返す(ステップ102〜104、107,108,110)。リクエスト全体を受信すると(ステップ104,Yes)、既にリクエストキューへの登録が済んでいるため(ステップ105、Yes)、そのままリクエスト受信処理を終了する。
次に、リクエストキューの処理手順を説明する。
図11は、本発明の一実施の形態におけるキュー制御部のフローチャートである。
図10の処理でリクエストバッファ111に蓄積されたリクエストは、メモリ140のリクエストキューに格納される。キュー制御部150は、リクエスト送信処理部161に対して、応答待ちリクエスト数の制限が解消されるまでリクエストの送信を待ち合わせるよう制御する。ここで、本実施の形態では、応答待ちリクエスト数の制限として、以下を設けている。
・応答待ちリクエストの総数は、閾値L1以下でなければならない(制限1)。
・高速クラスの応答待ちリクエストの数は、閾値L2以下でなければならない(制限2)。
・低速クラスの応答待ちリクエストの数には制限を設けない。すなわち、その閾値を∞とする。
ここで、L1>L2とする。これにより、応答待ちリクエスト数の総数がL1に達しない限りは同時にL2個の高速クラスの応答待ちリクエストをサーバ200で実行させることができる。
図11に示すキュー制御部150の処理は、負荷制御装置100毎に1つ起動される。まず、キュー制御部150は、リクエスト受信処理部121を通じてメモリ140のリクエストキューに新たなリクエストが登録されるまで、または、負荷制御装置100の応答待ちリクエスト数に変化が生じるまで、その実行を待ち合わせる(ステップ201)。ここで、応答待ちリクエスト数に変化が生じる事象として、サーバ200からのレスポンス受信完了に伴う応答待ちリクエスト数の総数の変化(図13:ステップ404)、リクエストが属するクラスの変更に伴うクラス別の応答待ちリクエスト数の変化がある(図12:ステップ304、図13:ステップ407,404)。リクエストキューへの登録、応答待ちリクエスト数の変化が生じると、まず、キュー制御部150は、リクエストキューにリクエストが存在するか否かを検証する(ステップ202)。リクエストが存在しないならば、ステップ201に移行し、その実行を待ち合わせる。
リクエストが存在するならば、次に、応答待ちリクエストの総数が閾値L1より小さいか検証する[制限1](ステップ203)。[制限1]が解消されている場合は、次に、高速クラスの応答待ちリクエストの数が閾値L2より小さいか否かを検証する[制限2](ステップ204)。[制限1]、[制限2]の一方でも解消されていない場合は(ステップ202、203、No)、再び、ステップ201に移行し、その実行を待ち合わせる。
[制限1]、[制限2]が共に解消されている場合は、キュー制御部150は、リクエストキューから、サーバ200に送信すべきリクエストを1つ取り出す(ステップ205)。このとき、応答待ちリクエストの総数、及び、高速クラスのリクエストの応答待ちリクエストの数をそれぞれ1インクリメントする。そして、当該リクエストをサーバ200に送信するためのリクエスト送信処理部161、当該リクエストに対するレスポンスをサーバ200から受信するためのレスポンス受信処理部171、そして、サーバ200から受信したレスポンスをクライアント装置300に送信するためのレスポンス送信処理部131をそれぞれ起動する(ステップ206)。各処理の起動を完了すると、再び、ステップ201に移行し、応答待ちリクエスト数の制限が解消されるまで、リクエスト送信処理部161に対して次のリクエスト送信を待ち合わせるよう制御する。
次に、リクエスト送信処理について説明する。
図12は、本発明の一実施の形態におけるリクエスト送信処理のフローチャートである。
リクエスト送信処理部161は、キュー制御部150からの制御により、メモリ140のリクエストキューから取り出したリクエストをリクエストバッファ111から読み出してサーバ200に対して送信する。リクエスト送信処理部161は、キュー制御部150からリクエストキューによってリクエスト毎に起動される。
リクエスト送信処理部161は、まず、サーバ200に対してリクエストを送信可能となるまで待ち合わせる(ステップ301)。例えば、TCPでは、サーバ200から返されるACKのウィンドウサイズによってサーバ200にリクエストを送信できるか否かを判定する。サーバ200へのリクエスト送信が可能になると、クラス判定処理部1611において、リクエストバッファ111に当該リクエストの未送信リクエストデータが一時蓄積されているか否かを判定する(ステップ302)。未送信リクエストデータがない場合は(ステップ302、No)、サーバ200へのリクエスト送信速度がクライアント装置300からのリクエスト受信速度によって制限されることを意味する(すなわち、データ枯渇)。ゆえに、クラス判定処理部1611は、当該リクエストのクラスを高速クラスから低速クラスに変更する(ステップ303,304)。このとき、高速クラスの応答待ちリクエスト数を1デクリメントし、低速クラスの応答待ちリクエスト数を1インクリメントする。そして、当該リクエストの未送信リクエストデータがリクエストバッファ111に蓄積されるまで待ち合わせる(ステップ305)。リクエストバッファ111に当該リクエストの未送信リクエストデータがある場合は(ステップ302、Yes)、リクエストバッファ111からリクエストデータを読出し(ステップ306)、サーバ200に対して送信する(ステップ307)。このとき、図10のリクエスト受信処理において、バッファ溢れによって当該リクエストの受信が停止していた場合は、その受信が再開される。サーバ200にリクエスト全体を送信した時点で(ステップ308、Yes)、当該リクエスト送信処理を終了する。
次に、サーバ200からレスポンスを受信するレスポンス受信部170におけるレスポンス受信処理について説明する。
図13は、本発明の一実施の形態におけるレスポンス受信処理のフローチャートである。
レスポンス受信処理部171は、リクエストキューによってリクエスト毎に起動される。レスポンス受信処理部171は、サーバ200からレスポンス全体を受信するまで、または、レスポンスバッファ112に蓄積された未処理レスポンスデータの大きさが最大バッファサイズSに達する(すなわちバッファ溢れが生じる)まで、受信したレスポンスデータをレスポンスバッファ112に蓄積していく(ステップ401,402)。バッファ溢れが生じた場合は、クライアント装置300に対するリクエストデータの送信によってリクエストバッファ111に空きが生じるまで、サーバ200からレスポンスが受信できなくなる。すなわち、サーバ200から当該レスポンスの受信速度が、クライアント装置300へのレスポンス送信速度によって制限される。故に、クラス判定処理部1711は、当該レスポンスに対応するリクエストが属するクラスを「高速クラス」から「低速クラス」に変更する(ステップ406、Yes,407)。このとき、高速クラスの応答待ちリクエスト数を1デクリメントし、低速クラスの応答待ちリクエスト数を1インクリメントする。そして、当該レスポンスデータのクライアント装置300への送信によってバッファ溢れが解消するまで、レスポンス受信処理を中断する(ステップ408)。
レスポンス全体の受信が完了した時点で(ステップ403、Yes)、レスポンス受信完了処理を行う(ステップ404)。すなわち、応答待ちリクエストの総数を1デクリメントする。また、レスポンス受信が完了したリクエストが属するクラスの応答待ちリクエスト数を1デクリメントする。最後に、当該レスポンス受信処理を終了する。
次に、レスポンス送信処理について説明する。
図14は、本発明の一実施の形態におけるレスポンス送信処理のフローチャートである。
レスポンス送信処理部131は、リクエストキューによってリクエスト毎に起動される。そして、クライアント装置300にレスポンスデータを送信可能である限り、レスポンスバッファ112に蓄積されているレスポンスデータを読出し、クライアント装置300に送信する。
まず、レスポンス送信部130のレスポンス送信処理部131は、クライアント装置300へのレスポンス送信が可能となるまで待ち合わせる(ステップ501)。ここで、クライアント装置300にレスポンスデータを送信可能であるか否かは、例えば、クライアント装置300から返されるTCP ACKに示されるウィンドウサイズによって判定できる。
次に、レスポンスバッファ112中にクライアント装置300への送信すべき未送信のレスポンスデータが蓄積されているか否かを判定する(ステップ502)。レスポンスバッファ112にレスポンスデータが蓄積されていないならば(ステップ502、No)、サーバ200からのレスポンスデータの受信によって、レスポンスバッファ112に続きのレスポンスデータが蓄積されるまで、その実行を待ち合わせる(ステップ503)。
次に、レスポンスバッファ112に蓄積されているレスポンスデータを読出し(ステップ504)、クライアント装置300に送信する(ステップ505)。このとき、図13のレスポンス受信処理において、バッファ枯渇によって当該レスポンスのサーバ200からの受信を停止していたならば、その受信が再開される。
最後に、当該レスポンスの全体をクライアント装置300に送信した時点で(ステップ506、Yes)、レスポンス送信処理を終了する。
これまでの説明では、リクエスト、または、レスポンスあたりの最大バッファサイズを一律Sとしてきた。しかし、最大バッファサイズを、リクエストが属するクラス毎に変更してもよい。例えば、高速クラスの最大バッファサイズをS1とし、低速クラスの最大バッファサイズをS2とする。このとき、S1>S2となるように設定することによって、送受信速度が制限されている低速クラスのリクエスト・レスポンスをバッファ110に蓄積するために、負荷制御装置100のメモリが浪費されることを防ぐ。
なお、上記の負荷制御装置100の構成要素をプログラムとして構築し、負荷制御装置として利用されるコンピュータにインストールするまたは、ネットワークを介して流通させることが可能である。
また、構築されたプログラムを、ハードディスクや、フレキシブルディスク・CD−ROM等の可搬記憶媒体に格納して、コンピュータにインストールする、または、配布することが可能である。
なお、本発明は、上記の実施の形態に限定されることなく、特許請求の範囲内において種々変更・応用が可能である。
本発明は、サーバの過剰リクエストを防止するための装置としてクライアント装置−サーバ間に配置される、1つまたは複数のサーバと接続される装置、またはリバースプロキシ、Webアクセラレータ、Firewall、負荷分散システム等に適用可能である。
本発明の原理構成図である。 本発明の原理を説明するための図である。 本発明の負荷制御装置における概要動作を示す図(応答待ちリクエスト数の制限(閾値を1とした場合))である。 本発明の負荷制御装置における概要動作を示す図(応答待ちリクエスト数の制限(閾値を2とした場合))である。 一時蓄積しない場合のメッセージ転送(高速クライアント)を示す図である。 一時蓄積しない場合のメッセージ転送(低速クライアント)を示す図である。 本発明の負荷制御装置における概要動作を示す図(一時蓄積する場合のメッセージ転送(低速クライアント))である。 本発明の一実施の形態におけるシステム構成図である。 本発明の一実施の形態における負荷制御装置の構成図である。 本発明の一実施の形態におけるクライアント装置からのリクエスト受信処理のフローチャートである。 本発明の一実施の形態におけるキュー制御部のフローチャートである。 本発明の一実施の形態におけるリクエスト送信処理のフローチャートである。 本発明の一実施の形態におけるレスポンス受信処理のフローチャートである。 本発明の一実施の形態におけるレスポンス送信処理のフローチャートである。 リクエスト過剰によるWebサーバの処理性能の低下を示す実験結果である。
符号の説明
100 負荷制御装置
110 バッファ
111 リクエストバッファ
112 レスポンスバッファ
120 リクエスト受信手段、リクエスト受信部
121 リクエスト受信処理部
130 レスポンス送信手段、レスポンス送信部
131 レスポンス送信処理部
140 メモリ(リクエストキュー)
150 制御手段、キュー制御部
160 リクエスト送信手段、リクエスト送信部
170 レスポンス受信手段、レスポンス受信部
200 サーバ
300 クライアント装置
121 リクエスト受信処理部
131 レスポンス送信処理部
161 リクエスト送信処理部
171 レスポンス受信処理部
1611 クラス判定処理部
1711 クラス判定処理部

Claims (13)

  1. クライアント装置とサーバとの間に配置され、該クライアント装置からリクエストを受信するリクエスト受信手段と、該リクエストを該サーバに送信するリクエスト送信手段と、該リクエストに対して該サーバから返却されるレスポンスを受信するレスポンス受信手段と、該レスポンスを該クライアント装置に送信するレスポンス送信手段と、を有する負荷制御装置であって、
    前記クライアント装置から受信したリクエストデータを前記サーバに送信するまで一時蓄積するリクエストバッファと、
    前記サーバから受信したレスポンスデータを前記クライアント装置に送信するまで一時蓄積するレスポンスバッファと、
    応答待ちリクエストのリクエストデータまたはレスポンスデータを前記サーバと送受信する速度が、前記クライアント装置と該リクエストデータまたは該レスポンスデータを送受信する速度によって制限されるか否かを、前記リクエストバッファのリクエストデータ及び前記レスポンスバッファのレスポンスデータの蓄積状態に基づいて判定する判定手段と、
    応答待ちのリクエストの総数、前記判定手段で前記サーバとの送受信速度が制限されると判定された応答待ちリクエストの数、及び該判定手段で該サーバとの送受信速度が制限されないと判定された応答待ちリクエストの数が、それぞれに設けられている閾値を下回るまで、該サーバへの新たなリクエスト送信を待ち合わせるよう前記リクエスト送信手段を制御する制御手段と、
    を有し、
    前記サーバに送信開始済みであるが、該サーバからレスポンス全体が返却されていない応答待ちリクエストの数を制限することを特徴とする負荷制御装置。
  2. 前記判定手段は、
    前記サーバへのリクエスト送信完了前に、前記リクエストバッファに蓄積されている当該リクエストのリクエストデータのサイズが所定の閾値以下となった場合に、該サーバとの送受信速度が制限されると判定する手段を含む
    請求項1記載の負荷制御装置。
  3. 前記判定手段は、
    前記サーバからのレスポンス受信完了前に、前記レスポンスバッファに蓄積されているレスポンスデータのサイズが所定の閾値に達した場合に、該サーバと送受信速度が制限される判定する手段を含む
    請求項1記載の負荷制御装置。
  4. 前記制御手段は、
    リクエスト全体が前記リクエストバッファに蓄積されていること、または、該バッファに蓄積されているリクエストデータの大きさが所定の閾値以上であることを、前記サーバにリクエスト送信するための必要条件とする
    請求項1記載の負荷制御装置。
  5. 前記判定手段は、
    前記リクエストのリクエストデータまたは、該リクエストに対するレスポンスデータを前記サーバと送受信する速度が、前記クライアント装置と前記リクエストデータまたはレスポンスデータを送受信する速度によって制限されると判定された場合に、前記リクエストバッファに蓄積できるリクエストデータの最大サイズを変化させる手段を含む
    請求項1記載の負荷制御装置。
  6. 前記判定手段は、
    前記リクエストのリクエストデータまたは、該リクエストに対するレスポンスデータを前記サーバと送受信する速度が、前記クライアント装置と前記リクエストデータまたはレスポンスデータを送受信する速度によって制限されると判定された場合に、前記レスポンスバッファに蓄積できるレスポンスデータの最大サイズを変化させる手段を含む
    請求項1記載の負荷制御装置。
  7. クライアント装置とサーバとの間に配置され、該クライアント装置から受信したリクエストを該サーバに送信し、該リクエストに対して該サーバから返却されるレスポンスを該クライアント装置に送信する装置における、過剰リクエストを回避させるための負荷制御方法であって、
    クライアント装置とサーバとの間に配置され、該クライアント装置からリクエストを受信するリクエスト受信手段と、該リクエストを該サーバに送信するリクエスト送信手段と、該リクエストに対して該サーバから返却されるレスポンスを受信するレスポンス受信手段と、該レスポンスを該クライアント装置に送信するレスポンス送信手段と、判定手段及び制御手段とを有する負荷制御装置が、
    前記リクエスト受信手段が、前記クライアント装置から受信したリクエストデータを前記サーバに送信するまで一時リクエストバッファに蓄積し、
    前記レスポンス受信手段が、前記サーバから受信したレスポンスデータを前記クライアント装置に送信するまで一時レスポンスバッファに蓄積している状況において、
    前記判定手段が、応答待ちリクエストのリクエストデータまたはレスポンスデータを前記サーバと送受信する速度が、前記クライアント装置と該リクエストデータまたは該レスポンスデータを送受信する速度によって制限されるか否かを、前記リクエストバッファのリクエストデータ及び前記レスポンスバッファのレスポンスデータの蓄積状態に基づいて判定する判定ステップと、
    前記制御手段が、応答待ちのリクエストの総数、前記判定ステップにおいて前記サーバとの送受信速度が制限されると判定された応答待ちリクエストの数、及び該判定ステップにおいて該サーバとの送受信速度が制限されないと判定された応答待ちリクエストの数が、それぞれに設けられている閾値を下回るまで、該サーバへの新たなリクエスト送信を待ち合わせるよう前記リクエスト送信手段を制御する制御ステップと、を行い、
    前記サーバに送信開始済みであるが、該サーバからレスポンス全体が返却されていない応答待ちリクエストの数を制限することを特徴とする負荷制御方法。
  8. 前記判定ステップにおいて、
    前記サーバへのリクエスト送信完了前に、前記リクエストバッファに蓄積されている当該リクエストのリクエストデータのサイズが所定の閾値以下となった場合に、該サーバとの送受信速度が制限されると判定するステップを行う
    請求項記載の負荷制御方法。
  9. 前記判定ステップにおいて、
    前記サーバからのレスポンス受信完了前に、前記レスポンスバッファに蓄積されているレスポンスデータのサイズが所定の閾値に達した場合に、該サーバと送受信速度が制限されると判定するステップを行う
    請求項記載の負荷制御方法。
  10. 前記制御ステップにおいて、
    リクエスト全体が前記リクエストバッファに蓄積されていること、または、該バッファに蓄積されているリクエストデータの大きさが所定の閾値以上であることを、前記サーバにリクエスト送信するための必要条件とする
    請求項記載の負荷制御方法。
  11. 前記判定ステップにおいて、
    前記リクエストのリクエストデータまたは、該リクエストに対するレスポンスデータを前記サーバと送受信する速度が、前記クライアント装置と前記リクエストデータまたはレスポンスデータを送受信する速度によって制限されると判定された場合に、前記リクエストバッファに蓄積できるリクエストデータの最大サイズを変化させるステップを行う
    請求項記載の負荷制御方法。
  12. 前記判定ステップにおいて、
    前記リクエストのリクエストデータまたは、該リクエストに対するレスポンスデータを前記サーバと送受信する速度が、前記クライアント装置と前記リクエストデータまたはレスポンスデータを送受信する速度によって制限されると判定された場合に、前記レスポンスバッファに蓄積できるレスポンスデータの最大サイズを変化させるステップを行う
    請求項7記載の負荷制御方法。
  13. 請求項1乃至のいずれか1項に記載の負荷制御装置を構成する各手段としてコンピュータを機能させる負荷制御プログラム。
JP2007196196A 2007-07-27 2007-07-27 負荷制御装置及び方法及びプログラム Active JP4394710B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007196196A JP4394710B2 (ja) 2007-07-27 2007-07-27 負荷制御装置及び方法及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007196196A JP4394710B2 (ja) 2007-07-27 2007-07-27 負荷制御装置及び方法及びプログラム

Publications (2)

Publication Number Publication Date
JP2009032083A JP2009032083A (ja) 2009-02-12
JP4394710B2 true JP4394710B2 (ja) 2010-01-06

Family

ID=40402509

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007196196A Active JP4394710B2 (ja) 2007-07-27 2007-07-27 負荷制御装置及び方法及びプログラム

Country Status (1)

Country Link
JP (1) JP4394710B2 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5291504B2 (ja) * 2009-03-23 2013-09-18 株式会社野村総合研究所 負荷分散処理システム
JP5544903B2 (ja) * 2010-01-28 2014-07-09 カシオ計算機株式会社 サーバ装置およびその制御プログラム
JP5585195B2 (ja) * 2010-05-12 2014-09-10 日本電気株式会社 トランザクション処理装置、トランザクション処理方法およびトランザクション処理プログラム
CN105095042B (zh) * 2014-05-06 2017-09-29 中国电信股份有限公司 管理信息系统及其业务处理方法
CN110505155B (zh) * 2019-08-13 2023-12-08 北京达佳互联信息技术有限公司 请求降级处理方法、装置、电子设备及存储介质

Also Published As

Publication number Publication date
JP2009032083A (ja) 2009-02-12

Similar Documents

Publication Publication Date Title
JP4916809B2 (ja) 負荷分散制御装置および方法
US8667120B2 (en) Load control device and method thereof for controlling requests sent to a server
US8799502B2 (en) Systems and methods for controlling the number of connections established with a server
RU2549135C2 (ru) Система и способ для обеспечения более быстрой и более эффективной передачи данных
JP3382953B2 (ja) 有限メモリコンピュータシステム上におけるクライアント管理フロー制御方法及び装置
US9154572B2 (en) Changing I/O types for processing data requests
US20040024861A1 (en) Network load balancing
EP2755363B1 (en) Data-fast-distribution method and device
US10097616B2 (en) Methods for optimizing service of content requests and devices thereof
GB2533017A (en) A method and system for scalable job processing
JP4394710B2 (ja) 負荷制御装置及び方法及びプログラム
US20180091631A1 (en) Systems and methods for writing prioritized http/2 data to a socket buffer
US11743319B2 (en) Implementing a queuing system in a distributed network
Davern et al. HTTPEP: A HTTP performance enhancing proxy for satellite systems
JP2005092862A (ja) 負荷分散方法及びクライアント・サーバシステム
CN110798495B (zh) 用于在集群架构模式下端到端的消息推送的方法和服务器
US9369384B2 (en) Server system connection process method preventing network congestion
US10154116B1 (en) Efficient synchronization of locally-available content
US20190319901A1 (en) Scalable, real-time messaging system
US10728291B1 (en) Persistent duplex connections and communication protocol for content distribution
JP4646931B2 (ja) サーバ装置およびリクエスト整理方法
JP2013222407A (ja) 流量制御機能を有するシステム
JP2017059250A (ja) 流量制御機能を有するシステム
Kurebayashi et al. A Web access SHaping method to improve the performance of congested servers
CN116938819A (zh) 一种内容源分发方法、装置、计算设备和存储介质

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090626

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090707

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090904

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20091006

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20091015

R150 Certificate of patent or registration of utility model

Ref document number: 4394710

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121023

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121023

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131023

Year of fee payment: 4

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350