JP5189974B2 - 負荷制御装置およびその方法 - Google Patents

負荷制御装置およびその方法 Download PDF

Info

Publication number
JP5189974B2
JP5189974B2 JP2008513233A JP2008513233A JP5189974B2 JP 5189974 B2 JP5189974 B2 JP 5189974B2 JP 2008513233 A JP2008513233 A JP 2008513233A JP 2008513233 A JP2008513233 A JP 2008513233A JP 5189974 B2 JP5189974 B2 JP 5189974B2
Authority
JP
Japan
Prior art keywords
request
requests
response
server
threshold
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
JP2008513233A
Other languages
English (en)
Other versions
JPWO2007125942A1 (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 JP2008513233A priority Critical patent/JP5189974B2/ja
Publication of JPWO2007125942A1 publication Critical patent/JPWO2007125942A1/ja
Application granted granted Critical
Publication of JP5189974B2 publication Critical patent/JP5189974B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0896Bandwidth or capacity management, i.e. automatically increasing or decreasing capacities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0876Network utilisation, e.g. volume of load or congestion level
    • H04L43/0894Packet rate
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/16Threshold monitoring
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/19Flow control; Congestion control at layers above the network layer
    • H04L47/193Flow control; Congestion control at layers above the network layer at the transport layer, e.g. TCP related
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/27Evaluation or update of window size, e.g. using information derived from acknowledged [ACK] packets
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/39Credit based
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/165Combined use of TCP and UDP protocols; selection criteria therefor
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Environmental & Geological Engineering (AREA)
  • Computer And Data Communications (AREA)
  • Information Transfer Between Computers (AREA)

Description

本発明は、クライアントとサーバとの間に配置され、クライアントから受信したリクエストをサーバに転送し、当該リクエストに対してサーバから返却されるレスポンスをクライアントに転送する装置に利用する。特に、リクエストのスケジューリングに関する。なお、本明細書では、Webサーバに着目して説明するが、必ずしも他のサーバへの本発明の適用を制限するものではない。
インターネットの普及に伴い、ネットワークを介して様々なサービスを利用できるようになっている。メール、ホームページの閲覧、検索、オンライン取引、IP電話、ビデオオンデマンドなどは、その一例である。これらのネットワークサービスは様々な形態で提供し得るが、近年、クライアントとのインタフェースとして、Webサーバの利用が主流となっている。
Webサーバを用いたサービス(Webサービス)の基本的な仕組みは以下のとおりである。まず、クライアントがWebサーバに対して、取得したいコンテンツを識別するURL(Uniform Resource Locator)を付与したリクエストを送信する。Webサーバがリクエストを受け取ると、リクエスト中のURLに対応するコンテンツをレスポンスとしてクライアントに送り返す。Webサービスは、このリクエスト−レスポンスの繰り返しによって提供される。
リクエスト−レスポンスを転送する通信プロトコルとして、HTTP(Hyper Text Transfer Protocol)が用いられる。本明細書では、Webサービスを行うサーバシステム全体をWebサーバ、また、Webサーバ上でHTTPプロトコルを処理する機能をHTTPサーバ、リクエストに応じたコンテンツを生成する機能をWebアプリケーションと呼ぶ。
また、Webサービスによって提供されるコンテンツとして映像や音声のストリーミングが盛んに利用されるようになっている。ストリーミングの基本的な仕組みは以下のとおりである。
まず、クライアントのWebブラウザは、ストリームコンテンツのメタファイルをWebサーバから取得する。メタファイルには、ストリームコンテンツのURLが記述される。同時に、Webブラウザは、メタファイルの拡張子に関連付けられたプレイヤ(ストリーム再生用アプリケーション)を起動する。そして、Webサーバから取得したメタファイルに示されるURLに基づき、プレイヤがストリーミングサーバに対し、ストリームコンテンツの送信を要求する。最後に、ストリーミングサーバが、プレイヤに対してストリーミングデータを送信する。
ストリーミングでサーバは一般的に、ストリームコンテンツの再生制御にRTSP(Real Time Streaming Protocol)プロトコルを使用する。RTSPプロトコルはHTTPプロトコルをベースとするプロトコルであり、クライアントとサーバとの間で、リクエストとリクエストに対するレスポンスを送受信することによって、ストリームコンテンツを再生制御する。
RTSPのリクエストが使用できる主な制御メソッドとして、初期設定(SETUP)、再生(PLAY)、停止(TEARDOWN)、などがある。RTSPでは、同時に複数のストリームを制御するため、セッションの概念を有する。すなわち、RTSPでは、プレイヤがSETUPリクエストを送信してから、TEARDOWNリクエストを送信してストリーミングが終了するまでを一つのセッションとみなす。
そして、ストリームサーバは、SETUPリクエストをプレイヤから受け取ると、一意のセッションIDを発行する。セッションIDは、レスポンスに付与されてクライアントに通知される。プレイヤが通知されたセッションIDを後続のリクエストに付与することで、ストリームサーバにおいて制御対象となるセッションを識別することができる。
Webサービスが普及するにつれて、サービスを快適に利用していくための課題も明らかになりつつある。その課題の一つとして、サービス利用が集中した際の過剰トラヒックへの対応が挙げられる。
サービス利用の集中の例として、人気の高い銘柄の株やチケットの売買によるリクエスト集中や、災害発生時の見舞呼などがある。また、悪意のあるクライアントによって、F5アタックなどの無意味なリクエストが大量に送信される場合もある。これらの要因によって、サーバにリクエストが過剰に送信されると、サーバのリクエスト処理性能の低下が生じる。
リクエスト過剰時におけるサーバのリクエスト処理性能の低下要因は以下のとおりである。すなわち、第一に、サーバが処理しきれないリクエストの受信に伴う、割込み、TCP/IP処理といった入出力オーバヘッドが増加する。第二に、リクエストを処理するスレッドまたはプロセス数が増大し、スレッドまたはプロセスの切替え処理に要するオーバヘッドである文脈切替えオーバヘッドが顕在化する。第三に、クライアントにレスポンスが返されるまでの応答時間が増加するため、応答を待ちきれないクライアントがリクエストを途中でキャンセルするようになる。これらの結果、サーバが混雑すればするほど、サーバの処理性能が低下するという問題が生じる。
図1は、リクエスト過剰によるWebサーバの処理性能の低下を示す実験結果である。横軸に入力リクエストレートをとり、縦軸にスループットをとる。図1では、あるWebサーバに対して、入力リクエストレート、すなわち、単位時間当りのリクエスト数(rps)を変化させてリクエストを送信する。そして、スループット、すなわち、Webサーバが単位時間当りに完了できたリクエスト数(rps)を計測している。図1に示されるように、入力リクエストレートが一定範囲内であるならば、入力レートに対してスループットは比例する(図1直線(a))。しかしながら、Webサーバの最大スループットに達すると、スループットが低下に転じる(図1直線(c))。故に、Webサーバの最大性能を超えるリクエストを受信した場合でも、図1破線(b)にそって、Webサーバの最大性能を維持できる技術が必要といえる。参考のため、理想的なスループットの挙動を図2に示す。
過剰トラヒックによるサーバ性能低下を防ぐため、サーバに送信されるリクエスト量を予め制限する手法が提案されている。リクエスト量を制限する指標として、(a)TCPコネクション数、(b)サーバ負荷状態、(c)帯域、(d)並列度などが用いられる。
(a)TCPコネクション数を用いる場合は、同時接続可能なTCPコネクション数の上限を定めることによって、サーバの過負荷回避を試みる。Apacheなどの汎用的なHTTPサーバ、負荷分散システムなどで用いられる。しかしながら、リクエストの種類、クライアントの回線速度などによって、TCPコネクション毎にその負荷が大きく異なる。このため、TCPコネクション数の上限に達する前に、サーバが過負荷となったり、逆に、サーバリソースが余っていても、TCPコネクション数が上限に達していることによって、新たなTCPコネクションを確立できない、といった問題が生じる。
(b)サーバの負荷状態を用いる場合は、CPU占有率、メモリ使用量、応答時間などからサーバの負荷状態を推測し、過負荷か否かを判定し、過負荷と判定した場合は、新規リクエストの転送、拒絶など、サーバの負荷を軽減させるためのトラヒック制御を行う。しかし、過負荷と判定されてから初めてトラヒック制御を行うため、一時的なサーバの性能低下が免れない。
(c)帯域を用いる場合は、シェーパーなどの帯域制御機能を用いて、サーバに到達されるトラヒック量を制限する。しかしながら、帯域はサーバの負荷を正確に測る指標とはならない。例えば、画像ファイルのダウンロードは、大きな帯域を占めるがサーバに与える負荷は比較的小さい。故に、帯域制限によって、サーバのリソースを十分に活用しつつ、過負荷を確実に回避することは難しい。
(d)並列度を用いる場合は、サーバが同時に実行するスレッドまたはプロセス数を制限する。これにより、リクエストを処理するスレッドまたはプロセス数の増大に伴う文脈切替えオーバヘッドを削減できる。
並列度を制御する具体例として、ページ単位に並列度を制限するように、HTTPサーバを拡張した文献1(松沼正浩、日比野秀章、佐藤芳樹、光来健一、千葉滋著、“過負荷時のWebアプリケーションの性能劣化を改善するSession−Level Queue Scheduling”、第2回ディペンダブルソフトウェアワークショップ(DSW’05)、pp.105−114,2005年1月)がある。しかし、サーバ上で並列度を制御しても、リクエスト処理性能低下の第一要因である、サーバが処理しきれないリクエストの受信に伴う、割込み、TCP/IP処理などのオーバヘッドを避けることができない。その結果、他の手法と同様に、過剰トラヒック時におけるサーバの処理性能の低下が生じる。また、HTTPサーバまたはWebアプリケーションの変更が必要になるため、既に運用中のサービスへの導入障壁が高いといった問題がある。
並列度を制御するもう一つの例として、ストリーミングサーバのセッション数制限がある。すなわち、ストリーミングサーバでは、同時に保持できるセッション数に上限を設けることが一般的である。これにより、セッション数の増大に伴うサーバ過負荷を回避する。
しかし、セッション数の制限は、RTSPによる制御リクエストの受信までを制限するものではない。このため、RTSPリクエストがストリームサーバに集中すると、リクエストに対する処理オーバヘッドが顕在化し、ストリームサーバの処理性能の低下が生じる、という問題が生じる。
サーバの性能低下は、図3(a)に示すような、新規リクエストの受信によって、割り込み、入出力、文脈切替オーバヘッドなどが増加することによって生じる。このようなオーバヘッドを取り除き、サーバの性能を最大限に発揮させるためには、図3(b)のように、サーバでの処理が完了した瞬間に次のリクエストが到着することが理想である。この場合は、サーバで処理しきれないリクエストの受信によるオーバヘッドがない。また、処理完了から次のリクエスト到着までの空き時間がサーバに生じない。
本発明は、このような背景の下に行われたものであって、過剰リクエスト受信時におけるサーバの性能低下を回避することができる負荷制御装置およびその方法を提供することを目的とする。
本発明の負荷制御装置は、クライアントとサーバとの間に配置され、両者のリクエスト・レスポンスの送受信を仲介する。すなわち、クライアントから受信したリクエストをサーバに送信し、さらにサーバから返されるレスポンスをクライアントに送信する。このとき、本発明は、サーバに送信済みであるが、サーバからレスポンスが返されていないリクエスト、すなわち、応答待ちリクエストの数を制限する。この制限を行うためには、応答待ちリクエスト数が閾値に達しているならば、受信したリクエストをバッファリングし、応答待ちリクエスト数が閾値を下回るまで、リクエストの送信を待ち合わせる。
本発明は、図3(b)の理想的なリクエストの到着を模擬するように、サーバのリクエスト送信を制限する。説明を単純化するため、まず、応答待ちリクエスト数の閾値を“1”とした場合を図4(a)に示す。図3(b)を模擬するには、まず、サーバでのスレッドの実行完了を知る必要がある。本発明では、サーバでのスレッドの実行完了をサーバからレスポンスの受信によって認識する。そして、先に送信したリクエストに対するレスポンスが返されて初めて、次のリクエストをサーバに送信する。本発明に基づけば、サーバが処理しきれないリクエストがサーバに送信されない。このため、リクエストの受信処理に伴うサーバのオーバヘッドが削減される。
図4(a)では、サーバがレスポスンスを返してから、負荷制御装置が次のリクエストを送信するまでの間、サーバに空きが生じる。この問題を回避するため、本発明では、応答待ちリクエスト数の閾値として、“1”より大きい値を設定できる。図4(b)は応答待ちリクエスト数の閾値を“2”とした場合の実行例を示している。応答待ちリクエスト数を複数とすることによって、サーバ上で実行可能状態にあるスレッド数が増加する。あるスレッドの実行が完了すると、次のスレッドの実行を即時に開始できるため、サーバのリソースに空きが生じ難くなる。さらに、本発明に基づけば、サーバの負荷を、サーバの内部情報を参照することなく、サーバの外部から制御できる。故に、既に稼働中のサーバに対して付加的な機能の追加または変更を行わないで、本発明を導入することができる。
また、本発明に基づけば、応答待ちリクエスト数の閾値を自動調整できる。最適な応答待ちリクエスト数の閾値は、サーバのシステム構成(サーバ台数、CPU数など)、アプリケーションの実行時間などによって異なる。故に、応答待ちリクエスト数の閾値を静的に設定する場合は、事前の性能評価が必要になるなど、負荷制御装置の管理者にかかる負担が大きい。
例えば、CPU数が2つであるサーバが同時に処理できるリクエスト数は、CPU数が1つであるサーバよりも多い。故に、サーバのスループットを最大化するためには、CPU数が2である場合の応答待ちリクエスト数の閾値は、CPU数が1である場合よりも大きく設定することが必要である。
また、アプリケーションに着目すると、その実行時間が短いほど、負荷制御装置とサーバとの間の送信遅延が相対的に大きくなる。故に、実行時間が短いアプリケーションほど、応答待ちリクエスト数の閾値を大きく設定し、送信遅延時間によるサーバ空き時間を隠蔽できるようにする必要がある。
また、応答待ちリクエスト数の閾値が大きくなると、サーバ上で多重に処理されるリクエスト数も増加する。故に、閾値が大きくなり過ぎると、サーバでの文脈切替えオーバヘッドが増加し、スループット低下が生じる。さらに、負荷制御装置がサーバにリクエストを送信してからレスポンスが返ってくるまでの応答時間が悪化する、といった問題が生じる。
故に、本発明では、サーバの応答時間またはスループットを計測し、その計測結果に応じて応答待ちリクエスト数の閾値を自動調整する。これによりサーバのシステム構成またはアプリケーションによらず、望ましい応答時間およびスループットを得ることができる。その結果、応答待ちリクエストの閾値の設定に要する管理者の負担を軽減することができる。
また、従来技術a)で示したように、一般的にWebサーバでは、TCPコネクションの同時接続数に上限を設けている。しかし、TCPコネクションの同時接続数に制限が設けられると、応答待ちリクエスト数に基づく負荷制御が機能しなくなる場合がある。この問題を解決するため、本発明では、応答待ちリクエスト数による負荷制御を、従来技術の一つのコネクション集約と組み合わせて利用する。コネクション集約とはHTTP1.1のKeep−Alive機能を利用し、負荷制御装置とサーバとの間で張られたTCPコネクションを複数のクライアントで共有する技術である。
コネクション集約を用いない場合には、現在接続中のクライアント数を超えた数のTCPコネクションが、負荷制御装置とサーバとの間で接続される。したがって、リクエストの送信頻度が低いクライアントが多数接続を試みている場合などにおいて、応答待ちリクエスト数の閾値を超える前にサーバのTCPコネクション接続数が上限に達する可能性がある。その結果、サーバの計算リソースを活用するために十分な量のリクエストをサーバに供給できなくなる。これに対し、コネクション集約を用いる場合には、負荷制御装置側で、TCPコネクション数が応答待ちリクエスト数の閾値を超えないように調整できる。すなわち、サーバのTCPコネクションの同時接続数の上限が応答待ちリクエスト数の閾値より大きい限り、TCPコネクション同時接続数の制限が無効化される。
すなわち、本発明は、クライアントとサーバとの間に配置され、前記クライアントから受信したリクエストを前記サーバに送信し、当該リクエストに対して前記サーバから返されるレスポンスを前記クライアントに送信する負荷制御装置である。
ここで、本発明の特徴とするところは、前記サーバに送信済みであるが前記サーバからレスポンスが返されていない応答待ちリクエストの数を制限する手段前記制限する手段は、応答待ちリクエスト数が閾値に達しているならば、受信したリクエストを一時蓄積するバッファと、応答待ちリクエスト数が閾値を下回るまで前記バッファからのリクエストの送信を待ち合わせる手段と、応答待ちリクエスト数が閾値未満の場合は、前記バッファからリクエストを1つ選択して取り出し、応答待ちリクエスト数を1インクリメントさせた後、サーバに当該リクエストを送信する手段と、受信したレスポンスを、当該レスポンスのリクエストを送信したクライアントに対して返送し、応答待ちリクエスト数を1デクリメントする手段と備え、前記サーバの実行状況を監視する手段と、前記監視する手段の監視結果に基づいて単位時間あたりに前記サーバが処理したリクエスト数である、現在の応答待ちリクエスト数の閾値に対するスループットを測定する手段と、前記バッファに一時蓄積されているリクエストの数が所定数に達しているか否かを判定する手段と、前記判定する手段の判定結果に基づいて、リクエストの数が所定数に達している場合、現在の応答待ちリクエスト数の閾値に対するスループットを記録し、現在の応答待ちリクエスト数の閾値に対して記録したスループットが当該現在の応答待ちリクエスト数の閾値より小さい閾値に対して記録したスループットを上回る場合には、当該現在の応答待ちリクエスト数の閾値を増加させ、現在の応答待ちリクエスト数の閾値に対して記録したスループットが当該現在の応答待ちリクエスト数の閾値より小さい閾値に対して記録したスループットを下回る場合には、当該現在の応答待ちリクエスト数の閾値を減少させる手段と、を備えたところにある。例えば、前記閾値は“1”よりも大きい値とする。
また、前記サーバと自己との間のTCPコネクション同時接続数が前記応答待ちリクエスト数の閾値以下となるように自己と前記クライアントとの間のTCPコネクションを集約する手段を備えることが望ましい。
また、前記バッファは、送信元クライアントの識別情報に基づきリクエストを優先制御する手段を備えることができる。
あるいは、前記バッファは、リクエスト中の特定の位置または範囲に特定のパターンが含まれるか否かに基づきリクエストを優先制御する手段を備えることができる。
あるいは、前記バッファは、リクエスト中の特定の変数が予め設定した閾値より大きいか否かに基づきリクエストを優先制御する手段を備えることができる。
あるいは、前記バッファは、リクエストが暗号化されているか否かに基づきリクエストを優先制御する手段を備えることができる。
あるいは、前記バッファは、所定時間以上蓄積されたリクエストに対して、ビジーメッセージを通知する手段を備えることができる。
あるいは、前記サーバはWebサーバであり、前記バッファは、リクエストのページ表示の表示優先度に基づきリクエストを優先制御する手段を備えることができる。
あるいは、前記リクエストはTCPコネクションによってクライアントから負荷制御装置に送信され、前記バッファは、クライアントと負荷制御装置との間に接続された他のTCPコネクションの有無またはTCPコネクションの数および当該リクエストがTCPコネクションの最初のリクエストであるか否かに基づきリクエストを優先制御する手段を備えることができる。
あるいは、レスポンスにブラウザが自動取得すべきページ構成要素のURLが指し示されている場合に、レスポンス送信先の識別情報と当該URLとの組を一時的に記憶する手段を備え、前記バッファは、リクエストの送信元の識別情報とURLとの組が、一時記憶されたレスポンス送信先の識別情報とURLとの組と一致するか否かに基づきリクエストを優先制御する手段を備えることができる。
あるいは、前記リクエストが属するセッションの進行状況に基づきリクエストを優先制御する手段を備えることができる。
あるいは、前記サーバで処理されたリクエストが属するセッションのセッション識別情報を一定期間キャッシュする手段と、キャッシュされているセッション識別情報を持つか否かに基づきリクエストを優先制御する手段を備えることができる。
あるいは、前記バッファは、クライアントから送信されたトラヒックの不正アクセスの疑わしさに基づきリクエストを優先制御する手段を備えることができる。
本発明を、プログラムとしてみることもできる。すなわち、本発明は、汎用の情報処理装置にインストールすることにより、その汎用の情報処理装置に、本発明の負荷制御装置の機能に相応する機能を実現させるプログラムである。
また、本発明を、記録媒体としてみることもできる。すなわち、本発明は、本発明のプログラムが記録された記録媒体である。本発明のプログラムは本発明の記録媒体に記録されることにより、汎用の前記情報処理装置は、この記録媒体を用いて本発明のプログラムをインストールすることができる。あるいは、本発明のプログラムを保持するサーバからネットワークを介して直接汎用の前記情報処理装置に本発明のプログラムをインストールすることもできる。
これにより、汎用の情報処理装置を用いて、本発明の負荷制御装置を実現することができる。
また、本発明を、本発明の負荷制御装置が実行する負荷制御方法の発明としてみることができる。すなわち、本発明は、前記サーバに送信済みであるが前記サーバからレスポンスが返されていない応答待ちリクエストの数を制限するステップ前記制限するステップは、応答待ちリクエスト数が閾値に達しているならば、受信したリクエストをバッファに一時蓄積するステップと、応答待ちリクエスト数が閾値を下回るまで前記バッファからのリクエストの送信を待ち合わせるステップと、応答待ちリクエスト数が閾値未満の場合は、前記バッファからリクエストを1つ選択して取り出し、応答待ちリクエスト数を1インクリメントさせた後、サーバに当該リクエストを送信するステップと、受信したレスポンスを、当該レスポンスのリクエストを送信したクライアントに対して返送し、応答待ちリクエスト数を1デクリメントするステップとを有し、前記サーバの実行状況を監視するステップと、前記監視するステップの監視結果に基づいて単位時間あたりに前記サーバが処理したリクエスト数である、現在の応答待ちリクエスト数の閾値に対するスループットを測定するステップと、前記バッファに一時蓄積されているリクエストの数が所定数に達しているか否かを判定するステップと、前記判定するステップの判定結果に基づいて、リクエストの数が所定数に達している場合、現在の応答待ちリクエスト数の閾値に対するスループットを記録し、現在の応答待ちリクエスト数の閾値に対して記録したスループットが当該現在の応答待ちリクエスト数の閾値より小さい閾値に対して記録したスループットを上回る場合には、当該現在の応答待ちリクエスト数の閾値を増加させ、現在の応答待ちリクエスト数の閾値に対して記録したスループットが当該現在の応答待ちリクエスト数の閾値より小さい閾値に対して記録したスループットを下回る場合には、当該現在の応答待ちリクエスト数の閾値を減少させるステップと、を有することを特徴とする負荷制御方法である。例えば、前記閾値は“1”よりも大きな値とする。
また、前記サーバと自己との間のTCPコネクション同時接続数が前記応答待ちリクエスト数の閾値以下となるように自己と前記クライアントとの間のTCPコネクションを集約するステップを有することが望ましい。
本発明によれば、過剰リクエスト受信時におけるサーバの性能低下を回避することができる。この際に、適切な制御のための閾値の設定も自動化することができるため、装置管理者の負担を軽減させることができる。
過剰リクエストによるサーバの処理性能低下を説明するための図。 理想的なスループットの挙動を示す図。 過剰リクエスト時のサーバの振る舞いおよび理想的なサーバへのリクエストの到着の状態を示す図。 本発明によるサーバへのリクエストの到着の状態を示す図。 第一の実施形態の全体構成図。 第一の実施形態の負荷制御装置の処理手順を示すフローチャート。 第一の実施形態のリクエスト受信処理の実行手順を示すフローチャート。 第一の実施形態のレスポンス受信処理の実行手順を示すフローチャート。 RTSPリクエストのメソッド名に基づくクラス分類の一例を示す図。 第二の実施形態の負荷制御装置のブロック構成図。 第二の実施形態のリクエスト受信部の処理手順を示すフローチャート。 リクエスト表を示す図。 第二の実施形態のリクエスト送信部の処理手順を示すフローチャート。 サーバ側ソケット表を示す図。 第二の実施形態のレスポンス受信部の処理手順を示すフローチャート。 第二の実施形態のレスポンス送信部の処理手順を示すフローチャート。 第二の実施形態のスケジューリング部の処理手順を示すフローチャート。 本発明の効果を実証する実験の構成を示す図。 実験のためのサーバおよび負荷制御装置の構成表を示す図。 本発明の効果を示す図。 本発明の応答待ちリクエスト数の閾値を自動調整することの効果を実証する実験のためのサーバおよび負荷制御装置の構成表を示す図。 応答待ちリクエスト数の閾値の設定値に対するスループットの変化を示す図。 本発明の応答待ちリクエスト数の閾値を自動調整することの効果を示す図。 本発明のリクエストの優先制御をすることの効果を示す図。
(第一の実施形態)
本発明の第一の実施形態について図面を参照して説明する。
図5は、本発明の第一の実施形態を示すブロック図である。本発明は、リクエストを発行するクライアント1−1〜1−nと、リクエストに対応するレスポンスを返すサーバ4、および、リクエストおよびレスポンスを仲介する負荷制御装置3とからなる。なお、サーバ4は、Apacheなどのソフトウエアモジュールであってもよく、負荷制御装置3とはCPUやメモリなどの物理リソースが独立であるハードウエアモジュールであってもよい。また、本負荷制御装置3を2つ以上のサーバ4に接続し、1つの負荷制御装置3で、複数のサーバ4に対して負荷制御をしてもよい。さらに、負荷制御装置3は、リバースProxy、Webアクセラレータ、Firewall、負荷分散システムなどの既存技術を拡張して実装してもよい。負荷制御装置3にて、サーバ4に送信済みであるが、まだ、レスポンスが返されていないリクエスト数、すなわち応答待ちリクエスト数を監視する。応答待ちリクエスト数が定められた閾値を超える場合は、受信したリクエストをバッファリングする。そして、応答待ちリクエスト数が閾値を下回るまで、リクエストの送信を見合わせる。
図6に、負荷制御装置3の処理手順を示す。実行が開始されると負荷制御装置3は、まず、メッセージを受信するまで待ち合せる(S1)。ここで、負荷制御装置が受信するメッセージは、リクエストまたはレスポンスの2種類のみとする。メッセージを受信すると(S2)、そのメッセージがリクエストである場合はリクエスト受信処理を起動し(S3)、レスポンスである場合はレスポンス受信処理を起動する(S4)。
リクエスト受信処理の実行手順を図7に示す。リクエストを受信した場合に、負荷制御装置3はそのリクエストをバッファに格納する(S10)。次に、応答待ちリクエスト数が閾値未満であるか否かを判定する(S11)。なお、本実施形態では、応答待ちリクエスト数の閾値は、任意の値が静的に与えられているものとする。閾値以上である場合は(S11)、サーバ4へのリクエストの送信を見合せ、本処理を終了する。閾値未満の場合は(S11)、バッファからリクエストを一つ選択して取り出す(S12)。次に、応答待ちリクエスト数を1インクリメントさせた後(S13)、サーバ4にリクエストを送信する(S14)。
次に、レスポンス受信処理の実行手順を図8に示す。まず、受信したレスポンスを、当該レスポンスのリクエストを送信したクライアントに対して返送する(S20)。次に、応答待ちリクエスト数を1デクリメントする(S21)。そして、バッファ中に送信待ちリクエストが存在するか否かを判定する(S22)。リクエストが存在しない場合は(S22)、当該処理を終了する。リクエストが存在する場合は(S22)、リクエスト受信処理と同様に、リクエストの送信を試みる。すなわち、応答待ちリクエスト数が閾値未満であるか否かを判定する(S23)。閾値以上の場合は(S23)、サーバ4へのリクエストの送信を見合せ、本処理を終了する。閾値未満の場合は(S23)、バッファからリクエストを一つ選択して取り出す(S24)。次に、応答待ちリクエスト数を1インクリメントさせた後(S25)、サーバ4にリクエストを送信する(S26)。
このように、応答待ちリクエスト数が閾値を超える場合には、リクエストの送信を見合わせることで、サーバ4に過剰なリクエストが送信されなくなる。また、閾値を超える場合はリクエストをバッファ中に蓄えることで、瞬時的なリクエスト量の増減を吸収することができる。この結果、サーバ4に対して安定してリクエストを供給することができる。
バッファ中のリクエストの実行順序をスケジューリングするアルゴリズムとして単一のキューを用いてFIFO(First-In First-Out)に基づきリクエストを処理することができる。また、複数のキューを用いてリクエストの重要度や要求品質に応じて優先制御を実施することもできる。この場合は、リクエストは一定のルールに基づき分類され、その結果に応じて優先制御のパラメータ(例えば、優先度、重み、タイムアウト時間)などが設定される。ここで、一定のルールに基づき分類された結果生じるリクエストの集合をクラスと定義する。そしてクラス別にリクエストをキューに格納し、各キュー間のリクエスト取り出し順序を優先制御パラメータに基づきスケジューリングする。このスケジューリングアルゴリズムとして、例えば、最も優先度が高いクラスに属するリクエストから処理するPriority Queuing、クラス毎の重みに基づきレート制御するWaited Fair Queuing、Waited Round Robinなど、既存の優先スケジューリングアルゴリズムを利用できる。また、キューの代わりとして、タイムアウトするまでの時間長が昇順となるようにリクエストを並べる、EDF(Earliest Deadline First)を用いることができる。リクエストの優先制御を行うことで、重要なリクエストや時間制約が厳しいリクエストを優先的にサーバ4で処理させることが可能になる。
また、バッファにリクエストを格納する際に、バッファ中のリクエスト数が格納可能な最大数に達している場合がある。この場合は、バッファ中のいずれかのリクエストを選択し、以下のいずれかを実行する。
・廃棄:リクエストを廃棄する。
・拒絶:サーバ4へのリクエスト送信を取りやめる。そして、負荷制御装置3からビジーメッセージなどをクライアント1−1〜1−nに送信する。リクエストの廃棄と異なり、リクエストが失敗した原因がリクエスト集中であることをクライアント1−1〜1−nに明示できる。
・転送:過負荷時用の待機サーバにリクエストを転送する。これにより、負荷が集中しているサーバ4に代わって、待機サーバが当該リクエストを処理できる。
また、バッファ中の各リクエストにタイムアウトを設定することもできる。タイムアウトに達したリクエストを検出した場合にも、バッファ中のリクエスト数が格納可能な最大数に達した場合と同様の処理を実施できる。
リクエストの優先制御を実施する場合には、リクエストを一定ルールに基づきクラスに分類し、クラス毎に設定された優先度、重み、タイムアウト時間などのパラメータに基づきスケジューリングする。Webサービスを効果的に提供するためには、以下に示すルールに基づき、リクエストが属するクラスを分類すればよい。なお、これらの実施例のいずれかのみを用いることも、複数の実施例を組み合わせてクラスを分類することも可能である。
・クライアント識別情報に基づくクラス分類
・リクエストの内容に基づくクラス分類
・暗号化の有無に基づくクラス分類
・ページ処理の進行状況に基づくクラス分類
・セッション処理の進行状況に基づくクラス分類
・不正の疑わしさに基づくクラス分類
(クライアント識別情報に基づくクラス分類)
リクエストの送信元クライアントに応じてクラス分類する。以下に実施例を示す。
・送信元IPアドレスに基づくクラス分類:リクエストを送信するプロトコルとしてTCP/IPを用いる場合には、クライアントを送信元IPアドレスから識別できる。故に、送信元IPアドレスに基づいてキューを選択することで、特定のクライアントからのリクエストを優先化または非優先化することができる。
例えば、負荷制御装置に管理者のホストのIPアドレスを予め登録しておく。次に、負荷制御装置がリクエストを受信すると、登録されているホストからのリクエストであるならば高優先なクラスに格納する。これにより、管理者によるサーバへのアクセスを保護することができる。
・User−Agentフィールドに基づくクラス分類:サーバがWebサーバである場合は、クライアントはHTTPプロトコルに基づきリクエストのヘッダにUser−Agentフィールドを含めることができる。
User−Agentフィールドには、リクエストを発行したクライアントアプリケーションの情報が格納される。故に、負荷制御装置において、受信したリクエストのUser−Agentの種類に応じてクラスに分類することで、当該Webサービス専用のブラウザを利用するクライアントからのリクエストを優先化したり、また、検索ロボットなどによって機械的に発行されたリクエストを非優先化したりすることができる。
・ユーザIDに基づくクラス分類:Webサーバは、クライアントを識別するため、クライアントに応じてユーザIDを発行し、クライアントに発行したユーザIDをHTTPリクエスト中に含ませるように指示できる。このユーザIDは、Cookieフィールド、URLのクエリ、リクエストのボディにユーザIDを含ませることができる。したがって、負荷制御装置において、予め優先化(または非優先化)したいクライアントのユーザIDを登録しておく。次に、HTTPリクエストに含まれるユーザIDと登録されているユーザIDとが一致するか否かに応じてクラスを選択する。これにより、例えば、追加料金を払っているクライアントからのリクエストを優先化したり、逆に、ブラックリストに載っているクライアントからのリクエストを非優先化させたりできる。
(リクエストの内容に基づくクラス分類)
リクエスト中のヘッダまたはコンテンツの任意の位置(HTTPリクエストである場合は、例えばリクエスト行、各フィールドなど)に任意のパターンと一致するか否か、リクエスト中の任意の変数が閾値を超えているか否かに応じて、リクエストを格納するクラスを選択する。HTTPプロトコルを用いた場合の実施例を以下に列挙する。なお、以下の実施例ではパターンを“”中に正規表現で記述している。
・メソッドに基づくクラス分類:HTTPでは、リソースに対する操作内容に応じて、複数のメソッドが用意される。例えば、リソースの取得にはGETメソッドが利用され、サーバへのデータ送信には、POSTメソッドが用いられる。オンラインショッピングや個人情報の更新などの重要な処理では、ユーザが入力した情報をサーバに送信することが必要となるため、GETメソッドではなくPOSTメソッドが用いられる。ここで、HTTPでは、メソッド名はリクエスト中のリクエスト行で指定する。故に、リクエスト行のメソッド名がパターン“POST”と一致するリクエストを高優先なクラスに分類することで、重要度が高いリクエストを優先処理することができる。
・ファイルの種別に基づくクラス分類:動的コンテンツのような負荷が高い処理へのリクエストを非優先化したい場合がある。動的コンテンツであるか静的コンテンツであるかは、リクエストされるファイル名から識別できる。例えば、動的コンテンツとしてCGIを用いる場合は、そのリクエストするファイル名の接尾語は.cgiとなる。故に、CGIを非優先化する場合は、リクエストのURLがパターン“.cgi”と一致するファイルへのリクエストを低優先なクラスに分類すればよい。
・ファイルサイズに基づくクラス分類:非常に大きいサイズのファイルのアップロードを試みるようなリクエストを非優先化したい場合は、HTTPヘッダのリクエストサイズを表すContent−Lengthフィールドの値に閾値を設定し、閾値を超えるリクエストの低優先なクラスに分類すればよい。
(暗号化の有無に基づくクラス分類)
リクエストが暗号化されているか否かに応じて、リクエストのクラスを選択する。一般的に、暗号化して送信されたリクエストは、暗号化しないで送信されたリクエストより重要な情報が含まれる。そこで、暗号化されているリクエストを、高優先なクラスに分類することで、重要リクエストを保護できる。例えば、Webサービスでは、リクエストの送信方法として、暗号化しないHTTP通信、暗号化するHTTPS通信のいずれかを選択できる。
このとき、HTTP通信、HTTPS通信であるかは、TCPコネクションの接続先ポート番号によって識別できる。故に、暗号化されたリクエストを優先化する場合は、HTTPS通信用のポートに接続するTCPコネクションから送信されたリクエストを高優先なクラスに分類すればよい。
(ページ処理の進行状況に基づくクラス分類)
Webサービスでは、クライアントのブラウザが1ページを表示するまでに複数のリクエストが必要となる場合がある。1つのページを表示するためのリクエストの繰り返しを、本明細書ではページ処理と呼ぶ。ページ処理の基本的な進行手順は以下のとおりである。まず、クライアントはブラウザに対して取得したいページのルートとなるリソース(以下、ページルートリソース)のURLを入力する。次に、ブラウザは、入力されたURLに基づき、Webサーバに対してリクエストを送信し、ページルートリソースを取得する。
このとき、ページルートリソースにはページ表示に必要となる他のリソースのURLが指し示される。次に、ブラウザは、指し示されるURLに対して自動的にリクエストを発行する。以上を、ページ表示に必要な全リソースを取得するまで再帰的に繰り返す。ページ処理の進行に基づくクラス分類の実施例を以下に示す。
・URLに基づくクラス分類:ページの表示には不可欠なリソースに対するリクエストを優先処理することで、サーバ混雑時において、必要最小限のページ構成でより多くのクライアントにサービスを提供することができる。例えば、Webサーバにおいて、ページ表示に不可欠なリソースとそうでないリソースとをWebサーバの異なるディレクトリに保管しておく。そして、負荷制御装置において、前述した「リクエストの内容に基づくクラス分類」を用いて、ページ表示に不可欠なリソースが保管されるディレクトリの配下のリソースに対するリクエストを優先度が高いクラスに分類すればよい。
・ページルートリソースへのリクエストであるか否かに基づくクラス分類:ページルートリソースへのリクエストを低優先なクラスに分類することで、既に継続中のページ処理を優先的に処理する。これにより、サーバ混雑時にページ処理中のリクエストが途中失敗し、クライアントのブラウザ上に不完全なページが表示される、という問題を解消できる。特に、バッファ中のリクエストをスケジューリングするアルゴリズムとして前述したPriority Queuingを用いる場合には、ページ処理中のリクエストがバッファにある限り、ページルートリソースへのリクエストが処理されない。故に、サーバ混雑時に新規ページ処理の開始を効果的にブロッキングすることができる。
ページルートリソースへのリクエストを低優先化するための手法は以下のとおりである。
・TCPコネクションの最初のリクエストであるか否か:HTTP1.1では、1つのTCPコネクションで複数のリクエスト・レスポンスを送受信することができる。このため、ページ表示のためブラウザが自動的にリクエストを送信する場合には、通常、ページルートリソースへの取得に用いられたTCPコネクションが再利用される。
したがって、TCPコネクションが接続されてから2つ目以降のリクエストを高優先なクラスに分類することで、継続中のページ処理を保護することができる。また、ブラウザが同じサーバに対して複数のコネクションを接続し、ページ表示に必要なリソースを複数コネクションで並列に受信することもできる。故に、TCPコネクションが接続されてから最初のリクエストであっても、同一のクライアントから既にサーバ(または負荷制御装置)に接続されたTCPコネクションが存在するならば、そのリクエストを例外的に高優先なクラスに分類してもよい。
負荷制御装置における具体的な実行手順は以下のとおりである。
1)サーバからレスポンスを受信すると、返送先となるクライアントの識別情報を表(クライアント識別情報表)に追加する。既に、表中に当該クライアントの識別情報が存在する場合は、当該ステップを省略してよい。
2)リクエストを受信すると、クライアント識別情報表を参照する。
3)表中に当該リクエストの送信元であるクライアントの識別情報がある場合は、当該リクエストを高優先なクラスに分類する。一方で、表中にない場合は、当該リクエストを低優先なクラスに分類する。
4)同一クライアントから接続されるTCPコネクションが全て切断されると、そのクライアントの識別情報をクライアント識別情報表から削除する。
・ページルートリソースのURLの登録:予めページルートリソースのURLの一覧表を負荷制御装置に登録しておく。そして、前述した「リクエストの内容に基づくクラス分類」を用いてクラスを分類する。すなわち、負荷制御装置は、リクエストを受け取ると、まず、リクエストのURLと表中のURLとを比較する。そして、当該リクエストのURLがページルートリソースのURLと一致するならば、当該リクエストを低優先なクラスに分類する。
・URLのキャッシュ:サーバから返送されたレスポンス中にブラウザが自動的に取得すべきリソースのURLが指し示されていた場合は、そのURLを一定時間キャッシュし、当該URLに対するリクエストを優先化する。HTTPプロトコルでは、HTMLファイルのSrcタグになどによって、ブラウザが自動的に取得すべきURLが指し示される。したがって、負荷制御装置における実行手順は以下のようになる。
1)レスポンスのファイルタイプがHTMLファイルである場合は、コンテンツ中にパターン“Src=”と一致する文字列を検索する。
2)パターン“Src=”と一致する文字列が存在する場合は、次に、パターン“Src=”に続くURLを抽出する。
3)抽出したURLとレスポンス送信先のクライアント識別情報との組を一定期間キャッシュする。
4)前述した「送信元クライアント識別情報に基づくクラス分類」「リクエストの内容に基づくクラス分類」を併用して、キャッシュされているクライアントからキャッシュされているURLに対するリクエストを受け取った場合に、そのリクエストを高優先なクラスに分類する。
(セッション処理の進行状況に基づくクラス分類)
Webサービスでは、複数ページに跨がって閲覧または情報入力することで、初めて1つのサービスが完了する場合がある。例えば、オンラインショッピングでは、購入すべき商品の選択あるいはクライアント情報の入力などをし、最後に購入内容の確認をすることで、初めて購入手続きが完了する。本明細書では、完了までに複数ページを要するサービスにおいて、クライアントが先頭ページを取得してから最後のページを取得完了するまでをセッションと呼ぶ。
セッションは、金品や取引や、個人情報の更新など、重要な処理を行う場合に用いられる。しかし、サーバが混雑すると、セッションがほとんど完了しなくなる、という問題がある。これは、サーバ上で並列処理されるセッションの数が増加すると、セッション間でサーバリソースが競合し、途中失敗するセッションが増加するためである。したがって、負荷制御装置において、サーバ混雑時においても高いセッションスループットを維持できるよう、リクエストが属するセッションの進行状況に基づきクラスを分類する。
セッション処理を行う場合には、Webサーバは、受信したリクエストがどのセッションに属するかを識別する必要がある。このため、セッション処理では、セッションIDなどのセッション識別情報が用いられる。例えば、Webサーバは、セッションの先頭ページに対するリクエストを受け取ると、セッション毎に一意なセッションIDを発行し、レスポンスと共にクライアントに返送する。典型的なWebサーバでは、セッションIDをHTTPレスポンスのSet−Cookieフィールドに格納する。次に、クライアントはサーバから通知されたセッションIDをリクエストに含めてサーバに送信する。このときセッションIDは、セッションIDがレスポンスのSet−Cookieフィールドによって通知された場合に、リクエストのCookieフィールドに格納される。Webサーバは、リクエスト中のセッションIDによって、そのリクエストが属するセッションを識別できる。
また、前述したように、ストリーミングサーバで用いられるRTSPは、セッションの概念を標準で備えている。すなわち、SETUPリクエストによってセッションが開始されると、セッションIDが発行され、以降のリクエスト・レスポンスに付与される。RTSPでは、セッションIDをRTSPヘッダのSessionフィールドに格納する。
本実施例の負荷制御装置では、まず、リクエスト中のセッションIDをキーとして、当該リクエストが属するセッションの進行状況を評価する。例えば、既に開始済みのセッションに属するリクエストを一律に優先化する場合は、HTTPプロトコルならばリクエスト中のCookieフィールドなどを、RTSPプロトコルならばリクエスト中のSessionフィールドの有無を検査し、セッションIDがリクエストに含まれるか否かを判定する。そして、セッションIDを含むリクエストを高優先なクラスに分類する。これにより、開始済みセッションを優先的にサーバで処理することができる。特に、バッファ中のリクエストをスケジューリングするアルゴリズムとして前述したPriority Queuingを用いる場合には、継続中の開始済みセッションに属するリクエストがバッファにある限り、新規セッションの開始を要求するリクエストが処理されない。故に、サーバ混雑時に新規セッション処理の開始を効果的にブロッキングすることができる。
さらに、悪意のあるクライアントによる不正なセッションID使用を回避するため、セッションIDの有効性を検証することもできる。負荷制御装置における実行手順を示す。
1)サーバからのレスポンスを検査し、HTTPプロトコルならばSet−Cookieフィールドなどを、RTSPプロトコルならばSessionフィールドを調べ、セッションIDが新しく発行されているか否かを判定する。
2)新しくセッションIDが発行されている場合は、当該セッションIDを一定期間、キャッシュする。
3)負荷制御装置が受け取ったリクエストにセッションIDが含まれているか否かを検証する。
4)リクエストにセッションIDが含まれている場合は、キャッシュしたセッションIDのいずれかと一致するか否か検証する。
5)いずれのセッションIDとも一致しない場合は、当該リクエストのセッションIDは無効であり、当該リクエストを高優先なクラスに分類する必要はない。
なお、キャッシュからセッションIDが漏れることへの対策として、リクエストが持つセッションIDがキャッシュに存在しなかった場合、サーバにてそのリクエストが処理された時点で、そのリクエストが持っていたセッションIDをキャッシュに再登録してもよい。
キャッシュするセッション識別情報として、リクエストの送信元IPアドレス、ユーザIDなどのクライアント識別情報を用いてもよい。例えば、セッションIDの代わりとして、サーバでリクエストが処理されたクライアントのIPアドレスをキャッシュしておくことで、送信元IPアドレス単位で開始済みセッションを優先化する。本手法の実施例を以下に示す。
1)負荷制御装置がサーバから受け取ったレスポンスの送信先クライアントのIPアドレスを、一定期間、キャッシュする。
2)負荷制御装置が受け取ったリクエストの送信元IPアドレスが、キャッシュしているセッションIDのいずれかと一致するか否か検証する。一致する場合は、サーバでの処理開始が承認されているクライアントからのリクエストとみなし、当該リクエストを高優先なクラスに分類する。
セッションIDを用いる場合と比較すると、本手法では優先化する必要がないセッションまで優先化する可能性がある、という欠点がある。例えば、複数のクライアントが同じProxyを介して負荷制御装置にアクセスする場合に、負荷制御装置が受け取るリクエストの送信元IPアドレスは、全てProxyのIPアドレスとなる。
このため、同じProxyにアクセスしているクライアントのいずれかで処理が開始されている場合には、他のクライアントからのリクエストも全て高優先なクラスに分類されることになる。一方で、送信元IPアドレスを用いることの利点として、計算コストが小さいこと、設定が容易であること、が挙げられる。
セッション識別情報のキャッシュを、前述したページ処理の進行状況に基づくクラス分類における「ページルートリソースへのリクエストであるか否かに基づくクラス分類」にも応用できる。すなわち、ページ処理は、1ページで完結する特殊なセッション処理とみなせる。ゆえに、セッション識別情報をキャッシュしておく期間を、1つのページ処理の完了に要する時間(典型的には数秒)に制限する。これにより、クライアントが新しいページにアクセスする前に、キャッシュ中のセッション識別情報が消去される。その結果、新しいページのページルートリソースへのリクエストは、キャッシュにセッション識別情報が存在しないため、低優先なクラスに分類される。そして、そのページルートリソースへのリクエストがサーバで処理された時点で、セッション識別情報をキャッシュに再登録することで、ページ表示に必要な残りのリソースへのリクエストを高優先なクラスに分類することができる。
セッションの進行状況を、セッションIDではなく、リクエストのURLに基づいて評価してもよい。例えば、Webサーバにおいて、セッションを構成する各ページのリソースを、予めページ毎に異なるディレクトリに保管しておく。これにより、リクエストのURLに示されるディレクトリによって、リクエストが要求するリソースが属するページを識別できる。したがって、負荷制御装置において、前述した「リクエストの内容に基づくクラス分類」を用いることで、リクエストを、要求されたリソースが属するページ毎にクラス分類できる。このとき、セッション開始に近いページほど、その優先度を低く設定しておく。
サーバが、RTSPに基づくストリーミングサーバである場合は、セッションの進行状況を、リクエストのメソッドに基づいて評価してもよい。前述したように、RTSPでは、ストリームの制御内容に応じ、SETUP、PLAY、TEARDOWNなどのメソッドが用意されている。これらのメソッドは、セッション確立以前に用いられるもの、セッション確立後に用いられるものに分類できる。
したがって、セッション確立後に使用されるメソッドのリクエストを、優先度が高いクラスに分類することで、確立済みのセッションを優先化することが可能となる。図9に、RTSPで使用されるメソッドとその分類先クラスの設定例を示す。
(不正アクセスの疑わしさに基づくクラス分類)
悪意のあるクライアントによる不正アクセスによってサーバの計算リソースが占有されることがある。この問題を回避するため、本実施例の負荷制御装置に、不正アクセスが疑われるトラヒックを検知する侵入検知機能を併用し、不正アクセスの可能性が高いと判定されたリクエストを優先度が低いクラスに分類してもよい。さらに、「クライアント識別情報に基づくクラス分類」と連携し、不正アクセスの可能性が高いと判定されたトラヒックを送信したクライアントを一定期間非優先化することもできる。すなわち、
1)負荷制御装置において、受信中のトラヒックが不正アクセスである可能性を評価する。
2)不正アクセスの可能性が高いと判定されたトラヒックの送信元識別情報を一定期間記録する。
3)リクエストを受け取ると、そのクライアントの識別情報が記録された識別情報と一致するか判定する。
4)一致する場合は、低優先クラスに分類する。
また、侵入検知機能は、負荷制御装置と既存の侵入検知装置(IDS:IntrusionDiction System)などと接続することで、負荷制御装置の外部装置として実現してもよい。この場合は、侵入検知装置から負荷制御装置に、不正アクセスに関する情報、すなわち、不正アクセスの種類や送信元となるクライアント識別情報をアラートとし送信する。負荷制御装置にてアラートに基づき、リクエストの優先制御を実施する。
このように、不正アクセスが疑われるリクエストを低優先クラスに分類することで、サーバ混雑時に、正常である可能性が高いリクエストから優先的に処理することが可能である。同様の不正アクセスを規制する装置として侵入防御システムがある。侵入防御システムでは、不正アクセスと判定されたトラヒックを即時的に廃棄する。このため、正常なリクエストを誤って不正と判定することによって、正常リクエストを誤って規制する、誤規制の問題がある。しかし、本発明では、サーバが混雑しない限り、不正が疑われるリクエストもサーバ上で処理されるため、侵入防御システムにおける誤規制の問題を緩和できる。
第一実施例では、応答待ちリクエスト数の閾値を静的に与えている。しかし、前述したように、人手による応答待ちリクエスト数の閾値設定は、負荷制御装置3の管理者に大きな負担をかける。そこで、第一実施例を拡張し、a)サーバ4の処理性能を最大限に引き出すことができ、かつb)応答時間が許容範囲に収まるように、応答待ちリクエスト数の閾値を動的に設定できるようにする。
応答待ちリクエスト数の閾値を自動調整するための実施例を列挙する。
(自動調整の実施例1)
バッファで待機している(平均)リクエスト数N、および、負荷制御装置3がリクエストをサーバ4に送信してからレスポンスを受け取るまでの(平均)応答時間Tを定期的に測定する。また、N、Tに対する閾値として、LN、LTを定めておく。このとき、N<LNならば、リクエスト量が少ないため、応答待ちリクエスト数がその閾値に達していないとみなす。また、T<LTならば、良好な応答が返ってきているとみなす。故に、
・T≧LTならば、応答待ちリクエスト数の閾値を減少させる。
・T<LT
−N≧LNならば、応答待ちリクエスト数の閾値を増加させる。
−N<LNならば、応答待ちリクエスト数の閾値を変化させない。
(自動調整の実施例2)
バッファで待機している(平均)リクエスト数N、および、負荷制御装置3がリクエストをサーバ4に返信してからレスポンスを受け取るまでの応答時間Tを定期的に測定する。また、N、Tに対する閾値として、LN、LTを定めておく。さらに、T>LTとなったリクエストの割合をrとする。このとき、定数k(0≦k≦1)を用いて、
・r≧kならば、応答待ちリクエスト数の閾値を減少させる。
・r<k
−N≧LNならば、応答待ちリクエスト数の閾値を増加させる。
−N<LNならば、応答待ちリクエスト数の閾値を変化させない。
(自動調整の実施例3)
バッファで待機している(平均)リクエスト数N、および、サーバ4のCPU使用率Uを定期的に測定する。また、N、Lに対する閾値として、LN、LUを定めておく。
・U≧LUならば、応答待ちリクエスト数の閾値を減少させる。
・U<LU
−N≧LNならば、応答待ちリクエスト数の閾値を増加させる。
−N<LNならば、応答待ちリクエスト数の閾値を変化させない。
CPU使用率のみでなく、メモリ使用率、帯域、並列度を監視し、その最大値をUとしてもよい。
(自動調整の実施例4)
定期的にバッファで待機している(平均)リクエスト数N、および、サーバ4が単位時間あたりに処理できたリクエスト数であるスループットTを測定する。また、現在の応答待ちリクエスト数の閾値をRとする。また、応答待ちリクエスト数の閾値R毎にスループットを記録できるようにする。
ここで、応答待ちリクエスト数の閾値Rに対するスループットをT[R]と表記する。また、バッファ中のリクエスト数Nに対する閾値として、LNを定めておく。このとき、測定されたNおよびTに応じて、以下を実施する。
1)N<LNならば、応答待ちリクエスト数が閾値に達していないことを意味する。故に、応答待ちリクエスト数の閾値を更新しないで終了する。N≧LNならば、2)を実施する。
2)現在の応答待ちリクエスト数の閾値に対するスループットT[R]を、Tを用いて更新する。次に3)を実施する。
3)現在の応答待ちリクエスト数の閾値Rに対するスループットT[R]と、閾値がより小さい場合のスループットT[R’](R’<R)とを比較する。
A)T[R]≧k1×T[R’]の場合:応答待ちリクエスト数の閾値の増加によって、スループットの向上が得られていることを意味する。故に、さらに応答待ちリクエスト数の閾値を増加させる。ここで、k1は定数であり、k1≧1.0。
B)T[R]≦k2×T[R’]の場合:応答待ちリクエスト数の閾値の増加によってスループットが減少していることを意味する。故に、応答待ちリクエスト数の閾値を減少させる。ここで、k2は定数であり、k2≦1.0。
C)上記以外の場合は、応答待ちリクエスト数の閾値を変化させない。
本発明では、バッファ中の待機リクエスト数に基づき、応答待ちリクエスト数がその閾値に達しているかを判定している。そして、応答待ちリクエスト数がその閾値に達していると判定された場合に、応答待ちリクエスト数の閾値を増加させるべきか否かを判定している。
これにより、サーバ4に負荷が十分にかかっていない状態において、応答待ちリクエスト数の閾値が無制限に増加してしまう問題を解消している。なお、上記実施例では、N<LN、すなわち応答待ちリクエスト数がその閾値に達していない場合に、応答待ちリクエスト数の閾値を変化させていない。しかし、N<LNの場合に、応答待ちリクエスト数の閾値を減少させてもよい。
上記の実施例において、応答待ちリクエスト数の閾値の最大値と最小値とを定めておき、修正後の応答待ちリクエストの閾値がその範囲外となる場合は、その修正を実施しないようにしてもよい。
(第二の実施形態)
次に、第二の実施形態として、リクエストおよびレスポンスを送受信するプロトコルとして、インターネットで広く利用されるTCP/IP(Transfer Control Protocol/Internet Protocol)を用いる場合について示す。図10は、本発明の第二の実施形態を示すブロック図である。本実施形態は、リクエストを発行するクライアント1−1〜1−nと、リクエストに対応するレスポンスを返すサーバ4、および、リクエスト・レスポンスを仲介する負荷制御装置3とからなる。負荷制御装置3は、リバースProxy、Webアクセラレータ、Firewall、負荷分散システムなどの既存技術を拡張して実装してもよい。
本実施形態の負荷制御システムは、次の7つの機能ブロックから構成される。
・リクエスト受信部30
・リクエスト送信部32
・レスポンス受信部34
・レスポンス送信部33
・スケジューリング部31
リクエスト受信部30は、クライアント1−1〜1−nから受信したリクエストをスケジューリング部31に送信する。リクエスト受信部30の処理手順を図11に示す。まず、クライアント1−1〜1−nからのTCPコネクションが新規に確立されると(S30)、クライアント1−1〜1−nと負荷制御装置3との間でリクエストおよびレスポンスを送受信するためのソケットを生成する(S31)。このとき、生成されたソケットには、ソケットを一意に識別するID(ソケットID)が振られる。
次に、クライアント側ソケットを一つ選択し(S32)、そのクライアント側ソケットを検査する(S33)。検査した結果、ソケットに新規リクエストが含まれている場合には(S34)、各ソケットからリクエストを読み出すリクエスト受信処理を行う(S35)。リクエストを読み出すたび、各リクエストにリクエストを一意に識別するリクエストIDが振られる。
次に、リクエストとクライアント側のソケットとの対応関係を維持するため、図12に示すリクエスト表に、リクエストIDおよびソケットIDの組を登録しておく(S36)。最後に、受信したリクエストはスケジューリング部31に送信される(S37)。
また、クライアント側ソケットを検査した結果(S33)、そのソケットに新規リクエストが含まれていない場合には(S34)、次のクライアント側ソケットを一つ選択(S32)して処理(S33〜S37)を繰り返す(S38)。
さらに、リクエストの読み出しと並行し、タイムアウトなどの要因によってTCPコネクションが切断されたか否かを検査する(S39)。コネクションが切断されている場合には、そのソケットを廃棄する(S40)。
リクエスト送信部32は、リクエストを負荷制御装置3からサーバ4に送信するためのソケットの管理、および、リクエストの送信処理を行う。リクエスト送信部32の処理手順を図13に示す。リクエスト送信部32は、スケジューリング部31から新規送信リクエストを受け取ると(S50)、図14に示されるサーバ側ソケット表を参照し、送信先のサーバ4との間にフリー状態のソケットが存在するか否かを検索する(S51)。ここで、フリー状態のソケットとは、負荷制御装置3と送信先のサーバ4との間でTCPコネクションが確立されており、かつ、これまでにサーバ4に対して送信されたリクエストに対応するレスポンスを全て受信しているソケットを指す。
フリー状態のソケットを検出した場合は(S52)、そのソケットをリクエスト送信用ソケットとして選択する。フリー状態のソケットが存在しない場合は(S52)、送信先のサーバ4と新規にTCPコネクションを確立し、リクエスト送信用ソケットを生成する(S53)。このとき、ソケットは一意のIDが割当てられる。そして、サーバ側ソケット表に、生成したソケットのIDを登録し(S54)、その状態をフリーとする。フリー状態のソケットを選択すると、次に、サーバ側ソケット表に当該リクエストIDを登録する(S56)。このとき、ソケットの状態はフリーからビジーに変更される(S55)。最後に、サーバ4に対してリクエストを送信する(S57)。
また、リクエスト送信部32は、タイムアウトなどによって切断されたTCPコネクションが有るか否かを常時監視して検出する(S58)。切断されたTCPコネクションを検出した場合は(S59)、対応するソケットを廃棄し(S60)、サーバ側ソケット表から削除する(S61)。
本実施形態のように、本発明は、リクエスト送信時に、その送信元クライアントに関わらず、フリー状態のソケットを再利用する(コネクション集約)。コネクション集約により、負荷制御装置3側において、サーバ4と負荷制御装置3との間のTCPコネクション数がクライアント数を超えないように調整することができる。よって、サーバ側ソケット数が応答待ちリクエスト数の閾値を超えることがない。故に、応答待ちリクエスト数の閾値がTCPコネクション数の制限より小さいならば、リクエスト送信がTCPコネクション数の制限によってブロックされることがなくなる。
図13の実施例では、1つのソケットが同時にサーバ4に送信できるリクエスト数を1としている。しかし、レスポンスの返却を待たずに、1つのソケットで複数のリクエストを連続送信してもよい。1つのソケットから複数のリクエストを連続的にサーバ4に送信することで、ソケットの生成または廃棄オーバヘッドを軽減できる。
レスポンス受信部34の処理手順を図15に示す。レスポンス受信部34は、サーバ4から返送されたレスポンスを受信する(S70)。次に、サーバ側ソケット表を参照し、レスポンスを受信したサーバ側ソケットを選択する(S71)。次に、レスポンスを読み込み(S72)、サーバ側ソケット表のIDから対応するリクエストIDを取得する(S73)。そして、受信したレスポンスIDとして、対応するリクエストと同じIDを割当てる。次に、レスポンスをスケジューリング部31、レスポンス送信部33に送信する(S74)。最後に、当該ソケットから次のリクエストを送信できるように、ソケットの状態をビジーからフリーに変更する(S75)。
レスポンス送信部33の処理手順を図16に示す。レスポンス送信部33では、レスポンスを受け取ると(S80)、そのレスポンスID(リクエストIDと一致する)を基にリクエスト表を参照し、レスポンスを送信すべきクライアントと接続されているクライアント側ソケットIDを取得(S81)してクライアント側ソケットを選択する。次に、ソケットにレスポンスを書き込むことでそのレスポンスをクライアントに返送する(S82)。
スケジューリング部31では、第一の実施形態と同様に、受信したリクエストをバッファにバッファリングする。そして、応答待ちリクエスト数が閾値を下回っている場合には、バッファに格納されているリクエストを選択し、サーバ4に対して送信する。
スケジューリング部31の処理手順を図17に示す。リクエスト受信した場合は、まず、リクエストをバッファに格納する(S90)。次に、バッファ中に送信待ちリクエストが存在するか否かを判定する(S91)。送信待ちリクエストが存在する場合は、現在の応答待ちリクエスト数がその閾値を超えているか否かを判定する(S92)。閾値以上である場合は当該処理を終了する。送信中リクエスト数が閾値未満である場合は、応答待ちリクエスト数を1増加させる(S93)。次に、バッファからリクエストを一つ取り出し、リクエスト送信部32に対して送信する(S94)。
一方で、レスポンスを受信した場合は、次のリクエストを送信できるように応答待ちリクエスト数を1減じる(S95)。その後の処理は、リクエスト受信時と同様に、図17のステップS91「リクエストがバッファに存在?」以降を実行する。
上述した実施例では、サーバ台数は1台としているが、複数のサーバを用いてもよい。複数サーバを用いる場合は、スケジューリング部31、レスポンス送信部33、レスポンス受信部34を、サーバ台数分複製する。そして、リクエスト受信部30において、宛先にしたがって各サーバ用の各処理部にリクエストを振り分ければよい。
本発明の効果を示すため、本発明の負荷制御装置3をPC(パーソナル・コンピュータ)上に実装し、実験的に評価する。評価は、クライアント1−1〜1−nからのサーバ4への入力リクエストレート(request per second:rps)を変化させた場合のWebサーバのスループット(rps)を、本発明の負荷制御装置3が有る場合と無い場合とで比較する。
実験の構成を図18に示す。図18に示すように、クライアント1−1〜1−nとサーバ4(Webサーバ)とは、L2スイッチ5および負荷制御装置3を介して通信をする。サーバ4と負荷制御装置3との間および負荷制御装置3とL2スイッチ5との間のネットワーク(図示省略)の帯域は1Gbpsである。一方、クライアント1−1〜1−nとL2スイッチ5との間のネットワーク(図示省略)の帯域は100Mbpsである。ここで、サーバ4および負荷制御装置3の構成を図19に示す。本実験では、負荷制御装置3の応答待ちリクエスト数の閾値を“10”で固定している。
従来の負荷制御手法と比較するため、サーバ4が同時に接続可能なTCPコネクション数の上限を150に設定しておく。また、クライアント1−1〜1−nがリクエストを送信してから受信するまでのタイムアウト時間を10秒に設定する。タイムアウトに達すると、クライアント1−1〜1−nはTCPコネクションを切断し、当該リクエストをキャンセルする。
図20に実験結果を示す。図20は横軸に入力リクエストレートをとり、縦軸にスループットをとる。図20はクライアント1−1〜1−nからの入力リクエストレート(rps)に対するサーバ4のスループット(rps)の変化を示している。図20中の「本発明」は、負荷制御装置3が有る場合の結果を示し、「従来手法」は、負荷制御装置3を介さずにサーバ4とクライアント1−1〜1−nを接続した場合の結果を示している。
図20から、入力リクエストレートが100rps以下ならば、負荷制御装置3の有無に関わらず、サーバ4のスループットは入力リクエストレートに比例して増加する。しかし、入力リクエストレートが100rpsを超えると、負荷制御装置3がない場合では、スループットの低下が顕著に生じる。例えば、入力レートが200rpsにおけるスループットはピーク時の約60%となる。
一方で、本発明の負荷制御装置3を用いると、入力リクエストレートが100rpsより増加しても、そのスループットをピーク時の90%以上に維持できている。以上の結果は、本発明による負荷制御装置3の有効性を実証するものといえる。
次に、応答待ちリクエスト数の閾値を自動調整することによる効果を示す。本評価では図18と同様の構成を用いる。また、本評価におけるサーバ4および負荷制御装置3の詳細を図21に示す。本評価では、Webアプリケーションとして、オンラインショッピングを想定し、ベンチマークソフトウェアSPEC WEB2005 Ecommerceを用いている(例えば、http://www.spec.org参照)。このWebアプリケーションでは、ショッピングを完了するまでにおよそ13ページを必要とする。またクライアントPC上に現実のクライアントの動作をエミュレートするプログラムを実行する。
クライアントプログラムでは、自動的にWebサーバにアクセスし、セッションの実行を試みる。このとき、クライアントプログラムの振る舞いは、現実のクライアントと同様に、一つのページを取得してから次のページに移動するまでの思考時間、ページ読み込みのタイムアウトを考慮する。タイムアウトした場合は、再度、当該ページの取得を試みる。また一定の確率で、前のページに後戻りしたり、セッション途中中断したりする。本評価では、まず、サーバ4の最大処理性能を上回る量のリクエストを負荷制御装置3に送信する。次に、サーバ4で単位時間に処理されたリクエスト数であるスループットを、応答待ちリクエスト数の閾値を静的に設定する場合と、本発明に基づき自動調整する場合とで測定して比較する。
まず、応答待ちリクエスト数の閾値を静的に設定する場合を評価する。その評価結果を図22に示す。図22のグラフは、応答待ちリクエスト数の閾値の設定値に対するスループットの変化を示している。すなわち、図22の横軸は、応答待ちリクエスト数の閾値の設定値であり、縦軸はサーバ4のスループット(rps)である。図22のグラフから、サーバ4のスループットは応答待ちリクエスト数の閾値が“2”の場合に671rpsで最大となり、応答待ちリクエスト数の増加に伴って徐々に低下することがわかる。この結果から、仮に、スループットを最大値の97%以上に維持したいと仮定すると、応答待ちリクエスト数の閾値を“2”〜“6”の範囲に設定することが必要となる。
次に、上述した(自動調整の実施例4)を用いて、本発明に基づいて応答待ちリクエスト数の閾値を自動調整した結果を示す。なお、本発明に基づく閾値の自動調整法の有効性を示すため、非特許文献1に示されるページ単位の並列度自動調整法を、応答待ちリクエスト数の閾値の制御に応用した場合の結果を併せて示す。なお、非特許文献1に示される並列度自動調整法は以下のとおりである。まず、定期的にスループットを測定し、並列度を増加させるか減少させるかを決定する。ここで、i回目の測定におけるスループットをTiとする。また、i回目の測定時の並列度をCiとする。このとき、
・Ci>Ci-1かつTi≧Ti-1ならば並列度を増加させる。
・Ci>Ci-1かつTi<Ti-1ならば並列度を減少させる。
・Ci<Ci-1かつTi≧Ti-1ならば並列度を減少させる。
・Ci<Ci-1かつTi<Ti-1ならば並列度を増加させる。
すなわち、前回の測定結果と比較し、スループットの向上が得られているならば前回と同じオペレーション(並列度の増加または減少)を行う。逆に、スループットが減少していたら、前回と逆のオペレーションを施す。
図23のグラフは、応答待ちリクエスト数の閾値の時間的変化を示している。図23の横軸は時間(秒)であり、縦軸は応答待ちリクエスト数の閾値である。図23において、本発明に基づく自動調整法では、応答待ちリクエスト数の閾値が“2”〜“6”の間に収まっている時間が、観測時間の96.9%に達している。加えて、本発明に基づいて自動調整した場合の平均スループットは660rpsであり、これは静的に設定した場合の最大スループットの98%に達している。一方で、図23から、非特許文献1に基づく手法では、応答待ちリクエスト数の閾値が異常増加していることがわかる。非特許文献1による手法でこのような異常増加が生じる要因として以下がある。
(1)非特許文献1に基づく手法では、現在の応答待ちリクエスト数がその閾値に達しているか否かを判定する手段がない。故に、サーバへの入力リクエストレートを徐々に増加させると、応答待ちリクエスト数の閾値に達する前にその閾値が際限なく増加するという問題がある。これに対し、本発明では、キュー中のリクエストが十分な数に達しない限り、応答待ちリクエスト数の閾値を増加させないことで、この問題を回避している。
(2)非特許文献1に基づく手法では、応答待ちリクエスト数の閾値の増減は、前回と今回のスループット計測結果の比較という、局所的なスループットの変化から決定される。このため、スループットが一時的に大きく下がって徐々に回復した場合などで、長期的にはスループットの向上が得られていないにも関わらず応答待ちリクエスト数の閾値が際限なく増加(または減少)するという問題が生じる。これに対して本発明の自動調整の実施例4では、応答待ちリクエスト数の閾値毎にスループットを記録し比較することで、スループットの増加が得られない限り閾値が増加しないように設計されている。また、自動調整の実施例1〜3では、応答時間に閾値を設定することで、応答待ちリクエスト数の閾値が際限なく増加する問題を回避している。
次に、本発明に基づくリクエストの優先制御の効果の一例として、セッションの進行状況に基づくクラス分類の評価結果を示す。すなわち、有効なセッションIDを含むか否かに基づき、リクエストをクラス分類する。そして、Priority Queuingを用いて、有効なセッションIDを含むリクエストを優先的にサーバで処理させる。本評価では図18と同様の構成を用いる。また、本評価におけるサーバ4および負荷制御装置3の詳細は図21と同様である。ただし、負荷制御装置の応答待ちリクエスト数の閾値は静的に10に設定している。以上の条件のもと、Webサーバ上に対してセッション処理を試みるクライアントの数を変化させたときの、Webサーバが単位時間当りに完了できたセッション数(以下、セッションスループット)を、負荷制御装置がある場合とない場合とで比較する。
図24に実験結果を示す。図24の縦軸はクライアントの数であり、横軸はセッションスループットを示している。図24に示されるとおり、400クライアントまでは、負荷制御装置の有無に関わらず、クライアント数に対してサーバのセッションスループットが比例して増加する。しかし、400クライアントを超えると、サーバが過負荷となり、クライアント間でサーバリソースが競合するようになる。この結果、負荷制御装置が無い場合では、各クライアントで等しくタイムアウトや途中中断が生じるようになり、セッションスループットが低下に転じる。そして、800クライアントでセッションが全く完了しなくなる。これに対して、本実施例の負荷制御装置では、より進行しているセッションを優先的に処理する。この結果、Webサーバが過負荷となった状態においても、セッションスループットを最大のまま維持している。以上の結果は、本実施例の負荷制御装置に基づく優先制御の効果を実証するものである。
以上の結果は本発明の有効性を示すものといえる。
本実施例は、汎用の情報処理装置にインストールすることにより、その情報処理装置に、本実施例で説明した負荷制御装置3に相応する機能を実現させるプログラムとして実施することができる。このプログラムは、記録媒体に記録されて汎用の情報処理装置にインストールされ、あるいは通信回線を介して汎用の情報処理装置にインストールされることにより当該汎用の情報処理装置を本実施例で説明した負荷制御装置3に相応する装置とすることができる。
なお、本実施例のプログラムは、汎用の情報処理装置によって直接実行可能なものだけでなく、ハードディスクなどにインストールすることによって実行可能となるものも含む。また、圧縮されたり、暗号化されたりしたものも含む。
本発明によれば、過剰リクエスト受信時におけるサーバの性能低下を回避することができ、また、この際に、適切な制御のための閾値の設定も自動化することができるため装置(ネットワーク)管理者およびネットワーク・ユーザの双方にとって利便性を向上させることができる。

Claims (19)

  1. クライアントとサーバとの間に配置され、前記クライアントから受信したリクエストを前記サーバに送信し、当該リクエストに対して前記サーバから返されるレスポンスを前記クライアントに送信する負荷制御装置において、
    前記サーバに送信済みであるが前記サーバからレスポンスが返されていない応答待ちリクエストの数を制限する手段と、
    前記制限する手段は、
    応答待ちリクエスト数が閾値に達しているならば、受信したリクエストを一時蓄積するバッファと、
    応答待ちリクエスト数が閾値を下回るまで前記バッファからリクエストの送信を待ち合わせる手段と、
    応答待ちリクエスト数が閾値未満の場合は、前記バッファからリクエストを1つ選択して取り出し、応答待ちリクエスト数を1インクリメントさせた後、サーバに当該リクエストを送信する手段と、
    受信したレスポンスを、当該レスポンスのリクエストを送信したクライアントに対して返送し、応答待ちリクエスト数を1デクリメントする手段と、
    を備え、
    前記サーバの実行状況を監視する手段と、
    前記監視する手段の監視結果に基づいて単位時間あたりに前記サーバが処理したリクエスト数である、現在の応答待ちリクエスト数の閾値に対するスループットを測定する手段と、
    前記バッファに一時蓄積されているリクエストの数が所定数に達しているか否かを判定する手段と、
    前記判定する手段の判定結果に基づいて、リクエストの数が所定数に達している場合、現在の応答待ちリクエスト数の閾値に対するスループットを記録し、現在の応答待ちリクエスト数の閾値に対して記録したスループットが当該現在の応答待ちリクエスト数の閾値より小さい閾値に対して記録したスループットを上回る場合には、当該現在の応答待ちリクエスト数の閾値を増加させ、現在の応答待ちリクエスト数の閾値に対して記録したスループットが当該現在の応答待ちリクエスト数の閾値より小さい閾値に対して記録したスループットを下回る場合には、当該現在の応答待ちリクエスト数の閾値を減少させる手段と、
    を備えたことを特徴とする負荷制御装置。
  2. 前記閾値は1よりも大きな値である請求の範囲第1項記載の負荷制御装置。
  3. 前記サーバと自己との間のTCPコネクション同時接続数が前記応答待ちリクエスト数の閾値以下となるように自己と前記クライアントとの間のTCPコネクションを集約する手段を備えた請求の範囲第1項記載の負荷制御装置。
  4. 前記バッファは、送信元クライアントの識別情報に基づきリクエストを優先制御する手段を備えた請求の範囲第1項記載の負荷制御装置。
  5. 前記バッファは、リクエスト中の特定の位置または範囲に特定のパターンが含まれるか否かに基づきリクエストを優先制御する手段を備えた請求の範囲第1項記載の負荷制御装置。
  6. 前記バッファは、リクエスト中の特定の変数が予め設定した閾値より大きいか否かに基づきリクエストを優先制御する手段を備えた請求の範囲第1項記載の負荷制御装置。
  7. 前記バッファは、リクエストが暗号化されているか否かに基づきリクエストを優先制御する手段を備えた請求の範囲第1項記載の負荷制御装置。
  8. 前記バッファは、所定時間以上蓄積されたリクエストに対して、ビジーメッセージを通知する手段を備えた請求の範囲第1項記載の負荷制御装置。
  9. 前記サーバはWebサーバであり、
    前記バッファは、リクエストのページ表示の表示優先度に基づきリクエストを優先制御する手段を備えた請求の範囲第1項記載の負荷制御装置。
  10. 前記リクエストはTCPコネクションによってクライアントから負荷制御装置に送信され、
    前記バッファは、クライアントと負荷制御装置との間に接続された他のTCPコネクションの有無またはTCPコネクションの数および当該リクエストがTCPコネクションの最初のリクエストであるか否かに基づきリクエストを優先制御する手段を備えた請求の範囲第1項記載の負荷制御装置。
  11. レスポンスにブラウザが自動取得すべきページ構成要素のURLが指し示されている場合に、レスポンス送信先の識別情報と当該URLとの組を一時的に記憶する手段を備え、
    前記バッファは、リクエストの送信元の識別情報とURLとの組が、一時記憶されたレスポンス送信先の識別情報とURLとの組と一致するか否かに基づきリクエストを優先制御する手段を備えた請求の範囲第1項記載の負荷制御装置。
  12. 前記リクエストが属するセッションの進行状況に基づきリクエストを優先制御する手段を備えた請求の範囲第1項記載の負荷制御装置。
  13. 前記サーバで処理されたリクエストが属するセッションのセッション識別情報を一定期間キャッシュする手段と、キャッシュされているセッション識別情報を持つか否かに基づきリクエストを優先制御する手段を備えた請求の範囲第1項記載の負荷制御装置。
  14. 前記バッファは、クライアントから送信されたトラヒックの不正アクセスの疑わしさに基づきリクエストを優先制御する手段を備えた請求の範囲第1項記載の負荷制御装置。
  15. 汎用の情報処理装置にインストールすることにより、その汎用の情報処理装置に、請求の範囲第1項ないし第1項のいずれかに記載の負荷制御装置の機能に相応する機能を実現させるプログラム。
  16. 請求の範囲第1項記載のプログラムが記録された前記汎用の情報処理装置が読取可能な記録媒体。
  17. クライアントとサーバとの間に配置され、前記クライアントから受信したリクエストを前記サーバに送信し、当該リクエストに対して前記サーバから返されるレスポンスを前記クライアントに送信する負荷制御装置が実行する負荷制御方法において、
    前記サーバに送信済みであるが前記サーバからレスポンスが返されていない応答待ちリクエストの数を制限するステップ
    前記制限するステップは、
    応答待ちリクエスト数が閾値に達しているならば、受信したリクエストをバッファに一時蓄積するステップと、
    応答待ちリクエスト数が閾値を下回るまで前記バッファからのリクエストの送信を待ち合わせるステップと、
    応答待ちリクエスト数が閾値未満の場合は、前記バッファからリクエストを1つ選択して取り出し、応答待ちリクエスト数を1インクリメントさせた後、サーバに当該リクエストを送信するステップと、
    受信したレスポンスを、当該レスポンスのリクエストを送信したクライアントに対して返送し、応答待ちリクエスト数を1デクリメントするステップと、
    を有し、
    前記サーバの実行状況を監視するステップと、
    前記監視するステップの監視結果に基づいて単位時間あたりに前記サーバが処理したリクエスト数である、現在の応答待ちリクエスト数の閾値に対するスループットを測定するステップと、
    前記バッファに一時蓄積されているリクエストの数が所定数に達しているか否かを判定するステップと、
    前記判定するステップの判定結果に基づいて、リクエストの数が所定数に達している場合、現在の応答待ちリクエスト数の閾値に対するスループットを記録し、現在の応答待ちリクエスト数の閾値に対して記録したスループットが当該現在の応答待ちリクエスト数の閾値より小さい閾値に対して記録したスループットを上回る場合には、当該現在の応答待ちリクエスト数の閾値を増加させ、現在の応答待ちリクエスト数の閾値に対して記録したスループットが当該現在の応答待ちリクエスト数の閾値より小さい閾値に対して記録したスループットを下回る場合には、当該現在の応答待ちリクエスト数の閾値を減少させるステップと、
    を有することを特徴とする負荷制御方法。
  18. 前記閾値は1よりも大きな値である請求の範囲第1項記載の負荷制御方法。
  19. 前記サーバと自己との間のTCPコネクション同時接続数が前記応答待ちリクエスト数の閾値以下となるように自己と前記クライアントとの間のTCPコネクションを集約するステップを有する請求の範囲第1項記載の負荷制御方法。
JP2008513233A 2006-04-26 2007-04-25 負荷制御装置およびその方法 Active JP5189974B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008513233A JP5189974B2 (ja) 2006-04-26 2007-04-25 負荷制御装置およびその方法

Applications Claiming Priority (8)

Application Number Priority Date Filing Date Title
JP2006122196 2006-04-26
JP2006122196 2006-04-26
JP2006183392 2006-07-03
JP2006183392 2006-07-03
JP2006277864 2006-10-11
JP2006277864 2006-10-11
PCT/JP2007/058918 WO2007125942A1 (ja) 2006-04-26 2007-04-25 負荷制御装置およびその方法
JP2008513233A JP5189974B2 (ja) 2006-04-26 2007-04-25 負荷制御装置およびその方法

Publications (2)

Publication Number Publication Date
JPWO2007125942A1 JPWO2007125942A1 (ja) 2009-09-10
JP5189974B2 true JP5189974B2 (ja) 2013-04-24

Family

ID=38655468

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008513233A Active JP5189974B2 (ja) 2006-04-26 2007-04-25 負荷制御装置およびその方法

Country Status (5)

Country Link
US (1) US8667120B2 (ja)
EP (1) EP2023245B1 (ja)
JP (1) JP5189974B2 (ja)
CN (2) CN102684988B (ja)
WO (1) WO2007125942A1 (ja)

Families Citing this family (87)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006030679A1 (ja) * 2004-09-17 2006-03-23 Sanyo Electric Co., Ltd. 通信端末
US8078674B2 (en) * 2007-05-10 2011-12-13 International Business Machines Corporation Server device operating in response to received request
US9800614B2 (en) * 2007-05-23 2017-10-24 International Business Machines Corporation Method and system for global logoff from a web-based point of contact server
US8850029B2 (en) * 2008-02-14 2014-09-30 Mcafee, Inc. System, method, and computer program product for managing at least one aspect of a connection based on application behavior
US8656267B2 (en) * 2008-03-31 2014-02-18 International Business Machines Corporation Method of approximate document generation
US8595847B2 (en) * 2008-05-16 2013-11-26 Yellowpages.Com Llc Systems and methods to control web scraping
US7941538B2 (en) * 2008-06-12 2011-05-10 International Business Machines Corporation Dynamic management of resource utilization
CN101419699B (zh) * 2008-12-04 2015-11-11 中国工商银行股份有限公司 一种银行保证金数据动态监控方法及装置
US8856376B1 (en) * 2008-12-18 2014-10-07 Bank Of America Corporation Stabilization tool for a high-capacity network infrastructure
US8321389B2 (en) * 2009-01-08 2012-11-27 International Business Machines Corporation Method, apparatus and computer program product for maintaining file system client directory caches with parallel directory writes
US8238243B2 (en) * 2009-02-12 2012-08-07 Arcsoft, Inc. System and method for network optimization by managing low priority data transfers
US8560604B2 (en) 2009-10-08 2013-10-15 Hola Networks Ltd. System and method for providing faster and more efficient data communication
CN102714603A (zh) * 2009-12-18 2012-10-03 惠普发展公司,有限责任合伙企业 网络中的委托代理
US9674096B2 (en) * 2010-02-12 2017-06-06 Telefonaktiebolaget L M Ericsson Rate adaptation
US9058210B2 (en) * 2010-03-23 2015-06-16 Ebay Inc. Weighted request rate limiting for resources
US10034300B2 (en) * 2010-06-10 2018-07-24 Cisco Technology, Inc Load based probe response scheduling
US8706889B2 (en) * 2010-09-10 2014-04-22 International Business Machines Corporation Mitigating connection identifier collisions in a communication network
US9313224B1 (en) * 2010-09-30 2016-04-12 Google Inc. Connectivity protector
EP2487868A1 (en) * 2011-02-10 2012-08-15 Telefonaktiebolaget LM Ericsson (publ) An arrangement and method for handling data to and from a processing engine
US9418109B2 (en) * 2011-03-18 2016-08-16 Emc Corporation Memory quota
US9418064B1 (en) * 2011-03-18 2016-08-16 Emc Corporation Resource queues
JP2012226414A (ja) * 2011-04-15 2012-11-15 Konica Minolta Business Technologies Inc 画像形成装置、通信制御方法、通信制御プログラム、ブラウジング方法およびブラウジングプログラム
US8914502B2 (en) * 2011-09-27 2014-12-16 Oracle International Corporation System and method for dynamic discovery of origin servers in a traffic director environment
CN103166994A (zh) * 2011-12-14 2013-06-19 腾讯科技(深圳)有限公司 获取网络数据的方法及装置
KR20130086408A (ko) * 2012-01-25 2013-08-02 삼성전자주식회사 Http 소켓 제어장치 및 방법
US8793697B2 (en) * 2012-02-23 2014-07-29 Qualcomm Incorporated Method and system for scheduling requests in a portable computing device
JP5977882B2 (ja) * 2012-03-30 2016-08-24 ソニーモバイルコミュニケーションズ, エービー 高ネットワーク負荷シナリオを管理するネットワーク制御されたアダプティブ端末挙動
US9311424B2 (en) * 2012-05-17 2016-04-12 Qualcomm Incorporated Center, Inc. HTTP request pipeline optimization
US9742676B2 (en) 2012-06-06 2017-08-22 International Business Machines Corporation Highly available servers
US9542546B2 (en) * 2012-09-28 2017-01-10 Volusion, Inc. System and method for implicitly resolving query scope in a multi-client and multi-tenant datastore
US8898680B2 (en) 2012-10-15 2014-11-25 Oracle International Corporation System and method for supporting asynchronous message processing in a distributed data grid
CN103841051B (zh) * 2012-11-27 2017-05-10 国基电子(上海)有限公司 服务请求控制系统及其控制方法
JP6107218B2 (ja) * 2013-02-25 2017-04-05 富士通株式会社 制御装置,制御方法,および制御プログラム
US9363132B2 (en) * 2013-04-24 2016-06-07 International Business Machines Corporation Maximizing throughput of streaming media by simultaneously connecting to streaming media server over multiple independent network connections
US9832257B2 (en) * 2013-05-02 2017-11-28 Intel Corporation Service acquisition techniques for wireless communications systems
US9270617B2 (en) * 2013-06-05 2016-02-23 Sap Se Load controller framework
US9369525B2 (en) * 2013-06-26 2016-06-14 International Business Machines Corporation Highly resilient protocol servicing in network-attached storage
US9304861B2 (en) 2013-06-27 2016-04-05 International Business Machines Corporation Unobtrusive failover in clustered network-attached storage
US9241044B2 (en) 2013-08-28 2016-01-19 Hola Networks, Ltd. System and method for improving internet communication by using intermediate nodes
JP6387747B2 (ja) * 2013-09-27 2018-09-12 日本電気株式会社 情報処理装置、障害回避方法およびコンピュータプログラム
US9424159B2 (en) * 2013-10-10 2016-08-23 International Business Machines Corporation Performance measurement of hardware accelerators
US20150113588A1 (en) * 2013-10-22 2015-04-23 Cisco Technology, Inc. Firewall Limiting with Third-Party Traffic Classification
JP5543005B1 (ja) * 2013-10-30 2014-07-09 グリー株式会社 サーバ、その制御方法、及びその制御プログラム
EP3066801A1 (en) * 2013-11-06 2016-09-14 Calgary Scientific Inc. Apparatus and method for client-side flow control in a remote access environment
US9602424B1 (en) * 2014-03-31 2017-03-21 Amazon Technologies, Inc. Connection balancing using attempt counts at distributed storage systems
US10061780B2 (en) * 2014-04-28 2018-08-28 Bank Of America Corporation Information management command process device
US9998347B2 (en) 2014-07-31 2018-06-12 International Business Machines Corporation Monitoring device usage
US9537740B2 (en) 2014-07-31 2017-01-03 International Business Machines Corporation Monitoring device usage
US10169182B2 (en) 2014-07-31 2019-01-01 International Business Machines Corporation Monitoring levels of utilization of device
US10310923B1 (en) * 2014-08-28 2019-06-04 Seagate Technology Llc Probabilistic aging command sorting
US10310873B1 (en) 2014-08-28 2019-06-04 Seagate Technology Llc Probabilistic aging command sorting
US20170163563A1 (en) * 2014-08-29 2017-06-08 Hewlett Packard Enterprise Development Lp Multiplexing network connections
CN105787362B (zh) * 2014-12-25 2018-09-18 航天信息股份有限公司 用于保护网票查询查验系统的方法和装置
US9807813B2 (en) 2015-04-15 2017-10-31 Cisco Technology, Inc. Probe response suppression
US11057446B2 (en) 2015-05-14 2021-07-06 Bright Data Ltd. System and method for streaming content from multiple servers
JP6806054B2 (ja) 2015-06-24 2021-01-06 日本電気株式会社 情報処理装置、情報処理システム、情報処理方法、および情報処理プログラム
US10769533B2 (en) 2015-09-04 2020-09-08 Baidu Usa Llc Systems and methods for efficient neural network deployments
US10102103B2 (en) 2015-11-11 2018-10-16 International Business Machines Corporation System resource component utilization
US20170147407A1 (en) * 2015-11-24 2017-05-25 International Business Machines Corporation System and method for prediciting resource bottlenecks for an information technology system processing mixed workloads
US11416912B2 (en) * 2016-05-13 2022-08-16 Digital River, Inc. High volume transaction queueing with machine learning
US10142262B2 (en) 2016-05-31 2018-11-27 Anchorfree Inc. System and method for improving an aggregated throughput of simultaneous connections
CN106230627B (zh) * 2016-07-28 2019-05-07 浪潮软件股份有限公司 一种基于可定制策略的web访问高峰缓解方法
JP6903888B2 (ja) * 2016-09-21 2021-07-14 日本電気株式会社 疑似サーバ制御装置、疑似サーバ制御方法、および疑似サーバ制御プログラム
JP6748359B2 (ja) 2016-11-28 2020-09-02 富士通株式会社 接続数制御プログラム、振り分け装置および接続数制御方法
US10250517B2 (en) * 2017-02-03 2019-04-02 Microsoft Technology Licensing, Llc Completion-side client throttling
CN106953857B (zh) * 2017-03-16 2020-03-10 郑州云海信息技术有限公司 一种基于cs架构的服务器端多线程管理方法
US10649876B2 (en) 2017-04-20 2020-05-12 International Business Machines Corporation Maintaining manageable utilization in a system to prevent excessive queuing of system requests
US10831403B2 (en) * 2017-05-19 2020-11-10 Seagate Technology Llc Probabalistic command aging and selection
CN108984571B (zh) * 2017-06-05 2023-08-29 金篆信科有限责任公司 事务标识操作方法、系统和计算机可读存储介质
JP2019040344A (ja) * 2017-08-24 2019-03-14 富士通株式会社 送信制御プログラム、送信制御装置および送信制御方法
US11190374B2 (en) 2017-08-28 2021-11-30 Bright Data Ltd. System and method for improving content fetching by selecting tunnel devices
EP3767495B1 (en) 2017-08-28 2023-04-19 Bright Data Ltd. Method for improving content fetching by selecting tunnel devices
US10565021B2 (en) * 2017-11-30 2020-02-18 Microsoft Technology Licensing, Llc Automated capacity management in distributed computing systems
JP7139721B2 (ja) * 2018-06-27 2022-09-21 富士通株式会社 制御プログラム、制御方法および制御装置
CN109040246B (zh) * 2018-08-02 2022-03-08 广州虚拟动力网络技术有限公司 一种基于时间队列机制的组网通讯方法和系统
CN110971561B (zh) * 2018-09-28 2022-08-23 阿里巴巴集团控股有限公司 一种访问请求处理方法、装置及设备
EP4177771A1 (en) 2019-02-25 2023-05-10 Bright Data Ltd. System and method for url fetching retry mechanism
CN109818977B (zh) * 2019-03-18 2021-09-24 深圳市网心科技有限公司 一种接入服务器通信优化方法、接入服务器以及通信系统
WO2020202135A2 (en) 2019-04-02 2020-10-08 Luminati Networks Ltd. System and method for managing non-direct url fetching service
CN110333937B (zh) * 2019-05-30 2023-08-29 平安科技(深圳)有限公司 任务分发方法、装置、计算机设备和存储介质
CN110505155B (zh) * 2019-08-13 2023-12-08 北京达佳互联信息技术有限公司 请求降级处理方法、装置、电子设备及存储介质
US11443320B2 (en) 2020-01-07 2022-09-13 Bank Of America Corporation Intelligent systems for identifying transactions associated with an institution impacted by an event using a dashboard
US11238459B2 (en) 2020-01-07 2022-02-01 Bank Of America Corporation Intelligent systems for identifying transactions associated with an institution impacted by an event
CN113765969A (zh) * 2020-09-28 2021-12-07 北京沃东天骏信息技术有限公司 一种流量控制方法和装置
CN112749015B (zh) * 2021-01-25 2023-07-25 杭州迪普科技股份有限公司 负载均衡方法及装置
TWI827974B (zh) * 2021-09-08 2024-01-01 財團法人工業技術研究院 虛擬功能效能分析系統及其分析方法
CN114553806B (zh) * 2022-02-21 2023-09-05 深圳平安智慧医健科技有限公司 一种即时通讯的优化方法、装置、设备及存储介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03278136A (ja) * 1989-06-23 1991-12-09 Hitachi Ltd 計算機システムの負荷制御方法及び装置
JP2001344228A (ja) * 2000-05-31 2001-12-14 Nippon Telegr & Teleph Corp <Ntt> 暗号化通信におけるサービス品質制御方法及び装置サービス品質制御プログラムを格納した記憶媒体
JP2004094711A (ja) * 2002-09-02 2004-03-25 Hitachi Ltd 負荷バランス機能を有するプログラム制御方法及びシステム
JP3566699B2 (ja) * 2002-01-30 2004-09-15 株式会社東芝 サーバ計算機保護装置および同装置のデータ転送制御方法
JP2005503626A (ja) * 2001-09-18 2005-02-03 マルコニ ユーケイ インテレクチュアル プロパティー リミテッド クライアントサーバネットワーク
JP3646582B2 (ja) * 1998-09-28 2005-05-11 富士通株式会社 電子情報表示方法、電子情報閲覧装置および電子情報閲覧プログラム記憶媒体
JP2005184165A (ja) * 2003-12-17 2005-07-07 Hitachi Ltd トラフィック制御装置およびそれを用いたサービスシステム

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6567839B1 (en) * 1997-10-23 2003-05-20 International Business Machines Corporation Thread switch control in a multithreaded processor system
US6141759A (en) * 1997-12-10 2000-10-31 Bmc Software, Inc. System and architecture for distributing, monitoring, and managing information requests on a computer network
US6308238B1 (en) * 1999-09-24 2001-10-23 Akamba Corporation System and method for managing connections between clients and a server with independent connection and data buffers
US7340532B2 (en) * 2000-03-10 2008-03-04 Akamai Technologies, Inc. Load balancing array packet routing system
EP1332600A2 (en) 2000-11-03 2003-08-06 The Board of Regents of the University of Nebraska Load balancing method and system
JP3898498B2 (ja) * 2001-12-06 2007-03-28 富士通株式会社 サーバ負荷分散システム
US7454421B2 (en) * 2003-07-11 2008-11-18 Nippon Telegraph And Telephone Corporation Database access control method, database access controller, agent processing server, database access control program, and medium recording the program
CN101099142B (zh) * 2004-03-03 2010-10-06 分组视频网络技术方案有限公司 用来从网络节点获取数字多媒体内容的系统和方法
US9130799B2 (en) * 2005-03-23 2015-09-08 Alcatel Lucent System and method for effectuating playlist seeking with respect to digital multimedia content from a network node
US8151323B2 (en) * 2006-04-12 2012-04-03 Citrix Systems, Inc. Systems and methods for providing levels of access and action control via an SSL VPN appliance

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03278136A (ja) * 1989-06-23 1991-12-09 Hitachi Ltd 計算機システムの負荷制御方法及び装置
JP3646582B2 (ja) * 1998-09-28 2005-05-11 富士通株式会社 電子情報表示方法、電子情報閲覧装置および電子情報閲覧プログラム記憶媒体
JP2001344228A (ja) * 2000-05-31 2001-12-14 Nippon Telegr & Teleph Corp <Ntt> 暗号化通信におけるサービス品質制御方法及び装置サービス品質制御プログラムを格納した記憶媒体
JP2005503626A (ja) * 2001-09-18 2005-02-03 マルコニ ユーケイ インテレクチュアル プロパティー リミテッド クライアントサーバネットワーク
JP3566699B2 (ja) * 2002-01-30 2004-09-15 株式会社東芝 サーバ計算機保護装置および同装置のデータ転送制御方法
JP2004094711A (ja) * 2002-09-02 2004-03-25 Hitachi Ltd 負荷バランス機能を有するプログラム制御方法及びシステム
JP2005184165A (ja) * 2003-12-17 2005-07-07 Hitachi Ltd トラフィック制御装置およびそれを用いたサービスシステム

Also Published As

Publication number Publication date
US8667120B2 (en) 2014-03-04
EP2023245B1 (en) 2016-02-17
EP2023245A1 (en) 2009-02-11
CN102684988B (zh) 2015-02-11
WO2007125942A1 (ja) 2007-11-08
US20090077233A1 (en) 2009-03-19
CN101421702A (zh) 2009-04-29
JPWO2007125942A1 (ja) 2009-09-10
EP2023245A4 (en) 2012-08-15
CN102684988A (zh) 2012-09-19
CN101421702B (zh) 2012-05-30

Similar Documents

Publication Publication Date Title
JP5189974B2 (ja) 負荷制御装置およびその方法
US7747662B2 (en) Service aware network caching
US11258531B2 (en) System and method for peak flow detection in a communication network
US6912562B1 (en) Cache invalidation technique with spurious resource change indications
US8745262B2 (en) Adaptive network content delivery system
JP4916809B2 (ja) 負荷分散制御装置および方法
US8856913B2 (en) Method and protection system for mitigating slow HTTP attacks using rate and time monitoring
EP2359536B1 (en) Adaptive network content delivery system
US8799502B2 (en) Systems and methods for controlling the number of connections established with a server
US8706864B1 (en) Behavior monitoring and compliance for multi-tenant resources
US9058210B2 (en) Weighted request rate limiting for resources
US20040236869A1 (en) Parallel information delivery method based on peer-to-peer enabled distributed computing technology and the system thereof
US7415722B2 (en) Server computer protection apparatus and method for controlling data transfer by the same
JP2012503255A (ja) 高負荷のメディアコンテンツの自動検出および適合された配信のためのシステムおよび方法
CN106131165B (zh) 用于内容分发网络的防盗链方法和装置
WO2018080726A1 (en) Systems and methods for adjusting a congestion window value of a content delivery network
KR100671635B1 (ko) 스트리밍 미디어 서비스 관리 방법
JP4394710B2 (ja) 負荷制御装置及び方法及びプログラム
JP2014002634A (ja) 通信制御システム、集約サーバおよび通信制御方法
JP2008059040A (ja) 負荷制御システムおよび方法
JP4350098B2 (ja) 実行制御装置および方法
CN113810461B (zh) 带宽控制方法、装置、设备及可读存储介质
JP7183762B2 (ja) サーバ選択装置、サーバ選択方法及びプログラム
Yokota et al. Design and implementation of load reduction system for mitigating flash crowds on Web server
JP2007058872A (ja) サーバ装置、サービス方法、ならびに、プログラム

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111018

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111216

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20120509

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20120511

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120619

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120802

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121106

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121225

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: 20130122

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130125

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

Free format text: PAYMENT UNTIL: 20160201

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 5189974

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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