(57)【特許請求の範囲】
【請求項１】
サーバ装置の負荷情報を複数の負荷項目について取得する負荷情報取得手段と、
クライアント装置から前記サーバ装置に送信されたリクエストを複数のリクエストパターンに分類し、前記リクエストパターン毎にそのリクエストパターンに属する前記リクエストの前記サーバ装置による処理結果を示す負荷指標値を取得するリクエスト分類手段と、
前記負荷指標値に基づいて前記リクエストパターン毎かつ前記負荷項目毎に前記リクエストが前記負荷情報に与える影響の程度を示す影響指標値を算出する影響指標値算出手段と、
前記影響指標値に基づいてリクエスト制限の対象とする制限リクエストパターンを決定し、この制限リクエストパターンに属する前記リクエストの一部または全部に対して制限を行うリクエスト制限手段とを備えたリクエスト制限装置。
【請求項２】
前記リクエスト分類手段は、前記クライアント装置のネットワークアドレスまたは前記リクエストに含まれ前記クライアント装置がアクセスしようとするコンテンツを特定する情報を基準として前記分類を行うことを特徴とした請求項１に記載のリクエスト制限装置。
【請求項３】
前記負荷項目は、前記サーバ装置のＣＰＵの使用率を示すＣＰＵ負荷と前記サーバ装置の入出力インターフェースの使用率を示すＩ／Ｏ負荷と前記サーバ装置と前記クライアント装置との間の論理的接続の数を示す同時接続数のうち少なくともひとつを含むことを特徴とした請求項１または請求項２に記載のリクエスト制限装置。
【請求項４】
前記負荷指標値は、前記リクエストの受信数を示すアクセス数と前記リクエストを受信してから前記クライアント装置にレスポンスを送信するまでに要した時間の平均値である平均レスポンス時間と、前記リクエストを処理するために前記クライアント装置と前記サーバ装置との間で転送された情報の量の平均値である平均転送バイト数と、前記リクエストを処理するために実行されたＣＧＩプログラムの実行時間の平均値である平均実行時間のうち少なくともひとつを含むことを特徴とした請求項１ないし請求項３のいずれかひとつに記載のリクエスト制限装置。
【請求項５】
前記影響指標値算出手段は、前記負荷指標値に前記負荷項目毎に定めた係数を乗じた数値に基づいて前記影響指標値を算出することを特徴とした請求項１ないし請求項４のいずれかひとつに記載のリクエスト制限装置。
【請求項６】
前記リクエスト制限手段は、前記負荷情報の中に所定の閾値を超えるものがある場合に、その負荷情報に対応する前記影響指標値が最大である前記リクエストグループを前記制限パターンとすることを特徴とした請求項１ないし請求項５のいずれかひとつに記載のリクエスト制限装置。
【請求項７】
クライアント装置からのリクエストを受信しこのリクエストに対するレスポンスを前記クライアント装置に送信するサーバ装置において、
前記サーバ装置の負荷情報を複数の負荷項目について取得する負荷情報取得手段と、
前記リクエストを複数のリクエストパターンに分類し、前記リクエストパターン毎にそのリクエストパターンに属する前記リクエストの処理結果を示す負荷指標値を取得するリクエスト分類手段と、
前記負荷指標値に基づいて前記リクエストパターン毎かつ前記負荷項目毎に前記リクエストが前記負荷情報に与える影響の程度を示す影響指標値を算出する影響指標値算出手段と、
前記影響指標値に基づいてリクエスト制限の対象とする制限リクエストパターンを決定し、この制限リクエストパターンに属する前記リクエストの一部または全部に対して制限を行うリクエスト制限手段と、
を備えたことを特徴としたサーバ装置。
【請求項８】
サーバ装置の負荷情報を複数の負荷項目について取得する負荷情報取得工程と、
クライアント装置から前記サーバ装置に送信されたリクエストを複数のリクエストパターンに分類し、前記リクエストパターン毎にそのリクエストパターンに属する前記リクエストの前記サーバ装置による処理結果を示す負荷指標値を取得するリクエスト分類工程と、
前記負荷指標値に基づいて前記リクエストパターン毎かつ前記負荷項目毎に前記リクエストが前記負荷情報に与える影響の程度を示す影響指標値を算出する影響指標値算出工程と、
前記影響指標値に基づいてリクエスト制限の対象とする制限リクエストパターンを決定し、この制限リクエストパターンに属する前記リクエストの一部または全部に対して制限を行うリクエスト制限工程との全工程をリクエスト制限装置が実行するリクエスト制限方法。
【請求項９】
前記リクエスト分類工程では、前記クライアント装置のネットワークアドレスまたは前記リクエストに含まれ前記クライアント装置がアクセスしようとするコンテンツを特定する情報を基準として前記分類を行うことを特徴とした請求項８に記載のリクエスト制限方法。
【請求項１０】
前記負荷項目は、前記サーバ装置のＣＰＵの使用率を示すＣＰＵ負荷と前記サーバ装置の入出力インターフェースの使用率を示すＩ／Ｏ負荷と前記サーバ装置と前記クライアント装置との間の論理的接続の数を示す同時接続数のうち少なくともひとつを含むことを特徴とした請求項８または請求項９に記載のリクエスト制限方法。
【請求項１１】
前記負荷指標値は、前記リクエストの受信数を示すアクセス数と前記リクエストを受信してから前記クライアント装置にレスポンスを送信するまでに要した時間の平均値である平均レスポンス時間と、前記リクエストを処理するために前記クライアント装置と前記サーバ装置との間で転送された情報の量の平均値である平均転送バイト数と、前記リクエストを処理するために実行されたＣＧＩプログラムの実行時間の平均値である平均実行時間のうち少なくともひとつを含むことを特徴とした請求項８ないし請求項１０のいずれかひとつに記載のリクエスト制限方法。
【請求項１２】
前記影響指標値算出工程では、前記負荷指標値に前記負荷項目毎に定めた係数を乗じた数値に基づいて前記影響指標値を算出することを特徴とした請求項８ないし請求項１１のいずれかひとつに記載のリクエスト制限方法。
【請求項１３】
前記リクエスト制限工程では、前記負荷情報の中に所定の閾値を超えるものがある場合に、その負荷情報に対応する前記影響指標値が最大である前記リクエストグループを前記制限パターンとすることを特徴とした請求項８ないし請求項１２のいずれかひとつに記載のリクエスト制限方法。
【請求項１４】
コンピュータに、
サーバ装置の負荷情報を複数の負荷項目について取得する負荷情報取得処理と、
クライアント装置から前記サーバ装置に送信されたリクエストを複数のリクエストパターンに分類し、前記リクエストパターン毎にそのリクエストパターンに属する前記リクエストの前記サーバ装置による処理結果を示す負荷指標値を取得するリクエスト分類処理と、
前記負荷指標値に基づいて前記リクエストパターン毎かつ前記負荷項目毎に前記リクエストが前記負荷情報に与える影響の程度を示す影響指標値を算出する影響指標値算出処理と、
前記影響指標値に基づいてリクエスト制限の対象とする制限リクエストパターンを決定し、この制限リクエストパターンに属する前記リクエストの一部または全部に対して制限を行うリクエスト制限処理と、を実行させることを特徴としたリクエスト制限プログラム。
【請求項１５】
前記リクエスト分類処理は、前記クライアント装置のネットワークアドレスまたは前記リクエストに含まれ前記クライアント装置がアクセスしようとするコンテンツを特定する情報を基準として前記分類を行うものであることを特徴とした請求項１４に記載のリクエスト制限プログラム。
【請求項１６】
前記負荷項目は、前記サーバ装置のＣＰＵの使用率を示すＣＰＵ負荷と前記サーバ装置の入出力インターフェースの使用率を示すＩ／Ｏ負荷と前記サーバ装置と前記クライアント装置との間の論理的接続の数を示す同時接続数のうち少なくともひとつを含むことを特徴とした請求項１４または請求項１５に記載のリクエスト制限プログラム。
【請求項１７】
前記負荷指標値は、前記リクエストの受信数を示すアクセス数と前記リクエストを受信してから前記クライアント装置にレスポンスを送信するまでに要した時間の平均値である平均レスポンス時間と、前記リクエストを処理するために前記クライアント装置と前記サーバ装置との間で転送された情報の量の平均値である平均転送バイト数と、前記リクエストを処理するために実行されたＣＧＩプログラムの実行時間の平均値である平均実行時間のうち少なくともひとつを含むことを特徴とした請求項１４ないし請求項１６のいずれかひとつに記載のリクエスト制限プログラム。
【請求項１８】
前記影響指標値算出処理は、前記負荷指標値に前記負荷項目毎に定めた係数を乗じた数値に基づいて前記影響指標値を算出するものであることを特徴とした請求項１４ないし請求項１７のいずれかひとつに記載のリクエスト制限プログラム。
【請求項１９】
前記リクエスト制限処理は、前記負荷情報の中に所定の閾値を超えるものがある場合に、その負荷情報に対応する前記影響指標値が最大である前記リクエストグループを前記制限パターンとするものであることを特徴とした請求項１４ないし請求項１８のいずれかひとつに記載のリクエスト制限プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、サーバのリクエスト制限技術に関し、特に、サーバの負荷低減に最も効果が高いと考えられる特定のリクエストパターンを選択的に制限する技術に関する。
【背景技術】
【０００２】
不特定多数のユーザにサービスを提供するウェブサーバシステムではサービス提供の仕組上、アクセスの多寡により大幅な負荷の変動が発生するケースが多い。サーバの負荷が増大しサービスを正常に提供できなくなりそうな場合に、端末からのアクセスを制限する技術が特許文献１に記載されている。
この文献に記載のアクセス制御装置は、サーバの負荷を計測する負荷計測手段と、負荷計測手段により計測されたサーバの負荷が規定値を越えた場合は、端末からのリクエストをサーバへ送信せずに、所定の結果を端末へ送信し、越えていない場合は、リクエストをサーバへ送信する受付処理手段を具備し、この構成によりサーバへのアクセス集中で処理効率を指数的に悪化させることなしに、サーバの処理量を常に最大処理能力の近傍で維持する。
【０００３】
【特許文献１】特開２００２−２５９２３４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
図９に示すように、クライアントからのリクエストがサーバにかける負荷はCPU（Central Processing Unit）利用率を増加させるものや、I/O負荷を増加させるものなど、そのリクエストのパターンによって様々である。たとえば、図９に示す「Ａパターン」は、Ｉ／Ｏ負荷への影響度が顕著であり、「Ｃパターン」は、ＣＰＵ負荷への影響度が顕著である。「Ｂパターン」は、上記の３種類の負荷への影響度がいずれも小さい。
【０００５】
サーバの負荷が変動する原因は全てのコンテンツへのアクセスが均等に変動することではなく、特定のコンテンツへのリクエスト集中や、特定アドレスからの集中的なリクエストが原因となる場合がほとんどである。つまり、サーバの負荷が過大となるのは、特定のパターンのリクエストが集中する場合である。
このような場合、従来のトラフィック制御の仕組みでは、サーバの負荷状態（I/O負荷、CPU負荷、同時接続数などのいずれが過大となっているか）に関係なく、リクエストを一律に制限していた。
【０００６】
図１０と図１１は、このような制限の方法を模式的に示した図である。いま、サーバの負荷が図１１に示すように、ＣＰＵ負荷は過大となっているがＩ／Ｏ負荷と同時接続数には余裕がある状態となっていたとする。この場合でも、従来の方法では、図１０に示すように、ＣＰＵ負荷には大きな影響を与えないＡパターンとＢパターンのリクエストに対しても制限を行っていた。
このため、特定の枯渇したリソースがネックとなり、枯渇していないリソースを主に占有するリクエストまで制限されサーバの処理能力を効果的に活用することができなかった。
【０００７】
そこで、本発明は、サーバの負荷状態に応じて、最も負荷低減効果が高いと考えられる特定のリクエストパターンを選択的に制限するリクエスト制限方法等を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明のアクセス制限装置は、サーバ装置の負荷情報を複数の負荷項目について取得する負荷情報取得手段と、クライアント装置からサーバ装置に送信されたリクエストを複数のリクエストパターンに分類し、リクエストパターン毎にそのリクエストパターンに属するリクエストのサーバ装置による処理結果を示す負荷指標値を取得するリクエスト分類手段と、負荷指標値に基づいてリクエストパターン毎かつ負荷項目毎にリクエストが負荷情報に与える影響の程度を示す影響指標値を算出する影響指標値算出手段と、影響指標値に基づいてリクエスト制限の対象とする制限リクエストパターンを決定し、この制限リクエストパターンに属するリクエストの一部または全部に対して制限を行うリクエスト制限手段とを備える（請求項１ないし請求項６）。
【０００９】
上記アクセス制限装置によれば、リクエスト制限手段は、リクエストパターン毎、負荷情報毎に算出された負荷影響値に基づいて制限リクエストパターンを決定しそのパターンに含まれるリクエストに対して制限を実施する。
そのため、過大となっている負荷情報に対する影響の大きいリクエストのみを制限し、サーバ装置のリソースを有効に活用することができる。
【００１０】
上記リクエスト制限装置において、リクエスト分類手段は、クライアント装置のネットワークアドレスまたはリクエストに含まれクライアント装置がアクセスしようとするコンテンツを特定する情報を基準として分類を行うようにしてもよい（請求項２）。
このようにすれば、特定のクライアント装置から大量のリクエストが送信された場合、または、サーバ装置が提供する特定のコンテンツにアクセスが集中した場合に、制限の対象とするアクセスグループを適切に選択することができる。
【００１１】
上記リクエスト制限装置において、負荷項目は、サーバ装置のＣＰＵの使用率を示すＣＰＵ負荷とサーバ装置の入出力インターフェースの使用率を示すＩ／Ｏ負荷とサーバ装置とクライアント装置との間の論理的接続の数を示す同時接続数のうち少なくともひとつを含むようにしてもよい（請求項３）。
このようにすれば、サーバ装置の備えるハードウェアリソース毎に負荷情報を収集し処理のボトルネックとなっているハードウェアの負荷を軽減することができる。
【００１２】
上記リクエスト制限装置において、負荷指標値は、リクエストの受信数を示すアクセス数とリクエストを受信してからクライアント装置にレスポンスを送信するまでに要した時間の平均値である平均レスポンス時間と、リクエストを処理するためにクライアント装置とサーバ装置との間で転送された情報の量の平均値である平均転送バイト数と、リクエストを処理するために実行されたＣＧＩプログラムの実行時間の平均値である平均実行時間のうち少なくともひとつを含むようにしてもよい（請求項４）。
このようにすれば、リクエストサーバ装置の処理能力、リクエストの量とその性質に応じて影響指標値を適切に算出することができる。
【００１３】
上記リクエスト制限装置において、影響指標値算出手段は、負荷指標値に負荷項目毎に定めた係数を乗じた数値に基づいて影響指標値を算出するようにしてもよい（請求項５）。
このようにすれば、サーバ装置が備えるハードウェアとサーバ装置で動作するプログラムの特性に応じて係数を適切に定めて、個々のサーバ装置にとってもっとも効果的なリクエスト制限を行うことができる。
【００１４】
上記リクエスト制限装置において、リクエスト制限手段は、負荷情報の中に所定の閾値を超えるものがある場合に、その負荷情報に対応する影響指標値が最大であるリクエストグループを制限パターンとするようにしてもよい（請求項６）。
このようにすれば、過大となっている負荷情報を低減させるために最も効果的なリクエスト制限を行うことができる。
【００１５】
本発明のサーバ装置は、サーバ装置の負荷情報を複数の負荷項目について取得する負荷情報取得手段と、リクエストを複数のリクエストパターンに分類し、リクエストパターン毎にそのリクエストパターンに属するリクエストの処理結果を示す負荷指標値を取得するリクエスト分類手段と、負荷指標値に基づいてリクエストパターン毎かつ負荷項目毎にリクエストが負荷情報に与える影響の程度を示す影響指標値を算出する影響指標値算出手段と、影響指標値に基づいてリクエスト制限の対象とする制限リクエストパターンを決定し、この制限リクエストパターンに属するリクエストの一部または全部に対して制限を行うリクエスト制限手段とを備える（請求項７）。
【００１６】
上記サーバ装置によれば、リクエスト制限手段は、リクエストパターン毎、負荷情報毎に算出された負荷影響値に基づいて制限リクエストパターンを決定しそのパターンに含まれるリクエストに対して制限を実施する。
そのため、過大となっている負荷情報に対する影響の大きいリクエストのみを制限し、サーバ装置のリソースを有効に活用することができる。
【００１７】
本発明のリクエスト制限方法は、サーバ装置の負荷情報を複数の負荷項目について取得する負荷情報取得工程と、クライアント装置からサーバ装置に送信されたリクエストを複数のリクエストパターンに分類し、リクエストパターン毎にそのリクエストパターンに属するリクエストのサーバ装置による処理結果を示す負荷指標値を取得するリクエスト分類工程と、負荷指標値に基づいてリクエストパターン毎かつ負荷項目毎にリクエストが負荷情報に与える影響の程度を示す影響指標値を算出する影響指標値算出工程と、影響指標値に基づいてリクエスト制限の対象とする制限リクエストパターンを決定し、この制限リクエストパターンに属するリクエストの一部または全部に対して制限を行うリクエスト制限工程との全工程をリクエスト制限装置が実行する方法である（請求項８）。
【００１８】
上記リクエスト制限方法によれば、リクエスト制限工程では、リクエストパターン毎、負荷情報毎に算出された負荷影響値に基づいて制限リクエストパターンを決定しそのパターンに含まれるリクエストに対して制限を実施する。
そのため、過大となっている負荷情報に対する影響の大きいリクエストのみを制限し、サーバ装置のリソースを有効に活用することができる。
【００１９】
上記リクエスト制限方法において、リクエスト分類工程では、クライアント装置のネットワークアドレスまたはリクエストに含まれクライアント装置がアクセスしようとするコンテンツを特定する情報を基準として分類を行うようにしても良い（請求項９）。
このようにすれば、特定のクライアント装置から大量のリクエストが送信された場合、または、サーバ装置が提供する特定のコンテンツにアクセスが集中した場合に、制限の対象とするアクセスグループを適切に選択することができる。
【００２０】
上記リクエスト制限方法において、負荷項目は、サーバ装置のＣＰＵの使用率を示すＣＰＵ負荷とサーバ装置の入出力インターフェースの使用率を示すＩ／Ｏ負荷とサーバ装置とクライアント装置との間の論理的接続の数を示す同時接続数のうち少なくともひとつを含むようにしても良い（請求項１０）。
このようにすれば、サーバ装置の備えるハードウェアリソース毎に負荷情報を収集し処理のボトルネックとなっているハードウェアの負荷を軽減することができる。
【００２１】
上記リクエスト制限方法において、負荷指標値は、リクエストの受信数を示すアクセス数とリクエストを受信してからクライアント装置にレスポンスを送信するまでに要した時間の平均値である平均レスポンス時間と、リクエストを処理するためにクライアント装置とサーバ装置との間で転送された情報の量の平均値である平均転送バイト数と、リクエストを処理するために実行されたＣＧＩプログラムの実行時間の平均値である平均実行時間のうち少なくともひとつを含むようにしても良い（請求項１１）。
このようにすれば、リクエストサーバ装置の処理能力、リクエストの量とその性質に応じて影響指標値を適切に算出することができる。
【００２２】
上記リクエスト制限方法において、影響指標値算出工程では、負荷指標値に負荷項目毎に定めた係数を乗じた数値に基づいて影響指標値を算出するようにしても良い（請求項１２）。
このようにすれば、サーバ装置が備えるハードウェアとサーバ装置で動作するプログラムの特性に応じて係数を適切に定めて、個々のサーバ装置にとってもっとも効果的なリクエスト制限を行うことができる。
【００２３】
上記リクエスト制限方法において、リクエスト制限工程では、負荷情報の中に所定の閾値を超えるものがある場合に、その負荷情報に対応する影響指標値が最大であるリクエストグループを制限パターンとするようにしても良い（請求項１３）。
このようにすれば、過大となっている負荷情報を低減させるために最も効果的なリクエスト制限を行うことができる。
【００２４】
本発明のリクエスト制限プログラムは、コンピュータに、サーバ装置の負荷情報を複数の負荷項目について取得する負荷情報取得処理と、クライアント装置からサーバ装置に送信されたリクエストを複数のリクエストパターンに分類し、リクエストパターン毎にそのリクエストパターンに属するリクエストのサーバ装置による処理結果を示す負荷指標値を取得するリクエスト分類処理と、負荷指標値に基づいてリクエストパターン毎かつ負荷項目毎にリクエストが負荷情報に与える影響の程度を示す影響指標値を算出する影響指標値算出処理と、影響指標値に基づいてリクエスト制限の対象とする制限リクエストパターンを決定し、この制限リクエストパターンに属するリクエストの一部または全部に対して制限を行うリクエスト制限処理とを実行させることによりリクエスト制限を行う（請求項１４ないし請求項１９）。
【００２５】
上記リクエスト制限プログラムによれば、リクエスト制限処理では、リクエストパターン毎、負荷情報毎に算出された負荷影響値に基づいて制限リクエストパターンを決定しそのパターンに含まれるリクエストに対して制限を実施する。
そのため、過大となっている負荷情報に対する影響の大きいリクエストのみを制限し、サーバ装置のリソースを有効に活用することができる。
【００２６】
上記リクエスト制限プログラムにおいて、リクエスト分類処理を、クライアント装置のネットワークアドレスまたはリクエストに含まれクライアント装置がアクセスしようとするコンテンツを特定する情報を基準として分類を行うものとしても良い（請求項１５）。
このようにすれば、特定のクライアント装置から大量のリクエストが送信された場合、または、サーバ装置が提供する特定のコンテンツにアクセスが集中した場合に、制限の対象とするアクセスグループを適切に選択することができる。
【００２７】
上記リクエスト制限プログラムにおいて、負荷項目は、サーバ装置のＣＰＵの使用率を示すＣＰＵ負荷とサーバ装置の入出力インターフェースの使用率を示すＩ／Ｏ負荷とサーバ装置とクライアント装置との間の論理的接続の数を示す同時接続数のうち少なくともひとつを含むようにしても良い（請求項１６）。
このようにすれば、サーバ装置の備えるハードウェアリソース毎に負荷情報を収集し処理のボトルネックとなっているハードウェアの負荷を軽減することができる。
【００２８】
上記リクエスト制限プログラムにおいて、負荷指標値は、リクエストの受信数を示すアクセス数とリクエストを受信してからクライアント装置にレスポンスを送信するまでに要した時間の平均値である平均レスポンス時間と、リクエストを処理するためにクライアント装置とサーバ装置との間で転送された情報の量の平均値である平均転送バイト数と、リクエストを処理するために実行されたＣＧＩプログラムの実行時間の平均値である平均実行時間のうち少なくともひとつを含むようにしても良い（請求項１７）。
このようにすれば、リクエストサーバ装置の処理能力、リクエストの量とその性質に応じて影響指標値を適切に算出することができる。
【００２９】
上記リクエスト制限プログラムにおいて、影響指標値算出処理を、負荷指標値に負荷項目毎に定めた係数を乗じた数値に基づいて影響指標値を算出するものとしても良い（請求項１８）。
このようにすれば、サーバ装置が備えるハードウェアとサーバ装置で動作するプログラムの特性に応じて係数を適切に定めて、個々のサーバ装置にとってもっとも効果的なリクエスト制限を行うことができる。
【００３０】
上記リクエスト制限プログラムにおいて、リクエスト制限処理を、負荷情報の中に所定の閾値を超えるものがある場合に、その負荷情報に対応する影響指標値が最大であるリクエストグループを制限パターンとするものとしても良い（請求項１９）。
このようにすれば、過大となっている負荷情報を低減させるために最も効果的なリクエスト制限を行うことができる。
【発明の効果】
【００３１】
本発明によれば、リクエストパターン毎、負荷情報毎に算出された負荷影響値に基づいて制限リクエストパターンを決定しそのパターンに含まれるリクエストに対して制限を実施する。
そのため、過大となっている負荷情報に対する影響の大きいリクエストのみを制限し、サーバ装置のリソースを有効に活用することができる。
【発明を実施するための最良の形態】
【００３２】
以下、図を参照しながら本発明の一実施形態であるトラフィック制限システム１の構成と動作について説明する。
図１は、リクエスト制限システム１の構成を示す図である。
リクエスト制限システム１は、ウェブサーバ２と、インターネット４を介してウェブサーバ２に接続してサービスの提供を受ける複数のクライアント３ａ、３ｂ、３ｃ等（以下、特に区別の必要がない場合はこれらの総称として「クライアント３」という）により構成される。
【００３３】
ウェブサーバ２（サーバ装置の一例）は、通信機能を備え、ＨＴＴＰ(HyperText Transfer Protocol)サーバプログラムを実行するサーバコンピュータで、内蔵する記憶装置や外部のストレージ装置に記憶されたＨＴＭＬ(HyperText Markup Language)形式等のコンテンツをクライアント３からのリクエストに応じて送信する。
【００３４】
クライアント３（クライアント装置の一例）は、パーソナルコンピュータ、携帯電話機、スマートフォン等の通信機能を備え、ウェブブラウザプログラムを実行する端末装置で、ユーザが入力した指示に応じてウェブサーバ２にリクエストを送信し、そのレスポンスを受信し、レスポンスに含まれるコンテンツをディスプレイ装置に表示する。
【００３５】
ウェブサーバ２は、予め、リクエストパターン毎に各負荷項目への影響度を推定するための情報（負荷指標値）を収集しておくことで、閾値を超過した項目の負荷を低減する為に最も有効なリクエストパターンのみを制限する。
図２は、ウェブサーバ２のこのような機能を模式的に表わした図である。負荷項目としてＣＰＵ負荷、Ｉ／Ｏ（入出力）負荷、同時接続数を考慮し、クライアント３からのリクエストをアクセスするコンテンツ等によりＡ、Ｂ、Ｃの３パターンに分類したとする。
いま、ウェブサーバ２の負荷がグラフ１００に示すようになっていたとすると、ＣＰＵ負荷が予め定めた閾値１０２よりも大きくなったため、リクエストの制限を行う。負荷指標値からＣパターンのリクエストがＣＰＵ負荷に与える影響が大きいとわかっているため、ＡパターンとＢパターンのリクエストについては特に制限を行わずに、すべてのリクエストに対してレスポンスを返す（符号１０４）。Ｃパターンのアクセスの一部（符号１０３）に対してはレスポンスを返さないことによりアクセス制限を行う（符号１０５）。このような制限を行った結果、負荷状況はグラフ１０１のようになり、ＣＰＵ負荷は、閾値以内に収まっている。
【００３６】
図３（ａ）は、ウェブサーバ２のハードウェア構成を示すブロック図である。
ウェブサーバ２は、ＣＰＵ１１、たとえばＲＡＭ(Random Access Memory)により構成される主記憶装置１２、外部記憶装置としてハードディス装置１３、通信インターフェース１４を備え、これらはバス１９に接続されている。
ＣＰＵ１１は、制御および演算機能を備え、主記憶装置１２にロードされたプログラムを実行して、ウェブサーバ２の各ハードウェアを制御する。
ハードディスク装置１３にはＣＰＵ１１が実行するプログラムが記憶されており、実行の指示があった場合や、電源投入時に主記憶装置１２にロードされる。また、ハードディスク装置１３には、クライアント３のリクエストに応じて送信するコンテンツも記憶されている。
通信インターフェース１４は、たとえばＬＡＮ(Local Area Network)アダプタにより構成され、ＣＰＵ１１の制御の下で、クライアント３との間でデータ送受信を行う。
【００３７】
図３（ｂ）は、ウェブサーバ２の機能ブロック図である。
ウェブサーバ２は、リクエスト制限を行うための各種情報を収集および算出しリクエスト制限を実行するリクエスト制限部２１と、クライアント３からのリクエストにレスポンスを返すことによりサービスを提供するウェブサーバ部２９と、リクエスト制限部２１が参照する各種情報を記憶する記憶部３０とを備えている。
【００３８】
リクエスト制限部２１は、負荷情報取得手段２２、リクエスト分類手段２３、影響指標値算出手段２４、リクエスト制限手段２５により構成されている。
負荷情報取得手段２２は、定期的にウェブサーバ２の負荷の大きさを示す負荷情報を取得しこれを記憶部３０に負荷情報３１として記憶する。本実施形態では、負荷情報をＣＰＵ負荷、Ｉ／Ｏ負荷、同時接続数の３項目の負荷項目に分けて取得する。
【００３９】
リクエスト分類手段２３は、リクエストを送信したクライアント３のアドレスまたは、リクエスト先のコンテンツを特定する情報、例えばURI（Uniform Resource Identifier）によってリクエストを複数のリクエストパターンに分類し、リクエストパターン毎の負荷指標値として過去一定時間についての以下の値を取得および保持する。
１)  過去一定時間のアクセス数（以下、「N」と表記する）
２)  過去一定時間の平均レスポンス時間（以下、「RSP」と表記する）
３)  過去一定時間の平均転送バイト数（以下、「TXB」と表記する)
４)  コンテンツがCGI（Common Gateway Interface）の場合、そのCGIの平均実行時間（以下、「EXT」と表記する）
これらの情報はリクエストを処理する度に更新して保持する。今までにないパターンでのリクエストがあった場合には、そのパターンに関する上記の各情報を負荷情報３１に新たに追加する。また一定期間にわたって、あるパターンでのリクエストがない場合にはそのパターンに関するデータは破棄する。
【００４０】
影響指標値算出手段２４は、リクエストパターン毎の負荷への影響指標値を算出する。具体的には、リクエストパターン毎の負荷指標値を負荷特性ごとのウェブサーバ２の負荷への影響度を示す影響指標値に換算する。
各負荷特性項目に対する各リクエストパターンの影響指標値は一般的に次の数式で表せる。
影響指標値 ＝ N ( F( e) EXT ＋Ｆ(r) RSP ＋ F(t) TXB  ＋ F(p))
ここで、Fはそれぞれ以下を示す係数である。
F(e) は当該負荷へのCPU時間の影響度を示す係数
F(r) は当該負荷へのレスポンス時間の影響度を示す係数
F(t) は当該負荷への転送バイト数の影響度を示す係数
F(p) は当該負荷のリクエスト数との相関を示す係数
これらの係数はウェブサーバ２が提供するコンテンツの種類や、ウェブサーバ２で動作するOS(Operating System)の特性に依存するため、利用環境に応じて適当な値を設定可能とするが、例えば、以下のように係数を決めて影響指標値に換算する。
CPU負荷の影響指標値 ＝ N ( 0.7 EXT ＋0.1RSP ＋ 0.1 TXB  ＋ 0.1 F(p))
I/O負荷の影響指標値 ＝ N ( 0.1 EXT ＋0.1RSP ＋ 0.7 TXB  ＋ 0.1 F(p))
同時コネクション数の影響指標値 ＝ N ( 0.1 EXT ＋0.4RSP ＋ 0.1 TXB  ＋ 0.4
F(p))
影響指標値算出手段２４は、上記のようにして算出した各負荷項目への影響指標値順にリクエストパターンを並べたリストであるパターンリスト３５を生成し、各負荷項目への最も影響度の大きいリクエストパターンを特定する。
【００４１】
リクエスト制限手段２５は、負荷項目毎に閾値を設定し、負荷情報取得手段２２が取得した負荷情報がその閾値を超えた場合には、影響指標値算出手段２４が作成したパターンリストの上位パターンのリクエストに対して一定の比率（制限比率）で処理の制限を行う。
リクエストパターンに対して制限比率の決定は、たとえば次の方式で行う。
閾値を超えた負荷項目に対するパターンリストの最初（＝影響最大）のパターンに対して2％、4％、8％、16％・・・と2の階乗パーセントずつ最大100％まで比率を上げて処理制限を実施していく。制限を加えたことにより負荷情報が閾値を下回った場合には逆に順次制限の比率を下げていく（ルール１）。
制限の結果、通常処理されなかったリクエストに関しても制限された処理のコストに応じてリクエストパターン毎の負荷指標値に反映する。このため、ある程度制限されてしまうと、2番目に影響度の大きかったリクエストパターンがリストの先頭となり、新たに制限されることとなる（ルール２）。
制限比率が64%でも負荷情報が閾値を下回らない場合には、100%制限するが、100%制限に達したリクエストパターンは負荷情報が閾値を下回り制限比率を減少する場合には98％、94%、92％と制限比率を2の階乗パーセントずつ減らしていく（ルール３）。
負荷項目が閾値を上回った場合の最初の制限比率は負荷項目の閾値からの超過度合いに応じて、4%、8%、16％、32％と高める（ルール４）。
閾値を超える負荷項目が複数存在する場合には閾値の超過度が最大の負荷項目に対して上述のアルゴリズムで制限を実施する（ルール５）。
制限比率は負荷項目値が閾値を下回る状態になった場合には負荷情報の大小に関係なく、一定の時間毎に64％→32％→16％→8％→4％→2%と低下させる。ただし、ルール３が適用されるケースを除く（ルール６）。
【００４２】
図７は、上記のルールに従った制限比率の決定を示すフローチャートである。
いずれかの負荷情報が閾値以上となりリクエスト制限が開始されるとルール４に従って最初の制限比率を決定する（Ｓ３０１）。
制限を行っても負荷情報が閾値を下回らない（Ｓ３０２の判定がノーの）場合は、ルール１とルール３に従って制限比率を大きくする。すなわち、現在の制限比率が６４％の場合は制限比率を１００％とし（Ｓ３０３の判定がイエス、Ｓ３０４）、そうでない場合は、制限比率を１ランク上とする（Ｓ３０３の判定がノー、Ｓ３０５）。
制限を行った結果、負荷情報が閾値を下回った（Ｓ３０２の判定がイエスの）場合は、ルール１、ルール３、ルール６に従って制限比率を小さくする。
すなわち、現在の制限比率が１００％の（Ｓ３０６の判定がイエスの）場合、負荷情報の値に応じて小さくする（Ｓ３０７）。これは、例えば、閾値が８０％とした場合、負荷情報が７０％以上なら１ランク下げ、負荷情報が５０％以上かつ７０％未満なら２ランク下げる等とする。
現在の制限比率が１００％でない（Ｓ３０６の判定がノーの）場合、負荷情報の値にかかわりなく一定時間毎に制限比率を１ランク下げる。
制限比率は徐々に低下し、０％となると（Ｓ３０８またはＳ３１０の判定がイエスとなると）制限処理は終了する。
【００４３】
リクエストに対する処理制限の具体的な内容としては、例えば、以下の３種類の制限方法を予め定めておきリクエスト制限手段２５は、負荷の状況に応じて実行する処理を選択しウェブサーバ部２０に指示する。
１)  エラーメッセージの返却
この処理は、リクエストの送信元のクライアント３に対して、ウェブサーバ２の負荷が過大となっているためリクエストに応じることができない旨のメッセージを返却する。
２)  リダイレクトメッセージの返却
この処理は、リクエストの送信元のクライアント３に対して、ウェブサーバ２の負荷が過大となっているため他のウェブサーバに処理を振り替えた旨のメッセージを返却する。
３)  処理を中断し接続を切断する
この処理は、リクエストの送信元のクライアント３に対して、特にメッセージを返却することなしに、処理を中断しＴＣＰのコネクションを切断する。
【００４４】
上記の各手段は、ＣＰＵ１１がリクエスト制限プログラムを実行してウェブサーバ２の各ハードウェアを制御することにより実現される。
【００４５】
次に、記憶部３０に記憶されている情報の内容の例を示す。
図４（ａ）は、負荷情報の一例である。負荷情報３１は、負荷情報取得手段２２が取得した負荷項目ごとのウェブサーバ２の負荷の大小を示す情報である。この例では、ＣＰＵ負荷、Ｉ／Ｏ負荷、同時接続数の３項目が記憶されている。
ＣＰＵ負荷は、図３（ａ）のＣＰＵ１１の使用率を示す情報で、ＣＰＵ１１がアイドルプロセス以外の何らかの処理を行っていた時間の割合を示す情報である。
Ｉ／Ｏ負荷は、ウェブサーバ２の図示しないＩ／ＯポートがＣＰＵ１１と通信インターフェース１４等の周辺装置との間の入出力処理のために使用されていた時間の割合を示す情報である。
同時接続数は、ウェブサーバ２がクライアント３との間で維持している論理的な通信接続の数であり、例えば、クライアント３との間のアクティブなＴＣＰコネクションの数である。
これらの情報は、負荷情報取得手段２２の情報取得間隔（例えば、１分）毎に更新され、最新の情報だけが記憶されている。
【００４６】
図４（ｂ）は、負荷指標値の一例である。この例では、リクエスト分類手段２３が取得したアクセス数、平均レスポンス時間、平均転送バイト数、平均実行時間がリクエストパターン毎に記憶されている。
アクセス数は、所定の期間中（例えば、データの更新時刻を基準として過去１分間）の各アクセスパターンに属するリクエストの数を示す情報である。
平均レスポンス時間は、ウェブサーバ２がリクエストを受信してからクライアント３にレスポンスを返信し始めるまでに要した時間を示す情報である。
平均転送バイト数は、リクエストとレスポンスとしてウェブサーバ２とクライアント３との間で送受信されるデータの量を示す情報である。
平均実行時間は、リクエストの処理のために実行したＣＧＩの実行時間を示す情報である。
平均レスポンス時間、平均転送バイト数、平均実行時間については、上記の所定の期間中の平均値が記憶されている。
【００４７】
図４（ｃ）は、影響指標値の一例である。影響指標値３３には、負荷項目、例えば、ＣＰＵ負荷、Ｉ／Ｏ負荷、同時接続数毎に、アクセスパターン毎に影響指標値算出手段２４が負荷指標値３２に基づいて算出した影響指標値が記憶されている。
【００４８】
図４（ｄ）は、パターンリストの一例である。パターンリスト３５には、負荷項目毎にリクエストパターンの影響指標値の大小を基準とした順位が記憶されている。例えば、図の一列目は、ＣＰＵ負荷の影響指標値は、パターンＣが１番目に大きく、パターンＡが２番目、パターンＢが３番目であることを示している。
【００４９】
閾値３５には、負荷項目毎に予め定められた閾値が記憶されている。閾値は、例えば、ＣＰＵ負荷については７０％、Ｉ／Ｏ負荷については６０％、同時接続数については５０のように定めておく。
【００５０】
次に、ウェブサーバ２の動作について説明する。
図５は、負荷情報３１がいずれの負荷項目についても閾値以内の場合の処理の流れを説明する図である。
負荷情報取得手段２２は、負荷情報を定期的に取得する（Ｓ１０１）。この処理は、他の処理とは独立して実行される。
ウェブサーバ部２９は、クライアント３からのリクエストを受信すると（Ｓ１０２）、Ｓ１０１で取得した負荷情報においてどの負荷項目も閾値を超過していない場合は通常のリクエスト処理を行い（Ｓ１０３）、レスポンスをクライアント３に返信する（Ｓ１０４）。
リクエスト分類手段２４は、リクエストの処理の結果から当該リクエストの負荷指標値を収集し、記憶部３０に記憶されている負荷指標値３２を更新する。影響指標値算出手段２４は、閾値超過時の処理に備え影響指標値３２とパターンリスト３５を再計算し更新する（Ｓ１０５）。
【００５１】
図６は、負荷情報が閾値以上の場合の処理の流れを説明する図である。
負荷情報取得手段２２は、負荷情報を定期的に取得する（Ｓ２０１）。
リクエスト制限手段２５は、閾値を超過した負荷項目がある場合、超過度が最大の負荷項目に関してパターンリスト３５を参照して影響が度最大のリクエストパターンを特定する（Ｓ２０２）。
リクエスト制限手段２５は、負荷の超過度と、制限処理連続状況から制限実施比率を算出する（Ｓ２０３）。
以上の処理が終了した後に、クライアント３からのリクエストを受信すると（Ｓ２０４）、リクエスト制限手段２５は、受信したリクエストをＳ２０２で特定したリクエストパターンと比較し、一致すれば、Ｓ２０３で算出した制限実施比率に従い、リクエストの制限処理を行う。ウェブサーバ部２９は、指定された制限に応じて、レスポンスを返信、エラーメッセージの返却等の処理を行う（Ｓ２０６）。
リクエスト分類手段２３は、リクエストの処理の結果から当該リクエストの負荷情報を収集し、負荷指標値３２に保存する。また、影響指標値算出手段２４は、次リクエストの処理に備え影響指標値３３とリクエストパターン３５を再計算し更新する（Ｓ２０７）。
【００５２】
以上の説明は、図２に示すようにウェブサーバ２がウェブサーバとしての機能とリクエストを制限する機能のすべてを実装している例について行ったが、各機能を複数のコンピュータに分散して実装することもできる。
図８にこのような実施形態の一例を示す。
リクエスト制限システム１ａは、クライアント３とリクエスト制限装置４０とウェブサーバ２ａにより構成される。
ウェブサーバ２ａは、図２（ｂ）のウェブサーバ部２９を備え、クライアント３からのリクエストを処理する。つまり、普通のウェブサーバである。
ウェブサーバ２ａとクライアント３の間に設置されたリクエスト制限装置４０は、図２（ｂ）のリクエスト制限部２１と記憶部３０を備えアクセス制限を実行する。
【００５３】
トラフィック制限システム１によれば、リクエスト分類手段２３は、クライアント３から送信されたリクエストをリクエストパターンに分類し、負荷指標値を算出する。影響指標値算出手段２４は、影響指標値３３を算出し、パターンリスト３５を生成する。リクエスト制限手段２５は、いずれかの負荷項目が閾値以上となった場合にパターンリスト３５を参照しこのリスト先頭のリクエストパターンに該当するリクエストに対してアクセス制限を行う。すなわち、サーバの負荷特性により、不足しているリソースの回復に最も効果のあるアクセスパターンのリクエストのみを制限する。
そのため、ウェブサーバ２の限りあるリソースを効率よく利用したサービス提供することが可能となる。
【図面の簡単な説明】
【００５４】
【図１】本発明の一実施形態であるリクエスト制限システムの構成図である。
【図２】図１のウェブサーバにおけるリクエスト制限の原理を説明する図である。
【図３】図３（ａ）は、ウェブサーバのハードウェア構成を示す図である。図３（ｂ）は、ウェブサーバ２の機能ブロック図である。
【図４】図４（ａ）ないし図４（ｄ）は、図３の記憶部に記憶されているデータを説明する図である。
【図５】負荷情報が閾値未満の場合のウェブサーバの動作を説明する図である。
【図６】負荷情報が閾値以上の場合のウェブサーバの動作を説明する図である。
【図７】制限比率の決定方法を説明する図である。
【図８】リクエスト制限システムの変形例の構成図である。
【図９】従来のリクエスト制限方法を説明する図である。
【図１０】従来のリクエスト制限方法を説明する図である。
【図１１】従来のリクエスト制限方法を説明する図である。
【符号の説明】
【００５５】
１  リクエスト制限システム
２  ウェブサーバ
３  クライアント
２１  リクエスト制限部
２２  負荷情報取得手段
２３  リクエスト分類手段
２４  影響指標値算出手段
２５  リクエスト制限手段
２９  ウェブサーバ部
３０  記憶部
３１  負荷情報
３２  負荷指標値
３３  影響指標値
３４  閾値
３５  パターンリスト
【図１】
0004411296.tif 000002
【図２】
0004411296.tif 000003
【図３】
0004411296.tif 000004
【図４】
0004411296.tif 000005
【図５】
0004411296.tif 000006
【図６】
0004411296.tif 000007
【図７】
0004411296.tif 000008
【図８】
0004411296.tif 000009
【図９】
0004411296.tif 000010
【図１０】
0004411296.tif 000011
【図１１】
0004411296.tif 000012