JP2018088041A - 接続数制御プログラム、振り分け装置および接続数制御方法 - Google Patents

接続数制御プログラム、振り分け装置および接続数制御方法 Download PDF

Info

Publication number
JP2018088041A
JP2018088041A JP2016229939A JP2016229939A JP2018088041A JP 2018088041 A JP2018088041 A JP 2018088041A JP 2016229939 A JP2016229939 A JP 2016229939A JP 2016229939 A JP2016229939 A JP 2016229939A JP 2018088041 A JP2018088041 A JP 2018088041A
Authority
JP
Japan
Prior art keywords
time
request
processing
server
statistical value
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.)
Granted
Application number
JP2016229939A
Other languages
English (en)
Other versions
JP6748359B2 (ja
Inventor
辰真 松木
Tatsumasa Matsuki
辰真 松木
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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2016229939A priority Critical patent/JP6748359B2/ja
Priority to US15/800,134 priority patent/US10476732B2/en
Publication of JP2018088041A publication Critical patent/JP2018088041A/ja
Application granted granted Critical
Publication of JP6748359B2 publication Critical patent/JP6748359B2/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
    • H04L47/00Traffic control in data switching networks
    • H04L47/70Admission control; Resource allocation
    • H04L47/82Miscellaneous aspects
    • H04L47/821Prioritising resource allocation or reservation requests
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/141Setup of application sessions
    • 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/56Provisioning of proxy services
    • H04L67/562Brokering proxy services
    • 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]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols
    • 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/22Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks comprising specially adapted graphical user interfaces [GUI]
    • 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/12Avoiding congestion; Recovering from congestion
    • H04L47/125Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer And Data Communications (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

【課題】応答性能の劣化を抑制するように同時接続数を調整可能にすること。【解決手段】処理部1bは、第1の装置2により送信されたリクエストを受信してから当該リクエストを第2の装置4に送信するまでの第1の時間を記憶部1aに記録する。処理部1bは、第2の装置4にリクエストを送信してから当該リクエストに対するレスポンスを受信するまでの第2の時間を記憶部1aに記憶する。処理部1bは、第1の時間の統計値と第2の時間の統計値との比較に応じて、第2の装置4,5に対する同時接続数の上限を変更する。【選択図】図1

Description

本発明は接続数制御プログラム、振り分け装置および接続数制御方法に関する。
現在、複数の情報処理装置がネットワークを介して通信する情報処理システムが利用されている。例えば、クライアントサーバシステムでは、サービスを提供する装置(サーバと呼ばれる)と、サービスを利用する装置(クライアントと呼ばれる)とがネットワークを介して通信する。クライアントは、サーバに対するリクエストを送信する。サーバは、リクエストを受信し、リクエストに応じたレスポンスをクライアントに送信する。
サーバは、複数のクライアントから複数のリクエストを受信し得る。リクエスト数が増えるとサーバの負荷が増える。サーバの負荷が過大になると、クライアントに対するレスポンス遅延が増す可能性がある。そこで、クライアントとサーバとの間に、クライアントのリクエストを受信してサーバへのアクセスを代行する制御装置を設け、制御装置の機能によりサーバの負荷を抑える方法が考えられている。
例えば、サーバに対して同時に接続できるクライアントの許容最大数である最大接続数により、サーバへのリクエストの送信を制限するトラフィック制御装置の提案がある。この提案では、最大接続数はオペレータにより予め設定される。
また、サーバに送信済であるがサーバからレスポンスが返されていない応答待ちリクエストの数を制限する負荷制御装置の提案もある。負荷制御装置は、応答待ちリクエスト数が閾値に達しているならば、受信したリクエストをバッファに一時蓄積し、応答待ちリクエスト数が閾値を下回るまでバッファからのリクエストの送信を待ち合わせる。
なお、同時に並行して処理を進める処理プロセス上限値である臨界多重度を自身のハードウェアの動作状況から算出し、算出された臨界多重度を上限として、クライアントから自身への同時接続数を制御するデータベースサーバの提案もある。
特開2005−184165号公報 国際公開第2007/125942号 国際公開第2013/129061号
上記のように、所定の装置にサーバへの同時接続数の上限を設定することで、サーバに対するリクエストの送信を制限し、当該装置上で制限対象のリクエストを、接続数に空きが生じるまでバッファリングすることが考えられる。ここで、同時接続数の上限は、システムのサービス品質に影響を及ぼす。
例えば、同時接続数の上限が大きいほど、サーバでのリクエストの受信頻度が増えやすい。サーバでのリクエストの受信頻度が増すと、サーバでのリクエストの処理待ちの時間の増大を招き、クライアントに対するレスポンス遅延が悪化する。
一方、同時接続数の上限が小さいほど、接続数の空き待ちが生じやすくなる。空き待ちにより、サーバへのアクセスを代行する装置上でのリクエストの転送待ちの時間が増えると、クライアントに対するレスポンス遅延が悪化する。
そこで、例えば、ユーザが、サービスの利用状況の事前調査を行い、今後の利用状況の予測に基づき、同時接続数の上限の設定を予め行っておくことが考えられる。ところが、実際の運用と事前調査での環境とが常に同じであるとは限らない。例えば、同じシステムでも時間の経過に伴って装置構成やサービスの利用状況が変化することもある。このため、同時接続数の上限の当初の設定が、サービス品質を維持する上で、その後も常に良好な設定であるとは限らない。
1つの側面では、本発明は、応答性能の劣化を抑制するように同時接続数を調整可能にすることを目的とする。
1つの態様では、接続数制御プログラムが提供される。この接続数制御プログラムは、第1の装置により送信されたリクエストを受信してからリクエストを第2の装置に送信するまでの第1の時間と、第2の装置にリクエストを送信してからリクエストに対するレスポンスを受信するまでの第2の時間とを、複数のリクエストそれぞれに対して記録し、第1の時間の統計値と第2の時間の統計値との比較に応じて、第2の装置に対する同時接続数の上限を変更する、処理をコンピュータに実行させる。
1つの側面では、応答性能の劣化を抑制するように同時接続数を調整可能になる。
第1の実施の形態の振り分け装置を示す図である。 第2の実施の形態の情報処理システムの例を示す図である。 第2の実施の形態のプロキシサーバのハードウェア例を示す図である。 プロキシサーバの機能例を示す図である。 最大同時接続数に対する各時間の測定結果の例を示す図である。 最大同時接続数と各時間との関係の例を示す図である。 プロキシ処理部により出力されるログの例を示す図である。 履歴管理テーブルの例を示す図である。 統計値テーブルの例を示す図である。 最大同時接続数の初期設定の例である。 プロキシサーバの処理例を示すフローチャートである。 性能劣化の抑制例を示す図である。 最大同時接続数の変更例を示す図である。 最大同時接続数の他の制御例(その1)を示す図である。 最大同時接続数の他の制御例(その2)を示す図である。 最大同時接続数の他の制御例(その3)を示す図である。 他の制御例(その3)における履歴管理テーブルの例を示す図である。
以下、本実施の形態について図面を参照して説明する。
[第1の実施の形態]
図1は、第1の実施の形態の振り分け装置を示す図である。振り分け装置1は、第1の装置2,3および第2の装置4,5と通信する。振り分け装置1および第1の装置2,3は、ネットワーク6に接続されている。振り分け装置1および第2の装置4,5は、ネットワーク7に接続されている。第1の装置2,3は、クライアントコンピュータ、または、クライアントと呼ばれてもよい。第2の装置4,5は、サーバコンピュータ、または、サーバと呼ばれてもよい。第2の装置4,5は、同じサービスを提供する。第1の装置2,3の数および第2の装置4,5の数は、3以上でもよい。
振り分け装置1は、第1の装置2,3からリクエストを受信し、受信したリクエストを、第2の装置4,5に振り分けることで、第2の装置4,5の負荷を分散させる。すなわち、振り分け装置1は、第2の装置4,5(送信先候補)の中からリクエストの送信先を所定の振り分けルールを基に選択し、選択した送信先にリクエストを送信する。振り分け装置1は、第2の装置4,5からリクエストに対するレスポンスを受信する。振り分け装置1は、リクエストの送信元である第1の装置2,3に、レスポンスを送信する。振り分け装置1は、負荷分散装置と呼ばれてもよい。
振り分け装置1による振り分けルールには、種々の方法が考えられる。例えば、振り分けルールは、ラウンドロビン(送信先候補を順番に選択)や最小コネクション(既存のTCP(Transmission Control Protocol)コネクション数が最小の送信先候補を選択)などである。
ここで、サービス品質(QoS:Quality of Service)の劣化を抑制するため、振り分け装置1には、種々のパラメータが設定される。パラメータの1つに、最大同時接続数がある。ここで、「同時接続数」は、ある1つの第2の装置に対し、リクエストを送信したが、当該リクエストに対するレスポンスを未受信であるリクエスト(応答待ちリクエスト)の数により計算される。応答待ちリクエスト数を同時接続数と考えてもよい。最大同時接続数は、第2の装置の1つ当たりの応答待ちリクエスト数(すなわち、同時接続数)の上限である。
振り分け装置1は、リクエストを受信すると、リクエストを所定のバッファに格納する。振り分け装置1は、第2の装置4,5のうち、同時接続数が最大同時接続数に達しているものをリクエストの送信先候補から除外する。第2の装置4,5の何れもが送信先候補から除外される場合、リクエストを直ちに送信することはできない。このため、振り分け装置1は、第2の装置4,5の何れかで同時接続数に空きが生じるまで、リクエストをバッファに保持する。バッファに格納されたリクエストを、「転送待ちのリクエスト」と称することがある。
振り分け装置1は、最大同時接続数を動的に変化させる機能を提供する。振り分け装置1は、記憶部1aおよび処理部1bを有する。
記憶部1aは、RAM(Random Access Memory)などの揮発性記憶装置でもよいし、フラッシュメモリなどの不揮発性記憶装置でもよい。処理部1bは、CPU(Central Processing Unit)、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)などを含み得る。処理部1bはプログラムを実行するプロセッサでもよい。プロセッサは、複数のプロセッサの集合(マルチプロセッサ)を含み得る。
記憶部1aは、バッファd1を含む。バッファd1は、転送待ちのリクエストを記憶する。記憶部1aは、第1の時間および第2の時間を第2の装置4,5それぞれに対して記憶する。第1の時間は、バッファd1におけるリクエストの転送待ち時間(バッファd1に格納されてから転送されるまでの時間)である。第2の時間は、リクエストを第2の装置に送信してから、当該リクエストに対するレスポンスを第2の装置から受信するまでの時間である。第2の時間には、第2の装置の処理遅延の影響およびネットワーク7での通信遅延の影響が反映される。ネットワーク7での通信遅延は、第2の装置の処理遅延に比べて小さい。このため、第2の時間を、第2の装置によるリクエストの処理時間と呼んでもよい。
処理部1bは、第1の装置2,3から受信したリクエストの振り分け処理を行う。例えば、処理部1bは、第1の装置2からリクエストを受信する。処理部1bは、第2の装置4,5のうち、現在の同時接続数が最大同時接続数に達していない送信先候補の中から、振り分けルールに従って、リクエストの送信先を決定する。
第2の装置4,5の全てについて、現在の同時接続数が最大同時接続数に達している場合、処理部1bは、リクエストをバッファd1に格納し、同時接続数に空きができるまで待機する。バッファd1に既にリクエストが格納されている場合、例えば、第2の装置4で同時接続数に空きが生じると、処理部1bは、最も古いリクエストから順に、バッファd1から取り出して、該当の第2の装置に送信する。処理部1bは、リクエストに対するレスポンスを第2の装置4から受信すると、該当のリクエストの送信元である第1の装置2にレスポンスを送信する。
処理部1bは、第1の装置2により送信されたリクエストを受信してから当該リクエストを第2の装置4に送信するまでの第1の時間を、複数のリクエストそれぞれに対して記憶部1aに記録する。また、処理部1bは、第2の装置4にリクエストを送信してから、当該リクエストに対するレスポンスを受信するまでの第2の時間を、複数のリクエストそれぞれに対して記憶部1aに記録する。第1の実施の形態の例では、第2の装置4,5が複数なので、処理部1bは、第2の装置4,5それぞれの識別情報に対応付けて、第1の時間および第2の時間を記録してもよい。
処理部1bは、第1の時間の統計値T1と第2の時間の統計値T2との比較に応じて、第2の装置4,5に対する同時接続数の上限を変更する。具体的には次の通りである。
図1では、同時接続数の上限に対する第1の時間および第2の時間の関係の例を示している。系列Aは、同時接続数の上限Xに対する第1の時間の統計値T1の関係(T1(X))を示す。系列Bは、同時接続数の上限Xに対する第2の時間の統計値T2の関係(T2(X))を示す。ここで、統計値としては、パーセンタイル値(例えば、90パーセンタイル値など)や平均値などが考えられる。
系列Cは、同時接続数の上限Xに対する時間Tの関係(T(X))を示す。時間T=T1+T2である。すなわち、時間Tは、処理部1bが第1の装置2(あるいは、第1の装置3)からリクエストを受信してから、第1の装置2(あるいは、第1の装置3)へ当該リクエストに対するレスポンスを送るまでの時間(クライアントに対する応答時間)である。
系列Aによれば、同時接続数の上限Xが小さいほど、転送待ち時間(第1の時間)が増す。振り分け装置1において転送待ちとなるリクエストの数が増すからである。一方、系列Bによれば、同時接続数の上限Xが小さいほど、第2の装置によるリクエストの処理時間(第2の時間)が減る。第2の装置の1つ当たりに同時に割り振られるリクエストの数が減り、第2の装置の負荷が小さくなるからである。また、系列Cによれば、同時接続数の上限Xが小さいほど、転送待ち時間が要因となって、クライアントに対する応答時間が増す。
更に、系列Aによれば、同時接続数の上限Xが大きいほど、転送待ち時間(第1の時間)が減る。転送待ちとなるリクエストの数が減るからである。一方、系列Bによれば、同時接続数の上限Xが大きいほど、第2の装置によるリクエストの処理時間(第2の時間)が増す。第2の装置の1つ当たりに同時に割り振られるリクエストの数が増し、第2の装置の負荷が大きくなるからである。また、系列Cによれば、同時接続数の上限Xが大きいほど、第2の装置によるリクエストの処理時間が要因となって、クライアントに対する応答時間が増す。
そして、系列A,Bによれば、同時接続数の上限がX1〜X2程度では、転送待ち時間および第2の装置によるリクエストの処理時間の両方が比較的短い。時間Tは、同時接続数の上限X1〜X2の範囲で極小値をとる。すなわち、同時接続数の上限がX1〜X2の範囲程度であれば、時間Tが悪化する可能性は低いと考えられる。
ここで、例えば、このような関係性を事前に調査して、時間Tが極小となる同時接続数の上限を振り分け装置1に予め設定しておくことが考えられる。しかし、調査時の環境がその後も常に維持されるとは限らない。例えば、第1の装置2,3の数が増減したり、あるいは、第2の装置4,5の数が増えたりすると、上記の関係性は変わり得る。また、調査時と現実の運用の環境が必ずしも一致しているとも限らない。このように、事前の調査などに基づく静的な設定では、サービス品質の劣化を抑制できない可能性がある。
そこで、処理部1bは、系列A,B,Cにみられる、ある傾向に着目して、同時接続数の上限を変更する。すなわち、系列A,Bによれば、同時接続数の上限が小さいほど、第1の時間の統計値T1が、第2の時間の統計値T2よりも大きくなる傾向にある(統計値T1,T2の差が大きくなる)。一方、系列A,Bによれば、同時接続数の上限が大きいほど、第2の時間の統計値T2が、第1の時間の統計値T1よりも大きくなる傾向にある(統計値T1,T2の差が大きくなる)。したがって、処理部1bは、統計値T1,T2を比較し、統計値T1,T2に差がある場合に、同時接続数の上限を変更する。
具体的には、処理部1bは、第1の時間の統計値T1が第2の時間の統計値T2以上の場合、同時接続数の上限を増やす。一方、処理部1bは、第1の時間の統計値T1が第2の時間の統計値T2よりも小さい場合、同時接続数の上限を減らす。時間Tを極小値に近い値にシフトさせるためである。
処理部1bは、第2の装置4,5を区別せずに統計値T1,T2を求めて、第2の装置4,5のグループに対する同時接続数の上限を求めてもよい。この場合、例えば、処理部1bは、当該上限を第2の装置の数(この例では2)で割ることで、第2の装置4,5それぞれに対する同時接続数の上限を定めてもよい。あるいは、処理部1bは、第2の装置4,5を区別して、第2の装置4,5それぞれについて、統計値T1,T2を求めて、第2の装置4,5それぞれに対する同時接続数の上限を計算してもよい。
更に、処理部1bは、第1の時間の統計値T1と第2の時間の統計値T2との差に応じて、同時接続数の上限の変更量を決定してもよい。例えば、処理部1bは、差が大きいほど、変更量を大きくしてもよい。処理部1bは、差が小さいほど、変更量を小さくしてもよい。時間Tを早く極小値に近づけ、また、時間Tが比較的小さい状態を長い時間維持するためである。
このように、処理部1bは、第2の装置4,5に対する同時接続数の上限を動的に変更することで、応答性能の劣化を抑制するように同時接続数の上限を調整可能になる。特に第2の装置4,5への負荷が時間によって変動する場合や障害が発生した場合に、事前の調査などによって同時接続数の上限を静的に設定するよりも、クライアントに対する応答時間の劣化を抑えることができる。その結果、振り分け装置1および第2の装置4,5によるサービス品質の向上を図れる。
以下では、クラウドサービスを提供するシステムに振り分け装置1の機能を適用する例を示し、当該機能を更に具体的に説明する。
[第2の実施の形態]
図2は、第2の実施の形態の情報処理システムの例を示す図である。第2の実施の形態の情報処理システムは、プロキシサーバ100、クライアント200,200a、処理サーバ300,300a,300bおよび実行サーバ400,400a,400b,400cを含む。
プロキシサーバ100およびクライアント200,200aは、ネットワーク10に接続されている。ネットワーク10は、インターネットやWAN(Wide Area Network)でもよい。あるいは、ネットワーク10は、LAN(Local Area Network)でもよい。プロキシサーバ100および処理サーバ300,300a,300bは、ネットワーク20に接続されている。処理サーバ300,300a,300bおよび実行サーバ400,400a,400b,400cは、ネットワーク30に接続されている。ネットワーク20,30は、例えば、データセンタ内のLANである。
プロキシサーバ100は、クライアント200,200aからリクエストを受信し、受信したリクエストを、処理サーバ300,300a,300bに振り分けるサーバコンピュータである。プロキシサーバ100は、第1の実施の形態の振り分け装置1の一例である。
クライアント200,200aは、処理サーバ300,300a,300bが提供するWebサービスに対するリクエストを送信するクライアントコンピュータである。クライアント200,200aによるリクエストは、プロキシサーバ100により受信され、プロキシサーバ100の後段の処理サーバ300,300a,300bの何れかに転送される。クライアントの数は、3以上でもよい。クライアント200,200aは、第1の実施の形態の第1の装置2,3の一例である。
処理サーバ300,300a,300bは、クライアント200,200aに対して共通のWebサービスを提供するサーバコンピュータである。プロキシサーバ100により、処理サーバ300,300a,300bの負荷が分散される。処理サーバ300,300a,300bの数は、2または4以上でもよい。処理サーバ300,300a,300bは、第1の実施の形態の第2の装置4,5の一例である。
実行サーバ400,400a,400b,400cは、仮想マシン(VM:Virtual Machine)を実行可能なサーバコンピュータである。例えば、実行サーバ400,400a,400b,400cは、ハイパーバイザと呼ばれるソフトウェアを実行する。実行サーバ400のハイパーバイザは、実行サーバ400が備えるRAMやプロセッサなどのハードウェアリソースを、仮想マシンに割り当てる(他の実行サーバも同様)。実行サーバ400,400a,400b,400c上の各仮想マシンは、処理サーバ300,300a,300bの指示に応じて、所定の処理を実行し、処理サーバ300,300a,300bに処理結果を提供する。
例えば、クライアント200,200aは、実行サーバ400,400a,400b,400cの何れかによる新たな仮想マシンの起動を指示するリクエストや仮想マシンを用いた業務処理のリクエストを、プロキシサーバ100に送信することもできる。このように、ユーザ側でコンピュータを保有せずに、データセンタ側に設けられたコンピュータのリソースを、ネットワークを介して利用する利用形態をクラウドコンピューティングと呼ぶことがある。
クラウドコンピューティングの環境を提供するサービス(クラウドサービスと称することがある)を実現するソフトウェア基盤の1つとして、例えば、Openstack(登録商標)が挙げられる。Openstackでは、REST API(REpresentational State Transfer Application Programming Interface)と呼ばれるAPIが用いられる。REST APIでは、システム上のリソースをURI(Uniform Resource Identifier)と呼ばれる識別子により表す。また、リソースに対する処理内容は、HTTP(HyperText Transfer Protocol)メソッド(GETやPOSTなど)により指定される。クライアント200,200aは、HTTPメソッドおよびURIを指定したリクエストを発行し、当該リクエストに対する所定の形式のレスポンスを受信する。
例えば、認証トークンを取得するリクエストは、“POST /v3/auth/tokens”のように表される。“POST”部分がHTTPメソッドであり、それに後続する部分がURIである。また、例えば、起動済の仮想マシンのリストを取得するリクエストは、“GET /servers/detail”のように表される。更に、例えば、仮想ネットワークの作成を指示するリクエストは、“POST /v2.0/networks”のように表される。なお、リソースに対応するURIは、システムに応じて任意に定められる。
図3は、第2の実施の形態のプロキシサーバのハードウェア例を示す図である。プロキシサーバ100は、プロセッサ101、RAM102、HDD(Hard Disk Drive)103、画像信号処理部104、入力信号処理部105、媒体リーダ106および通信インタフェース107を有する。各ハードウェアはプロキシサーバ100のバスに接続されている。
プロセッサ101は、プロキシサーバ100の情報処理を制御するハードウェアである。プロセッサ101は、マルチプロセッサであってもよい。プロセッサ101は、例えばCPU、DSP、ASICまたはFPGAなどである。プロセッサ101は、CPU、DSP、ASIC、FPGAなどのうちの2以上の要素の組み合わせであってもよい。
RAM102は、プロキシサーバ100の主記憶装置である。RAM102は、プロセッサ101に実行させるOS(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部を一時的に記憶する。また、RAM102は、プロセッサ101による処理に用いる各種データを記憶する。
HDD103は、プロキシサーバ100の補助記憶装置である。HDD103は、内蔵した磁気ディスクに対して、磁気的にデータの書き込みおよび読み出しを行う。HDD103は、OSのプログラム、アプリケーションプログラム、および各種データを記憶する。プロキシサーバ100は、SSD(Solid State Drive)などの他の種類の補助記憶装置を備えてもよく、複数の補助記憶装置を備えてもよい。
画像信号処理部104は、プロセッサ101からの命令に従って、プロキシサーバ100に接続されたディスプレイ11に画像を出力する。ディスプレイ11として、CRT(Cathode Ray Tube)ディスプレイや液晶ディスプレイなどを用いることができる。
入力信号処理部105は、プロキシサーバ100に接続された入力デバイス12から入力信号を取得し、プロセッサ101に出力する。入力デバイス12として、例えば、マウスやタッチパネルなどのポインティングデバイス、キーボードなどを用いることができる。
媒体リーダ106は、記録媒体13に記録されたプログラムやデータを読み取る装置である。記録媒体13として、例えば、フレキシブルディスク(FD:Flexible Disk)やHDDなどの磁気ディスク、CD(Compact Disc)やDVD(Digital Versatile Disc)などの光ディスク、光磁気ディスク(MO:Magneto-Optical disk)を使用できる。また、記録媒体13として、例えば、フラッシュメモリカードなどの不揮発性の半導体メモリを使用することもできる。媒体リーダ106は、例えば、プロセッサ101からの命令に従って、記録媒体13から読み取ったプログラムやデータをRAM102またはHDD103に格納する。
通信インタフェース107は、ネットワーク10を介して他の装置と通信を行う。通信インタフェース107は、有線通信インタフェースでもよいし、無線通信インタフェースでもよい。
クライアント200,200a、処理サーバ300,300a,300bおよび実行サーバ400,400a,400b,400cも、プロキシサーバ100と同様のハードウェアを用いて実現できる。
図4は、プロキシサーバの機能例を示す図である。プロキシサーバ100は、記憶部110、設定処理部120、プロキシ処理部130および待ちバッファ140を有する。記憶部110は、RAM102またはHDD103の記憶領域を用いて実現される。設定処理部120およびプロキシ処理部130は、RAM102に記憶されたプログラムをプロセッサ101が実行することで実現される。待ちバッファ140は、RAM102の記憶領域を用いて実現される。
記憶部110は、プロキシ処理部130により出力されたリクエストおよびレスポンスに関するログを記憶する。また、記憶部110は、リクエストのプロキシサーバ100上での転送待ち時間(プロキシ待ち時間と称する)を記憶する。更に、記憶部110は、プロキシサーバ100から処理サーバ300,300a,300bに送信されたリクエストに対するレスポンスをプロキシサーバ100が受信するまでの時間(サーバ処理時間と称する)を記憶する。
設定処理部120は、プロキシ処理部130により出力されたログを解析することで、プロキシ待ち時間やサーバ処理時間を、リクエスト毎に取得し、記憶部110に格納する。設定処理部120は、所定のタイミングで、プロキシ待ち時間の統計値およびサーバ処理時間の統計値を計算し、両統計値の比較に応じて、処理サーバ300,300a,300bに対する最大同時接続数を変更する。最大同時接続数は、プロキシ処理部130によるリクエストの振り分け処理に用いられるパラメータである。
プロキシ処理部130は、クライアント200,200aから受信したリクエストを、処理サーバ300,300a,300bに振り分けることで、処理サーバ300,300a,300bの負荷を分散させる。プロキシ処理部130は、例えば、ラウンドロビンや最小コネクション(既存のTCPコネクション数が最小の処理サーバにリクエストを振り分ける)などの負荷分散ルールにより、リクエストの振り分けを行う。
プロキシ処理部130が振り分け処理に用いるパラメータには、最大同時接続数、リクエストタイムアウト時間(レスポンス待ち時間の上限)およびリトライ回数(リトライ回数の上限)などが含まれる。ここでは、最大同時接続数に着目する。最大同時接続数は、処理サーバ300,300a,300bに対する同時接続数の上限である。「同時接続数」は、ある処理サーバに対し、リクエストを送信したが、当該リクエストに対するレスポンスを未受信であるリクエスト(応答待ちリクエスト)の数に相当する。すなわち、最大同時接続数は、1つの処理サーバに対する応答待ちリクエスト数の上限といえる。
プロキシ処理部130は、新規のリクエストを受信すると、受信したリクエストを待ちバッファ140(キュー)に格納する。プロキシ処理部130は、負荷分散ルールによりリクエストの転送先を決定し、待ちバッファ140に記憶されたリクエストを、決定した転送先に送信する。ただし、処理サーバ300,300a,300bの全てで、応答待ちリクエストの数が最大同時接続数に達している場合、プロキシ処理部130は、処理サーバ300,300a,300bの何れかにおける同時接続数の空きを待つ。プロキシ処理部130は、処理サーバ300,300a,300bの何れかで、同時接続数の空きが生じると、待ちバッファ140に格納されたリクエストを、同時接続数に空きのある処理サーバに送信する。
なお、プロキシ処理部130が負荷分散ルールに最小コネクションを使用した場合のコネクション数を、応答待ちリクエストの数と考えてもよい(プロキシ処理部130は、応答待ちリクエストの数が最小の処理サーバに新規のリクエストを振り分けてもよい)。応答待ちのリクエストがあれば、当該リクエストの通信に対応するTCPコネクションも解放されずに残留するからである。
すなわち、プロキシ処理部130は、新たにリクエストを受信すると、処理サーバ300,300a,300bに送信済のリクエストのうち、レスポンスを未受信であるリクエストの数(応答待ちリクエスト数)を求める。そして、プロキシ処理部130は、応答待ちリクエスト数と最大同時接続数との比較に応じて、受信したリクエストの処理サーバ300,300a,300bへの送信を制限してもよい。具体的には、プロキシ処理部130は、応答待ちリクエスト数が最大同時接続数に達していない処理サーバに新規のリクエストを振り分け、応答待ちリクエスト数が最大同時接続数に達している処理サーバに新規のリクエストを振り分けないように制御してもよい。
また、プロキシ処理部130の機能は、例えば、RAM102に記憶されたHAProxyと呼ばれるソフトウェアをプロセッサ101が実行することで実現されてもよい。HAProxyは、負荷分散機能を提供するソフトウェアである。
待ちバッファ140は、プロキシ処理部130が受信したリクエストを保持するために用いられるバッファである。待ちバッファ140には、キューのデータ構造によりリクエストが格納される。すなわち、プロキシ処理部130は、待ちバッファ140に先に格納されたリクエストから順番に取り出して、転送先の処理サーバに送信する。
図5は、最大同時接続数に対する各時間の測定結果の例を示す図である。図5において、横軸は時間である。左側縦軸は、同時接続数(active_conn)である。右側縦軸は、時間(Tr,Tw,Tt)(ミリ秒)である。ここで、Trは、サーバ処理時間である。Twは、プロキシ待ち時間である。Ttは、クライアントに対する応答時間であり、Tt=Tr+Twである。active_conn、Tr、TwおよびTtの各系列は、処理サーバ300,300a,300bの最大同時接続数を時間経過に応じて段階的に増加させながら、大量のリクエストをプロキシサーバ100に送信した場合の結果を表す。Trの系列は、10秒毎のサーバ処理時間の99パーセンタイル値である。Twの系列は、10秒毎のプロキシ待ち時間の99パーセンタイル値である。
図5の測定結果によれば、次のことが分かる。
期間P1では、最大同時接続数が比較的小さく設定されたために、プロキシ待ち時間(Tw)が比較的大きく増加している。
期間P2では、サーバ処理時間(Tr)とプロキシ待ち時間(Tw)との和(Tt)が比較的小さい値で安定している。
期間P3では、最大同時接続数が比較的大きく設定されたために、処理サーバ300,300a,300bにおける資源競合が発生し、サーバ処理時間(Tr)が比較的大きく増加している。
図6は、最大同時接続数と各時間との関係の例を示す図である。図5の測定結果によれば、最大同時接続数に対するTw,Tr,Ttの関係は、それぞれ系列A1,B1,C1で表される。系列A1,B1によれば、サーバ処理時間とプロキシ待ち時間とは、トレードオフの関係にあることが分かる。クライアントに対する応答時間(Tt=Tr+Tw)は、サーバ処理時間およびプロキシ待ち時間の間に比較的大きな差がある状況下で大きく悪化する傾向にある。一方、サーバ処理時間およびプロキシ待ち時間の間の差が比較的小さい状況下では、クライアントに対する応答時間が悪化する可能性は低い傾向にある。システムの構成変更(クライアント数の増減や処理サーバ数の増減など)に対して系列A1,B1,C1の全体がグラフの横軸方向に(左右に)シフトするとしても、統計値Tr,Twの差が小さいほど応答時間Ttも小さくなる傾向になることは変わらない。そこで、設定処理部120は、図6の関係性を基に、クライアントに対する応答時間が悪化する状況を回避するように、最大同時接続数を設定する。
次に、プロキシサーバ100により処理される情報の具体例を説明する。
図7は、プロキシ処理部により出力されるログの例を示す図である。ログ111は、プロキシ処理部130により出力される。ログ111は、記憶部110に格納される。ログ111に含まれる1つのレコードは複数のフィールドを含む。各フィールドは、スペースで区切られる。ログ111で例示される各フィールドの値は、次の情報を示す。
“proxy[19214]”は、プロキシ処理部130のプロセス名(proxy)およびプロセスID(19214)である。
“172.20.121.100:33070”は、当該リクエストの送信元のクライアントのIP(Internet Protocol)アドレスおよびポート番号である。
“[08/Sep/2016:06:19:16.243]”は、当該リクエストをプロキシ処理部130により受け付けた時刻である。
“nova_compute_api_cluster”は、記憶部110に記憶されている所定の設定ファイルに記述されているフロントエンド名である。
“nova_compute_api_cluster/2−8”は、当該リクエストの振り分け先の処理サーバの情報である(バックエンド名/サーバ名というフォーマットである)。
“0/0/0/1661/1661”のスラッシュ記号“/”で区切られた各値の意味は次の通りである。1つ目の値は、クライアントがHTTPリクエスト全体を送信するのを待った時間である。2つ目の値は、プロキシサーバ100上の待ちバッファ140での転送待ち時間(プロキシ待ち時間)である。3つ目の値は、バックエンドサーバ(処理サーバ)との接続確立に要した時間(リトライを含む)である。4つ目の値は、バックエンドサーバ(処理サーバ)からの応答時間(サーバ処理時間に相当)である。5つ目の値は、クライアントに応答するまでに要した総時間(クライアントに対する応答時間に相当)である。
“200”は、HTTPステータスコードである。
“1551”は、クライアントへのレスポンスとして送信したバイト数である。
“862/78/76/3/0”のスラッシュ記号で区切られた各値は、前から順に次の数を示す。すなわち、“接続中コネクション数/フロントエンドの接続中コネクション数/バックエンドの接続中コネクション数/バックエンドサーバの接続中コネクション数/バックエンドサーバへの接続リトライ回数”である。
“0/0”のスラッシュ記号で区切られた各値は、前から順に次の数を示す。すなわち、“サーバキューで待機中のリクエスト数/バックエンド全体のキュー待機中リクエスト数”である。
“GET /v2/cf2b03db・・・ HTTP/1.1”は、リクエスト(HTTPリクエスト)の具体的な内容を示す。
図8は、履歴管理テーブルの例を示す図である。履歴管理テーブル112は、記憶部110に格納される。履歴管理テーブル112は、時刻、リクエスト、サーバ、処理時間および待ち時間の項目を含む。
時刻の項目には、リクエストの受信時刻が登録される。リクエストの項目には、リクエストの具体的な内容が登録される。サーバの項目には、当該リクエストの振り分け先となった処理サーバの識別情報が登録される。例えば、処理サーバ300の識別情報は“SV1”である。処理サーバ300aの識別情報は“SV2”である。処理サーバ300bの識別情報は“SV3”である。処理時間の項目には、当該リクエストに関するサーバ処理時間が登録される。待ち時間の項目には、プロキシ待ち時間が登録される。サーバ処理時間およびプロキシ待ち時間の単位は、秒である。
例えば、履歴管理テーブル112には、時刻が“09:48:50.012”、リクエストが“GET /v2/servers”、サーバが“SV2”、処理時間が“10.524”、待ち時間が“3.491”というレコードが登録されている。
これは、9時48分50.012秒に受信したリクエストの内容が“GET /v2/servers”であり、処理サーバ300aに振り分けられたこと、サーバ処理時間が10.524秒であり、プロキシ待ち時間が3.491秒であったことを示す。
履歴管理テーブル112には、リクエストおよび振り分け先の処理サーバ毎に、サーバ処理時間およびプロキシ待ち時間が登録される。
図9は、統計値テーブルの例を示す図である。統計値テーブル113は、記憶部110に格納される。統計値テーブル113は、90パーセンタイル処理時間および90パーセンタイル待ち時間の項目を含む。
90パーセンタイル処理時間の項目には、直近のN個(Nは2以上の整数)のリクエストに関するサーバ処理時間の90パーセンタイル値が登録される。90パーセンタイル待ち時間の項目には、直近のN個のリクエストに関するプロキシ待ち時間の90パーセンタイル値が登録される。統計値テーブル113に登録される何れの値も、単位は秒である。
例えば、統計値テーブル113には、90パーセンタイル処理時間が“8.54”、90パーセンタイル待ち時間が“3.42”という情報が登録される。
ここで、90パーセンタイル値は、統計値の一例である。90パーセンタイル値以外にも、95パーセンタイル値、99パーセンタイル値または中央値(50パーセンタイル値)などを統計値として採用してもよい。また、直近のN個のリクエストに関するサーバ処理時間やプロキシ待ち時間の平均値を統計値として採用してもよい。
なお、Mパーセンタイル値(Mは正の整数)は、サンプル数を100としたとき、小さい方から数えてM番目に位置する値を示す。N=100とすると、サーバ処理時間の90パーセンタイル値は、直近の100個のリクエストに関するサーバ処理時間のうち、小さい方から数えて90番目のサーバ処理時間の値である。統計値としては、例えば、90パーセンタイル値のように、サンプルのうち、比較的大きい値を反映できる統計値を採用することが好ましい。サーバ処理時間とプロキシ待ち時間との差が表れやすいからである。
図10は、最大同時接続数の初期設定の例である。プロキシ処理部130は、処理サーバ300,300a,300bそれぞれに対して、同時接続数を管理する。
設定処理部120は、プロキシ処理部130による振り分け処理に用いられる最大同時接続数の設定を行う。最大同時接続数は、処理サーバ毎に設定される。ここで、処理サーバ300,300a,300bを、識別情報“SV1”などに含まれる番号k(kは自然数)で識別するものとし、処理サーバ単位の最大同時接続数をck(kは自然数)と表す。この場合、処理サーバ全体の最大同時接続数cは、c=Σckである。ここで、Σはkについて和を計算することを表すものとする。
設定処理部120は、最大同時接続数cの初期値を、最小値cminとする。最小値cminは、例えば、クライアントへのサービス提供において最低限求められる最大同時接続数として、予め定められる。このとき、ckは、処理サーバ300,300a,300bで均等になるようにする(例えば、cmin=15であれば、ck=15/3=5とする)。
リクエスト数に対して最大同時接続数cが小さければ、待ちバッファ140に溜まるリクエスト数は増す。その分、プロキシ待ち時間が増し、サーバ処理時間が減る。リクエスト数に対して最大同時接続数cが大きければ、待ちバッファ140に溜まるリクエスト数は減る。その分、プロキシ待ち時間が減り、サーバ処理時間が増す。
次に、プロキシサーバ100の処理手順を説明する。
図11は、プロキシサーバの処理例を示すフローチャートである。以下、図11に示す処理をステップ番号に沿って説明する。下記のステップS1を起点とする手順は、例えば、プロキシサーバ100の起動後、設定処理部120の起動をトリガとして実行開始される。
(S1)設定処理部120は、プロキシ処理部130の振り分け処理に用いられる制御パラメータの設定を行う。制御パラメータは、統計値の計算タイミングを決めるためのNや、最大同時接続数cの初期値cminを含む。例えば、設定処理部120は、N=100、cmin=15に設定する。
(S2)設定処理部120は、最大同時接続数cを、初期値cminに設定する。この場合、処理サーバ300,300a,300bの総数をK(=3)とすると、処理サーバ300,300a,300bそれぞれの最大同時接続数ckは、ck=cmin/K=cmin/3である。プロキシ処理部130は、最大同時接続数ckに基づく各処理サーバに対するリクエストの振り分け処理を開始する。
(S3)設定処理部120は、記憶部110に記憶された履歴管理テーブル112を初期化する。すなわち、設定処理部120は、履歴管理テーブル112に登録されているレコードを消去する。また、設定処理部120は、リクエストの受信回数の計数に用いられるカウンタnを、n=0とする。
(S4)設定処理部120は、何れかの処理サーバにより新規に処理完了したリクエストを検出する。すると、設定処理部120は、nをインクリメントする(n+1をnに代入する)。なお、処理完了したリクエストが発生すると、プロキシ処理部130は、ログ(例えば、ログ111)を出力し、記憶部110に格納する。
(S5)設定処理部120は、プロキシ処理部130により出力されたログに基づいて、プロキシ待ち時間とサーバ処理時間とを履歴管理テーブル112に記録する。前述のように、設定処理部120は、ログのレコードのうち、リクエストの受け付け時刻、リクエスト内容、処理サーバの識別情報、サーバ処理時間およびプロキシ待ち時間のフィールドを参照して、履歴管理テーブル112の各項目に登録する値を得る。
(S6)設定処理部120は、n=Nであるか否かを判定する。n=Nの場合、処理をステップS7に進める。n=Nでない場合、処理をステップS4に進める。
(S7)設定処理部120は、履歴管理テーブル112を参照して、サーバ処理時間の統計値Tr、および、プロキシ待ち時間の統計値Twを計算する。統計値としては、例えば、前述のように90パーセンタイル値(あるいは、95パーセンタイル値や99パーセンタイル値など)を採用することが考えられる。
(S8)設定処理部120は、Tw≧Trであるか否かを判定する。Tw≧Trである場合、処理をステップS9に進める。Tw≧Trでない場合(すなわち、Tw<Trである場合)、処理をステップS10に進める。
(S9)設定処理部120は、最大同時接続数cを所定数増やす。設定処理部120は、処理サーバ300,300a,300bの個別の最大同時接続数ckを、ck=c/Kの式により計算し、ckの設定を更新する。そして、処理をステップS3に進める。
(S10)設定処理部120は、最大同時接続数cを所定数減らす。設定処理部120は、処理サーバ300,300a,300bの個別の最大同時接続数ckを、ck=c/Kの式により計算し、ckの設定を更新する。そして、処理をステップS11に進める。
(S11)設定処理部120は、c<cminであるか否かを判定する。c<cminである場合、処理をステップS2に進める。c<cminでない場合(すなわち、c≧cminである場合)、処理をステップS3に進める。
なお、ステップS9,S10では、統計値Tw,Trの差に応じて、最大同時接続数cの増減幅(変更量)dを決定してもよい。例えば、増減幅dの決定に、古典制御理論における比例制御を利用することが考えられる。具体的には、次の通りである。
まず、設定処理部120は、下記の式(1)により、Tw,Trの差を表す指標errorを計算する。
Figure 2018088041
ここで、式(1)の分母は、errorの値を、−1<error<1に正規化するものである。
設定処理部120は、増減幅dを、d=error×kpとする。ここで、kpは、例えば、最小値cminである。そして、ステップS9,S10では、設定処理部120は、c+dをcに代入する。
図12は、性能劣化の抑制例を示す図である。図12のグラフは、実行サーバ400,400a,400b,400cによるVM起動のリクエストを、クライアント200,200aにより大量に発行させて、VM起動時間(1つ当たりの仮想マシンの起動時間の統計値)を測定した結果である。例えば、VM起動時間は、プロキシサーバ100がVM起動のリクエストを受信してから、当該VM起動のリクエストに対する起動完了のレスポンスを、リクエスト元のクライアントに送信するまでの時間に相当する。したがって、VM起動時間は、VM起動のリクエストに関するプロキシ待ち時間およびサーバ処理時間の和である。
ここで、図12のグラフの横軸は最大同時接続数cである。縦軸はVM起動時間(単位は秒)である。1つの最大同時接続数cの設定(ここでは、15,30,・・・,150まで15ずつ増やした場合)に対して、VM起動時間の99パーセンタイル値、95パーセンタイル値、90パーセンタイル値、および、中央値(50パーセンタイル値)が示されている。adaptiveは、図11の手順により、最大同時接続数cの設定を動的に変化させた結果である。
図12のグラフによれば、VM起動時間が比較的長くなる最大同時接続数c=120,135,150の設定に対して、40〜50%程度、VM起動時間を改善できたことが分かる。
図13は、最大同時接続数の変更例を示す図である。図13のグラフの横軸は、最大同時接続数cを初期値で運用開始した時点からの経過時間(単位は、秒)である。図13のグラフの左側の縦軸は、時間(サーバ処理時間、プロキシ待ち時間およびクライアントへの応答時間であり、単位はミリ秒)である。図13のグラフの右側の縦軸は、最大同時接続数cの設定値である。
設定処理部120は、サーバ処理時間の統計値Trとプロキシ待ち時間の統計値Twとの差に応じて最大同時接続数cを動的に変更する。図13の例では、経過時間0秒〜150秒程度の時間帯は、Tw,Trの差が比較的大きい。設定処理部120は、このようにTw,Trの差が比較的大きい時間帯では、最大同時接続数cをアグレッシブに変更する(すなわち、増減幅dを大きくする)。一方、設定処理部120は、それ以降のTw,Trの差が比較的小さい時間帯では、最大同時接続数cの増減幅dを小さくする。
このように、設定処理部120は、統計値Tw,Trの差が大きいほど、増減幅dを大きくし、統計値Tw,Trの差が小さいほど、増減幅dを小さくする。これにより、クライアントへの応答時間の減少を早めることができ、また、クライアントへの応答時間が比較的小さい状態を長い時間維持できる。
以下では、第2の実施の形態の情報処理システムで想定される他の制御例を説明する。
図14は、最大同時接続数の他の制御例(その1)を示す図である。処理サーバ300,300a,300bは、プロキシサーバ100(図14では外部プロキシサーバ100と表記する)と通信する他に、内部プロキシサーバ500を介して、相互に通信することがある。例えば、内部プロキシサーバ500は、ネットワーク30に接続される。この場合、外部プロキシサーバ100は、クライアント200,200aからのリクエストを処理サーバ300,300a,300bに振り分ける。一方、内部プロキシサーバ500は、処理サーバ300,300a,300bからのリクエスト(APIリクエスト)を、処理サーバ300,300a,300bに振り分ける。
この場合、内部プロキシサーバ500は、処理サーバ300,300a,300bからのリクエストについては、無制限に(最大同時接続数を設けずに)処理することが考えられる。すなわち、クライアント側のリクエストの振り分けには最大同時接続数を設け、処理サーバ300,300a,300b間のリクエストの振り分けには、最大同時接続数の制限をなくすことで、処理サーバ300,300a,300bの処理時間を優先的に短縮する。
図15は、最大同時接続数の他の制御例(その2)を示す図である。プロキシサーバ100は、クライアント200,200aからのリクエストの種別によって、異なる処理サーバにリクエストを振り分けることがある。リクエストの種別は、例えば、HTTPメソッド(GETやPOSTなど)やURI(リソースが画像であるか音声であるかなど)によって区分される。例えば、処理サーバ300,300a,300bに加えて、処理サーバ300c,300d,300eがネットワーク20に接続されているとする。
処理サーバ300,300a,300bは、第1の種別のリクエストを処理する。処理サーバ300,300a,300bは、処理サーバの第1のグループに属する。また、処理サーバ300c,300d,300eは、第2の種別のリクエストを処理する。処理サーバ300c,300d,300eは、処理サーバの第2のグループに属する。
この場合、待ちバッファ140は、第1の種別のリクエストのバッファリングに用いられる。また、プロキシサーバ100は、第2の種別のリクエストのバッファリングに用いられる待ちバッファ140aを更に有する。
プロキシ処理部130は、クライアント200,200aから受信したリクエストの種別を判定し、判定された種別に応じて、何れかのグループの待ちバッファに、受信したリクエストを振り分ける(第1段階の振り分け)。すなわち、プロキシ処理部130は、クライアント200,200aから受信した第1の種別のリクエストを待ちバッファ140に格納する。また、プロキシ処理部130は、クライアント200,200aから受信した第2の種別のリクエストを待ちバッファ140aに格納する。そして、振り分け先のグループ内で、当該リクエストの処理サーバへの振り分けを行う(第2段階の振り分け)。
この場合、設定処理部120は、第1のグループおよび第2のグループについて、別個に、履歴管理テーブル112および統計値テーブル113を作成する。そして、設定処理部120は、処理サーバ300,300a,300bが属する第1のグループに対して最大同時接続数を設定する。また、設定処理部120は、処理サーバ300c,300d,300eが属する第2のグループに対して最大同時接続数を設定する。
ここで、例えば、処理サーバ300,300a,300bが比較的負荷の大きい処理(例えば比較的サイズの大きな画像データなどを扱う処理など)を主に行う場合がある。一方、処理サーバ300c,300d,300eが比較的負荷の小さい処理(例えば比較的サイズの小さなデータを扱う処理など)を主に行う場合がある。このような場合に、両サーバ群に対するリクエストを混在させて統計値Tw,Trを取得すると、両サーバ群による処理内容の違いに見合った最大同時接続数を設定するのが難しくなる。そこで、上記のように、設定処理部120は、リクエストの種別に応じた処理サーバのグループ毎に、最大同時接続数を調整することで、処理サーバ側の処理内容に応じた最大同時接続数を設定できる。
なお、設定処理部120は、リクエストの種別毎に異なるタイミングで、最大同時接続数の変更を行ってもよい。例えば、設定処理部120は、履歴管理テーブル112および統計値テーブル113をリクエストの種別毎に設け、図11の手順をリクエストの種別毎に並行して行ってもよい。
図16は、最大同時接続数の他の制御例(その3)を示す図である。処理サーバ300,300a,300bは、非同期処理を行うことがある。非同期処理とは、処理サーバ300によるレスポンスの送信後に、処理サーバ300内でリクエストに応じて実行される処理である。非同期処理に関する具体的なシーケンスは次の通りである。(1)プロキシサーバ100は、リクエストを受信する。(2)プロキシサーバ100は、処理サーバ300にリクエストを送信する。(3)処理サーバ300は、リクエストに応じたレスポンスをプロキシサーバ100に送信する。(4)処理サーバ300は、リクエストに応じた処理を非同期に実行する(非同期処理の実行)。
この場合、設定処理部120は、非同期処理を考慮して、サーバ処理時間の統計値Trを求めてもよい。
図17は、他の制御例(その3)における履歴管理テーブルの例を示す図である。例えば、記憶部110は、履歴管理テーブル112に非同期処理時間の項目を追加した履歴管理テーブル112aを、履歴管理テーブル112の代わりに記憶する。
非同期処理時間の項目には、リクエストの転送先の処理サーバにおける非同期処理の実行時間(単位は秒)が登録される。例えば、履歴管理テーブル112aには、リクエスト“GET /v2/servers”に対して、処理サーバ300aにおける非同期処理時間が“0”(秒)というレコードが登録されている。また、履歴管理テーブル112aには、リクエスト“HEAD /v1/user”に対して、処理サーバ300における非同期処理時間が“4.398”(秒)というレコードも登録されている。
設定処理部120は、例えば、各リクエストに関する非同期処理時間を、処理サーバ300,300a,300bに問合せることで、各リクエストに関する非同期処理時間を処理サーバ300,300a,300bから取得してもよい。あるいは、処理サーバ300,300a,300bにより実行された処理のログを受信するSyslogサーバを、プロキシサーバ100で動作させてもよい。この場合、設定処理部120は、Syslogサーバにより取得されたログを解析することで、各リクエストの非同期処理時間を取得する。
設定処理部120は、履歴管理テーブル112aにおいて、処理時間の項目に記録された時間の統計値に、非同期処理時間の統計値を加算した値を、サーバ処理時間の統計値Trとする。例えば、設定処理部120は、統計値テーブル113aに示されるように、履歴管理テーブル112aにおける処理時間の値の90パーセンタイル値(8.54)と、非同期処理時間の値の90パーセンタイル値(3.428)とを加算した値をTrとする。すなわち、設定処理部120は、図15までに説明したサーバ処理時間の統計値を、処理サーバ300,300a,300bによる非同期処理時間(または、非同期処理時間の統計値)に基づいて補正し、補正後の値を、サーバ処理時間の統計値Trとして採用する。
このように、設定処理部120は、非同期処理時間を考慮したサーバ処理時間の統計値Trを用いて、最大同時接続数の設定を行ってもよい。これにより、最大同時接続数の設定に対して、処理サーバ300,300a,300cの負荷を、より適切に反映させることができる。
ここで、例えば、最大同時接続数を設定するために、図6の関係性を事前に調査して、クライアントに対する応答時間Ttが極小となる最大同時接続数をプロキシサーバ100に予め設定しておくことが考えられる。しかし、調査時の環境がその後も常に維持されるとは限らない。例えば、クライアントの数が増減したり、あるいは、処理サーバの数が増えたりすると、応答時間Ttが極小をとる最大同時接続数は変わり得る。また、調査時と現実の運用の環境が必ずしも一致しているとも限らない。このように、事前の調査などに基づく静的な設定では、クラウドサービスにおけるサービス品質の劣化を抑制できない可能性がある。
そこで、設定処理部120は、図6における系列A1,B1,C1にみられる、システム構成の変換に依らない特性に着目して、最大同時接続数を変更する。すなわち、系列A1,B1によれば、最大同時接続数が小さいほど、プロキシ待ち時間の統計値Twが、サーバ処理時間の統計値Trよりも大きくなる傾向にある。一方、系列A1,B1によれば、最大同時接続数が大きいほど、サーバ処理時間の統計値Trが、プロキシ待ち時間の統計値Twよりも大きくなる傾向にある。したがって、設定処理部120は、統計値Tw,Trを比較し、統計値Tr,Twに差がある場合に、最大同時接続数を変更する。
具体的には、設定処理部120は、プロキシ待ち時間の統計値Twがサーバ処理時間の統計値Tr以上の場合、最大同時接続数を増やす。一方、設定処理部120は、プロキシ待ち時間の統計値Twがサーバ処理時間の統計値Trよりも小さい場合、最大同時接続数を減らす。これにより、クライアントに対する応答時間Ttを極小値に近い値にシフトさせる。
このように、設定処理部120は、処理サーバ300,300a,300bに対する最大同時接続数を動的に変更することで、応答性能の劣化を抑制するように最大同時接続数を調整可能になる。特に、事前の調査などによって最大同時接続数を静的に設定するよりも、クライアントに対する応答時間の劣化を抑えることができる。例えば、処理サーバ300,300a,300bへの負荷が時間によって変動する場合や障害が発生した場合でも、応答時間の劣化を抑えることができる。その結果、クラウドサービスにおけるサービス品質の向上を図れる。
なお、第1の実施の形態の情報処理は、処理部1bにプログラムを実行させることで実現できる。また、第2の実施の形態の情報処理は、プロセッサ101にプログラムを実行させることで実現できる。プログラムは、コンピュータ読み取り可能な記録媒体13に記録できる。
例えば、プログラムを記録した記録媒体13を配布することで、プログラムを流通させることができる。また、プログラムを他のコンピュータに格納しておき、ネットワーク経由でプログラムを配布してもよい。コンピュータは、例えば、記録媒体13に記録されたプログラムまたは他のコンピュータから受信したプログラムを、RAM102やHDD103などの記憶装置に格納し(インストールし)、当該記憶装置からプログラムを読み込んで実行してもよい。
1 振り分け装置
1a 記憶部
1b 処理部
2,3 第1の装置
4,5 第2の装置
6,7 ネットワーク
A,B,C 系列
d1 バッファ

Claims (9)

  1. 第1の装置により送信されたリクエストを受信してから前記リクエストを第2の装置に送信するまでの第1の時間と、前記第2の装置に前記リクエストを送信してから前記リクエストに対するレスポンスを受信するまでの第2の時間とを、複数のリクエストそれぞれに対して記録し、
    前記第1の時間の統計値と前記第2の時間の統計値との比較に応じて、前記第2の装置に対する同時接続数の上限を変更する、
    処理をコンピュータに実行させる接続数制御プログラム。
  2. 前記上限の変更では、前記第1の時間の統計値が前記第2の時間の統計値以上の場合、前記上限を増やす、請求項1記載の接続数制御プログラム。
  3. 前記上限の変更では、前記第1の時間の統計値が前記第2の時間の統計値よりも小さい場合、前記上限を減らす、請求項1または2記載の接続数制御プログラム。
  4. 前記上限の変更では、前記第1の時間の統計値と前記第2の時間の統計値との差に応じて、変更量を決定する、請求項1乃至3の何れか1項に記載の接続数制御プログラム。
  5. 前記上限の変更では、前記第1の時間の統計値と前記第2の時間の統計値とを前記リクエストの種別毎に求め、前記上限を前記種別毎に変更する、請求項1乃至4の何れか1項に記載の接続数制御プログラム。
  6. 前記第1の時間および前記第2の時間の記録では、前記第2の装置による前記レスポンスの送信後に前記リクエストに応じて前記第2の装置により実行された非同期処理の実行時間を更に記録し、
    前記上限の変更では、前記非同期処理の実行時間に基づいて、前記第2の時間の統計値を補正する、
    請求項1乃至5の何れか1項に記載の接続数制御プログラム。
  7. 前記第1の装置から前記リクエストを受信すると、前記第2の装置に送信済の前記リクエストのうち、前記レスポンスを未受信である前記リクエストの数と前記上限との比較に応じて、受信した前記リクエストの前記第2の装置への送信を制限する、処理を更に前記コンピュータに実行させる請求項1乃至6の何れか1項に記載の接続数制御プログラム。
  8. 第1の装置により送信されたリクエストを受信してから前記リクエストを第2の装置に送信するまでの第1の時間と、前記第2の装置に前記リクエストを送信してから前記リクエストに対するレスポンスを受信するまでの第2の時間とを、複数のリクエストそれぞれに対して記憶する記憶部と、
    前記第1の時間と前記第2の時間とを前記記憶部に記録し、前記第1の時間の統計値と前記第2の時間の統計値との比較に応じて、前記第2の装置に対する同時接続数の上限を変更する処理部と、
    を有する振り分け装置。
  9. コンピュータが、
    第1の装置により送信されたリクエストを受信してから前記リクエストを第2の装置に送信するまでの第1の時間と、前記第2の装置に前記リクエストを送信してから前記リクエストに対するレスポンスを受信するまでの第2の時間とを、複数のリクエストそれぞれに対して記録し、
    前記第1の時間の統計値と前記第2の時間の統計値との比較に応じて、前記第2の装置に対する同時接続数の上限を変更する、
    接続数制御方法。
JP2016229939A 2016-11-28 2016-11-28 接続数制御プログラム、振り分け装置および接続数制御方法 Active JP6748359B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2016229939A JP6748359B2 (ja) 2016-11-28 2016-11-28 接続数制御プログラム、振り分け装置および接続数制御方法
US15/800,134 US10476732B2 (en) 2016-11-28 2017-11-01 Number-of-couplings control method and distributing device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016229939A JP6748359B2 (ja) 2016-11-28 2016-11-28 接続数制御プログラム、振り分け装置および接続数制御方法

Publications (2)

Publication Number Publication Date
JP2018088041A true JP2018088041A (ja) 2018-06-07
JP6748359B2 JP6748359B2 (ja) 2020-09-02

Family

ID=62191097

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016229939A Active JP6748359B2 (ja) 2016-11-28 2016-11-28 接続数制御プログラム、振り分け装置および接続数制御方法

Country Status (2)

Country Link
US (1) US10476732B2 (ja)
JP (1) JP6748359B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022013907A1 (ja) * 2020-07-13 2022-01-20 日本電信電話株式会社 中継装置、振分装置、中継装置の経路切替方法、振分装置の経路切替方法、及びプログラム
WO2023187885A1 (ja) * 2022-03-28 2023-10-05 日本電信電話株式会社 サーバ選択システム、サーバ選択方法、サーバ選択装置、接続ノード、および、プログラム

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11900182B2 (en) * 2021-10-06 2024-02-13 Imperva, Inc. Waiting room with zero latency

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU2001296993A1 (en) * 2000-10-05 2002-04-15 Christopher Peiffer Connection management system and method
JP2004070860A (ja) * 2002-08-09 2004-03-04 Hitachi Ltd ストリームコンテンツ配送システムおよびプロキシサーバ
JP2005184165A (ja) 2003-12-17 2005-07-07 Hitachi Ltd トラフィック制御装置およびそれを用いたサービスシステム
JP2006293885A (ja) * 2005-04-14 2006-10-26 I Broadcast:Kk 情報配信システムと方法およびプログラム
US8667120B2 (en) * 2006-04-26 2014-03-04 Nippon Telegraph And Telephone Corporation Load control device and method thereof for controlling requests sent to a server
US20070299965A1 (en) * 2006-06-22 2007-12-27 Jason Nieh Management of client perceived page view response time
US20100274922A1 (en) * 2009-03-31 2010-10-28 Reavely Simon System and method for managing long lived connections from a plurality of applications running on a wireless device
CN103403707B (zh) * 2010-12-28 2017-11-14 思杰系统有限公司 用于数据库代理请求交换的系统和方法
WO2012092268A1 (en) * 2010-12-29 2012-07-05 Citrix Systems, Inc. Systems and methods for scalable n-core statistics aggregation
WO2013129061A1 (ja) 2012-02-28 2013-09-06 日本電気株式会社 同時接続数制御システム、同時接続数制御サーバ、同時接続数制御方法および同時接続数制御プログラム
US9235618B2 (en) * 2013-04-06 2016-01-12 Citrix Systems, Inc. Systems and methods for caching of SQL responses using integrated caching
US9444752B2 (en) * 2013-07-12 2016-09-13 Seven Networks, Llc Distributed caching systems with configurable extended caching optimization
EP3037965A1 (en) * 2014-12-22 2016-06-29 Oberthur Technologies Client-server communication
US11057446B2 (en) * 2015-05-14 2021-07-06 Bright Data Ltd. System and method for streaming content from multiple servers

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022013907A1 (ja) * 2020-07-13 2022-01-20 日本電信電話株式会社 中継装置、振分装置、中継装置の経路切替方法、振分装置の経路切替方法、及びプログラム
JP7435783B2 (ja) 2020-07-13 2024-02-21 日本電信電話株式会社 中継装置、振分装置、中継装置の経路切替方法、振分装置の経路切替方法、及びプログラム
WO2023187885A1 (ja) * 2022-03-28 2023-10-05 日本電信電話株式会社 サーバ選択システム、サーバ選択方法、サーバ選択装置、接続ノード、および、プログラム

Also Published As

Publication number Publication date
US20180152335A1 (en) 2018-05-31
US10476732B2 (en) 2019-11-12
JP6748359B2 (ja) 2020-09-02

Similar Documents

Publication Publication Date Title
US11411825B2 (en) In intelligent autoscale of services
US11171849B2 (en) Collecting samples hierarchically in a datacenter
US9477618B2 (en) Information processing device, information processing system, storage medium storing program for controlling information processing device, and method for controlling information processing device
US10129332B2 (en) Load balancing of distributed services
US11216310B2 (en) Capacity expansion method and apparatus
US20060161920A1 (en) Method, system, and computer program for managing a queuing system
US9229778B2 (en) Method and system for dynamic scaling in a cloud environment
US8606905B1 (en) Automated determination of system scalability and scalability constraint factors
US10126980B2 (en) Managing data operations in a quorum-based data replication system
US10944683B1 (en) Hybrid queue system for request throttling
JP2015197715A (ja) キャプチャポイント決定方法、キャプチャポイント決定システムおよびキャプチャポイント決定プログラム
JP6748359B2 (ja) 接続数制御プログラム、振り分け装置および接続数制御方法
US10146584B2 (en) Weight adjusted dynamic task propagation
US20140136659A1 (en) Timeout Value Adaptation
Zinner et al. A discrete-time model for optimizing the processing time of virtualized network functions
CN115525400A (zh) 基于批次来管理多个计算任务的方法、设备和程序产品
US11977513B2 (en) Data flow control in distributed computing systems
US10673937B2 (en) Dynamic record-level sharing (RLS) provisioning inside a data-sharing subsystem
US11876729B2 (en) Method and system for a proactive assignment of virtual network functions in local data systems
US11474868B1 (en) Sharded polling system
US20200404081A1 (en) Storage medium and packet analyzing device
US10171622B2 (en) Dynamic content reordering for delivery to mobile devices
US11003512B2 (en) System and method for optimizing bulk data operation
US11061602B2 (en) System and method for event based storage management
CN113300901B (zh) 一种数据流监控方法、装置、电子设备以及存储介质

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190807

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20190815

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20190815

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200630

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200720

R150 Certificate of patent or registration of utility model

Ref document number: 6748359

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150