(57)【要約】【課題】複数のユーザからのアクセスを適切に制限できるようにする。【解決手段】情報処理装置１０は、複数のユーザ識別子それぞれについて、情報処理装置１０における当該ユーザ識別子を含むアクセスの受信状況を監視する。情報処理装置１０は、情報処理装置１０が並行して処理可能なアクセスの総数と各ユーザ識別子の受信状況とから、ユーザ識別子毎に並行して処理するアクセスの上限数を決定する。情報処理装置１０は、一のユーザ識別子を含むアクセスを受信したときに、当該一のユーザ識別子に対応する上限数に基づいて、当該受信したアクセスを拒否するか否かを制御する。【選択図】図１
2014112270.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに、
複数のユーザ識別子それぞれについて、前記コンピュータにおける当該ユーザ識別子を含むアクセスの受信状況を監視し、
前記コンピュータが並行して処理可能なアクセスの総数と各ユーザ識別子の前記受信状況とから、ユーザ識別子毎に並行して処理するアクセスの上限数を決定し、
一のユーザ識別子を含むアクセスを受信したときに、当該一のユーザ識別子に対応する前記上限数に基づいて、当該受信したアクセスを拒否するか否かを制御する、
処理を実行させるプログラム。
【請求項２】
前記受信状況として、ユーザ識別子毎に、並行して受信したアクセスの数が閾値を超えているか否か監視する、請求項１記載のプログラム。
【請求項３】
前記複数のユーザ識別子それぞれに対して、並行して処理することを許容するアクセスの許容数が設定されており、
前記コンピュータが並行して処理可能なアクセスの総数から前記複数のユーザ識別子の前記許容数を除いて余ったアクセス数を、前記受信状況に応じて前記複数のユーザ識別子に分配することで、ユーザ識別子毎の前記上限数を決定する、
請求項１または２記載のプログラム。
【請求項４】
前記受信状況は複数の時間帯に区分して監視し、
ユーザ識別子毎の前記上限数を時間帯に応じて切り替える、
請求項１乃至３の何れか一項に記載のプログラム。
【請求項５】
情報処理装置が実行するアクセス制御方法であって、
複数のユーザ識別子それぞれについて、前記情報処理装置における当該ユーザ識別子を含むアクセスの受信状況を監視し、
前記情報処理装置が並行して処理可能なアクセスの総数と各ユーザ識別子の前記受信状況とから、ユーザ識別子毎に並行して処理するアクセスの上限数を決定し、
一のユーザ識別子を含むアクセスを受信したときに、当該一のユーザ識別子に対応する前記上限数に基づいて、当該受信したアクセスを拒否するか否かを制御する、
アクセス制御方法。
【請求項６】
それぞれが複数のユーザ識別子の何れかを含むアクセスを受信する受信部と、
前記複数のユーザ識別子それぞれについてアクセスの受信状況を監視し、並行して処理可能なアクセスの総数と各ユーザ識別子の前記受信状況とから、ユーザ識別子毎に並行して処理するアクセスの上限数を決定し、前記受信部で受信されたアクセスを拒否するか否かを当該受信されたアクセスに含まれるユーザ識別子に対応する前記上限数に基づいて制御する制御部と、
を有する情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はプログラム、アクセス制御方法および情報処理装置に関する。
【背景技術】
【０００２】
現在、１またはそれ以上のクライアント装置がネットワークを介してサーバ装置にアクセスするクライアント・サーバ型の情報処理システムが広く利用されている。クライアント・サーバ型の情報処理システムの一例として、Ｗｅｂブラウザがインストールされているクライアント装置（Ｗｅｂ端末と呼ぶこともある）がＨＴＴＰ（Hypertext Transfer Protocol）を用いてＷｅｂサーバにアクセスするＷｅｂシステムが挙げられる。
【０００３】
多くのサーバ装置は、複数のアクセスを並行して受信し、受信した複数のアクセスを並行して処理することができる。例えば、サーバ装置は、１つのアクセスを受信しそのアクセスに対する応答が完了する前に、他のアクセスを受信することを許容する。また、例えば、サーバ装置は、１またはそれ以上のクライアント装置との間で、複数のコネクションや複数のセッションを同時に維持することを許容する。
【０００４】
ここで、１つのユーザが使用する１またはそれ以上のクライアント装置が、同じサーバ装置に対して同時期に複数のアクセスを行うこともある。「ユーザ」は、個人である場合もあるし、１つの組織（例えば、１つの会社や１つの部署）であることもある。例えば、複数のコンテンツを取得するために、１台のクライアント装置が同じサーバ装置に並行して複数のアクセスを行うことがある。また、例えば、１つの組織で使用される複数のクライアント装置が同じサーバ装置に並行して複数のアクセスを行うこともある。
【０００５】
ただし、サーバ装置では、並行して処理するアクセスの数が増え過ぎると、負荷の増大により動作が不安定になるおそれがある。そこで、サーバ装置は、並行して処理するアクセスの数を制限し、制限を超えてアクセスが受信されたときは、当該制限を超えたアクセスを処理せずに拒否する（例えば、ユーザにエラーを返信する）ことがある。
【０００６】
アクセスの制限に関して、ユーザ間の公平性を保つために、ユーザ毎にコンテンツに対する同時アクセス数を制限するコンテンツ閲覧制限方法が提案されている。このコンテンツ閲覧制限方法では、認証ＩＤと最大セッション数を含む認証設定情報をユーザがＷｅｂサーバに予め登録しておく。Ｗｅｂサーバは、認証情報を伴うＷｅｂアクセスを受け付けたとき、現在の同時セッション数が認証情報に対応する最大セッション数に達している場合には新たなセッションを開始せずにコンテンツ送信を拒否する。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００４−１２７１７２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかし、上記の特許文献１の方法では、ユーザ毎の最大セッション数が予め設定された固定値である。このため、複数のユーザのアクセス状況の変化に柔軟に対応できず、また、適切な最大セッション数を手動で設定することが煩雑であるという問題がある。
【０００９】
１つの側面では、本発明は、複数のユーザからのアクセスを適切に制限できるプログラム、アクセス制御方法および情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【００１０】
１つの態様では、コンピュータに以下の処理を実行させるプログラムが提供される。複数のユーザ識別子それぞれについて、コンピュータにおける当該ユーザ識別子を含むアクセスの受信状況を監視する。コンピュータが並行して処理可能なアクセスの総数と各ユーザ識別子の受信状況とから、ユーザ識別子毎に並行して処理するアクセスの上限数を決定する。一のユーザ識別子を含むアクセスを受信したときに、当該一のユーザ識別子に対応する上限数に基づいて、当該受信したアクセスを拒否するか否かを制御する。
【００１１】
また、１つの態様では、情報処理装置が実行するアクセス制御方法が提供される。複数のユーザ識別子それぞれについて、情報処理装置における当該ユーザ識別子を含むアクセスの受信状況を監視する。情報処理装置が並行して処理可能なアクセスの総数と各ユーザ識別子の受信状況とから、ユーザ識別子毎に並行して処理するアクセスの上限数を決定する。一のユーザ識別子を含むアクセスを受信したときに、当該一のユーザ識別子に対応する上限数に基づいて、当該受信したアクセスを拒否するか否かを制御する。
【００１２】
また、１つの態様では、受信部と制御部とを有する情報処理装置が提供される。受信部は、それぞれが複数のユーザ識別子の何れかを含むアクセスを受信する。制御部は、複数のユーザ識別子それぞれについてアクセスの受信状況を監視し、並行して処理可能なアクセスの総数と各ユーザ識別子の受信状況とから、ユーザ識別子毎に並行して処理するアクセスの上限数を決定し、受信部で受信されたアクセスを拒否するか否かを当該受信されたアクセスに含まれるユーザ識別子に対応する上限数に基づいて制御する。
【発明の効果】
【００１３】
１つの側面では、複数のユーザからのアクセスを適切に制限することができる。
【図面の簡単な説明】
【００１４】
【図１】第１の実施の形態の情報処理システムを示す図である。
【図２】第２の実施の形態の情報処理システムを示す図である。
【図３】アクセスの振り分け例を示す図である。
【図４】アクセスの多重度を制限する例を示す図である。
【図５】リバースプロキシサーバのハードウェア例を示すブロック図である。
【図６】リバースプロキシサーバの機能例を示すブロック図である。
【図７】設定ファイルの例を示す図である。
【図８】多重度テーブルの例を示す図である。
【図９】超過ログの例を示す図である。
【図１０】ログ集計テーブルの例を示す図である。
【図１１】起動処理の手順例を示すフローチャートである。
【図１２】アクセス処理の手順例を示すフローチャートである。
【図１３】デフォルトモードにおける最大多重度の算出例を示す図である。
【図１４】超過状況反映モードにおける最大多重度の算出例を示す図である。
【図１５】多重度制御機能の実装例を示す第１の図である。
【図１６】多重度制御機能の実装例を示す第２の図である。
【発明を実施するための形態】
【００１５】
以下、本実施の形態を図面を参照して説明する。
［第１の実施の形態］
図１は、第１の実施の形態の情報処理システムを示す図である。第１の実施の形態の情報処理システムは、情報処理装置１０およびクライアント装置２１〜２３を含む。クライアント装置２１〜２３は、ネットワークを介して情報処理装置１０にアクセスする。
【００１６】
例えば、情報処理装置１０はサーバコンピュータであり、クライアント装置２１〜２３はユーザが操作する端末装置としてのクライアントコンピュータである。情報処理装置１０は、クライアント装置２１〜２３と他の情報処理装置との間でアクセスを中継する中継装置であってもよい。例えば、情報処理装置１０は、リバースプロキシサーバ、ロードバランサ、ファイアウォール、または、ルータなどの通信装置であってもよい。
【００１７】
情報処理装置１０は、受信部１１および制御部１２を有する。受信部１１は、例えば、ＮＩＣ（Network Interface Card）などの通信インタフェースである。制御部１２は、ＣＰＵ（Central Processing Unit）やＤＳＰ（Digital Signal Processor）などのプロセッサを含んでもよく、プロセッサに実行させるプログラムを記憶するメモリを含んでもよい。複数のプロセッサの集合（マルチプロセッサ）を「プロセッサ」と呼んでもよい。また、制御部１２は、ＡＳＩＣ（Application Specific Integrated Circuit）やＦＰＧＡ（Field-Programmable Gate Array）などの特定用途の集積回路を含んでもよい。
【００１８】
受信部１１は、複数のアクセスを並行して受信することができる。各アクセスは、複数のユーザ識別子の何れかを含む。同じユーザ識別子を用いて並行して複数のアクセスを行うことを多重アクセスと呼ぶことができ、多重アクセスにおけるアクセス数を多重度と呼ぶことができる。多重アクセスは、例えば、同じユーザが既に行ったアクセスの応答を待たずに他のアクセスを行うことで発生し得る。また、多重アクセスは、例えば、同じユーザが情報処理装置１０との間に複数のコネクションや複数のセッション（例えば、ＨＴＴＰセッション）を維持することで発生し得る。一定時間内に（同時期に）同じユーザ識別子を用いて複数のアクセスを行うことを、多重アクセスと呼んでもよい。
【００１９】
ここで、「ユーザ」はアクセス元を示す一定の単位であればよく、個人でもよいし会社や会社内の部署などの組織でもよい。ユーザに対しては、アクセス元を識別できるようなユーザ識別子が割り当てられている。ユーザ識別子は、ＩＰ（Internet Protocol）アドレスなどの通信アドレスや通信アドレスの範囲でもよいし、情報処理装置１０の管理者が各ユーザに割り当てる記号であってもよい。同じユーザ識別子を用いて複数のクライアント装置から情報処理装置１０にアクセスすることも可能である。例えば、クライアント装置２１，２２がユーザ識別子Ａを用いて情報処理装置１０にアクセスし、クライアント装置２３がユーザ識別子Ｂを用いて情報処理装置１０にアクセスする。
【００２０】
制御部１２は、情報処理装置１０で並行して処理するアクセスの数が多くなり過ぎないよう、受信部１１で受信されたアクセスを処理するか処理せずに拒否するか制御する。
まず、制御部１２は、複数のユーザ識別子それぞれについて、情報処理装置１０における当該ユーザ識別子を含むアクセスの受信状況を監視する。ユーザ識別子毎の受信状況として、例えば、当該ユーザ識別子を含むアクセスの多重度が閾値を超えているか否かを監視する。閾値は、例えば、情報処理装置１０の管理者によって予め設定された値であり、ユーザ識別子に応じて異なってもよい。この場合、ユーザ識別子毎の受信状況を示す情報は、多重度が閾値を超えた回数を示す情報であってもよい。
【００２１】
次に、制御部１２は、情報処理装置１０が並行して処理可能なアクセスの総数と各ユーザ識別子の受信状況とから、ユーザ識別子毎に、並行して処理するアクセスの上限数を決定する。例えば、各ユーザ識別子に対して、並行して処理することを許容するアクセスの許容数が設定されているとする。ユーザ識別子毎の許容数は、情報処理装置１０の管理者とユーザとの間の契約に応じて定義してもよく、受信状況の監視で用いた上記の閾値と同じでもよい。制御部１２は、例えば、並行して処理可能なアクセスの総数から各ユーザ識別子の許容数を除いて余った数（アクセス余裕数）を、アクセスの受信状況に応じて複数のユーザ識別子に分配する。この場合、各ユーザ識別子の上限数は、当該ユーザ識別子の許容数に、分配された数を加えたものとする。なお、情報処理装置１０が並行して処理可能なアクセスの総数は、例えば、情報処理装置１０の管理者によって予め設定される。
【００２２】
好ましくは、制御部１２は、受信状況の監視の結果として多重度が相対的に大きい傾向にあると判断されたユーザ識別子に対して、上限数を大きく設定する。例えば、制御部１２は、受信状況を示す情報として多重度が閾値を超えた回数を示す情報をユーザ識別子毎に取得し、上記のアクセス余裕数を多重度が閾値を超えた回数の比に従って分配する。
【００２３】
ユーザ識別子毎の上限数が決定されると、制御部１２は、一のユーザ識別子を含むアクセスが受信されたときに、当該一のユーザ識別子に対応する上限数に基づいてアクセスを拒否するか否か制御する。新たなアクセスが受信されることで現在のアクセスの多重度が上限数を超えることになった場合、当該新たなアクセスは拒否される。アクセスを拒否する場合、制御部１２は、例えば、アクセスを拒否した旨を示すエラー情報を返信する。
【００２４】
例えば、並列に処理可能なアクセスの総数が６であり、ユーザ識別子Ａの上限数が４、ユーザ識別子Ｂの上限数が２と決定されたとする。すると、クライアント装置２１，２２から情報処理装置１０へのユーザ識別子Ａを用いたアクセスについては、多重度４の多重アクセスが許可される。しかし、４つのアクセスを維持した状態で更にユーザ識別子Ａを用いたアクセスを行うと、この５番目のアクセスは拒否される。同様に、クライアント装置２３から情報処理装置１０へのユーザ識別子Ｂを用いたアクセスについては、多重度２の多重アクセスが許可される。しかし、２つのアクセスを維持した状態で更にユーザ識別子Ｂを用いたアクセスを行うと、この３番目のアクセスは拒否される。
【００２５】
第１の実施の形態の情報処理システムによれば、ユーザ識別子毎にアクセスの多重度が制限されるため、情報処理装置１０全体で多重度の総数を制限するのみである場合と比べてユーザ間の公平性を維持できる。また、アクセスの受信状況に応じてユーザ識別子毎の上限数が決定されるため、複数のユーザからの実際のアクセス状況を反映させることができ、適切な上限数を設定できる。また、アクセス状況の変化にも柔軟に対応可能であり、上限数を手動で設定する場合と比べて適切なアクセス制限を容易に達成できる。
【００２６】
［第２の実施の形態］
図２は、第２の実施の形態の情報処理システムを示す図である。第２の実施の形態の情報処理システムは、クライアント３１〜３４、リバースプロキシサーバ１００およびＷｅｂサーバ１００ａ，１００ｂ，１００ｃを含む。クライアント３１〜３４は、ネットワーク４１に接続されている。ネットワーク４１は、例えば、インターネットなどの広域ネットワークである。リバースプロキシサーバ１００およびＷｅｂサーバ１００ａ，１００ｂ，１００ｃは、ネットワーク４２に接続されている。ネットワーク４２は、例えば、データセンタなどの建物内のＬＡＮ（Local Area Network）である。
【００２７】
クライアント３１〜３４は、人間が操作する端末装置としてのコンピュータである。クライアント３１〜３４は、ネットワーク４１，４２を介してリバースプロキシサーバ１００にアクセスする。第２の実施の形態では、アプリケーション層の通信プロトコルとして主にＨＴＴＰを想定する。すなわち、クライアント３１〜３４は、Ｗｅｂサーバ１００ａ，１００ｂ，１００ｃによって提供されるサービスを利用するとき、リバースプロキシサーバ１００に対してＨＴＴＰリクエストを送信する。
【００２８】
ここで、クライアント３１，３２は組織Ａで使用され、クライアント３３は組織Ｂで使用され、クライアント３４は組織Ｃで使用されている。組織Ａ，Ｂ，Ｃは、それぞれ１つの会社でもよいし会社内の１つの部署でもよい。組織Ａ，Ｂ，ＣがＷｅｂサーバ１００ａ，１００ｂ，１００ｃによって提供されるサービスを利用するにあたり、契約などを通じてサービス提供者から組織Ａ，Ｂ，ＣにユーザＩＤが付与される。ユーザＩＤとして、組織Ａには「ユーザＡ」が付与され、組織Ｂには「ユーザＢ」が付与され、組織Ｃには「ユーザＣ」が付与されている。各組織で使用されるクライアントは、その組織に付与されたユーザＩＤを用いてリバースプロキシサーバ１００にアクセスする。
【００２９】
なお、上記の説明は一例であり、ユーザＩＤを付与する単位を個人やクライアント（端末装置）としてもよい。また、ＩＰアドレスなどの通信アドレスによってアクセス元のユーザを識別できる場合には、サービス提供者から組織Ａ，Ｂ，ＣにユーザＩＤを付与しなくてもよい。また、上記の説明ではクライアント３１〜３４を端末装置としたが、サーバ装置がリバースプロキシサーバ１００にアクセスするようにしてもよい。
【００３０】
リバースプロキシサーバ１００は、クライアント３１〜３４とＷｅｂサーバ１００ａ，１００ｂ，１００ｃとの間でアクセスを中継するサーバコンピュータである。リバースプロキシサーバ１００は、クライアント３１〜３４からＨＴＴＰリクエストを受信する。ＨＴＴＰリクエストには、サービスを示すＵＲＬ（Uniform Resource Locator）が含まれている。すると、リバースプロキシサーバ１００は、Ｗｅｂサーバ１００ａ，１００ｂ，１００ｃの中から、受信したＨＴＴＰリクエストに含まれるＵＲＬに応じたＷｅｂサーバを選択し、選択したＷｅｂサーバにＨＴＴＰリクエストを転送する。
【００３１】
また、リバースプロキシサーバ１００は、リバースプロキシサーバ１００やＷｅｂサーバ１００ａ，１００ｂ，１００ｃの負荷が大きくなり過ぎないように、クライアント３１〜３４からのアクセスの多重度を制御する。同じユーザＩＤを用いた多数のアクセスを並行して受信した場合、リバースプロキシサーバ１００は、一部のアクセスを転送せずに拒否する。多重アクセスは、１台のクライアント（例えば、ユーザＢのクライアント３３）によって行われることもあるし、同じユーザＩＤを共有する複数台のクライアント（例えば、ユーザＡのクライアント３１，３２）によって行われることもある。
【００３２】
Ｗｅｂサーバ１００ａ，１００ｂ，１００ｃは、ＨＴＴＰのアクセスを処理するサーバコンピュータである。Ｗｅｂサーバ１００ａ，１００ｂ，１００ｃは、リバースプロキシサーバ１００からネットワーク４２を介してＨＴＴＰリクエストを受信すると、ＵＲＬに応じたデータ処理を行い、処理結果を示すＨＴＴＰレスポンスをリバースプロキシサーバ１００に返信する。ＨＴＴＰレスポンスは、リバースプロキシサーバ１００がネットワーク４１，４２を介してクライアント３１〜３４に転送する。
【００３３】
図３は、アクセスの振り分け例を示す図である。第２の実施の形態では、多重アクセスの一例として、同じ組織が使用する１またはそれ以上のクライアントとリバースプロキシサーバ１００との間に、複数のＨＴＴＰセッションが設定される状態を考える。また、第２の実施の形態では、組織Ａ，Ｂ，Ｃにサービスを提供するために、各組織に付与されたユーザＩＤを含むＵＲＬをサービス提供者が用意する。各組織で使用されるクライアントは、ユーザＩＤを含むＵＲＬを指定したＨＴＴＰリクエストを送信する。
【００３４】
例えば、組織Ａのクライアント３１，３２は、「ユーザＡ」を含むＵＲＬを指定したＨＴＴＰリクエストを送信する。リバースプロキシサーバ１００は、「ユーザＡ」を含むＵＲＬを指定したＨＴＴＰリクエストを、Ｗｅｂサーバ１００ａに転送するようにする。クライアント３１，３２とリバースプロキシサーバ１００の間には、タイムアウトなどにより切断されていない有効なＨＴＴＰセッションを複数維持できる。すなわち、クライアント３１，３２はリバースプロキシサーバ１００に多重アクセスすることができる。
【００３５】
同様に、例えば、組織Ｂのクライアント３３は、「ユーザＢ」を含むＵＲＬを指定したＨＴＴＰリクエストを送信する。リバースプロキシサーバ１００は、「ユーザＢ」を含むＵＲＬを指定したＨＴＴＰリクエストを、Ｗｅｂサーバ１００ｂに転送するようにする。クライアント３３とリバースプロキシサーバ１００の間には、タイムアウトなどにより切断されていない有効なＨＴＴＰセッションを複数維持できる。すなわち、クライアント３３はリバースプロキシサーバ１００に多重アクセスすることができる。
【００３６】
また、例えば、組織Ｃのクライアント３４は、「ユーザＣ」を含むＵＲＬを指定したＨＴＴＰリクエストを送信する。リバースプロキシサーバ１００は、「ユーザＣ」を含むＵＲＬを指定したＨＴＴＰリクエストを、Ｗｅｂサーバ１００ｃに転送するようにする。クライアント３４とリバースプロキシサーバ１００の間には、タイムアウトなどにより切断されていない有効なＨＴＴＰセッションを複数維持できる。すなわち、クライアント３４はリバースプロキシサーバ１００に多重アクセスすることができる。
【００３７】
なお、上記の説明ではＵＲＬによってアクセス元の組織を識別することとしたが、リバースプロキシサーバ１００は、他の方法によってアクセス元の組織を識別するようにしてもよい。例えば、クライアント３１〜３４で使用されるＩＰアドレスなどの通信アドレスや通信アドレスの範囲が固定である場合、リバースプロキシサーバ１００は、ＨＴＴＰリクエストの送信元アドレスによって組織Ａ，Ｂ，Ｃを識別してもよい。また、ＩＰアドレスなどの通信アドレスをユーザＩＤとして用いてもよい。
【００３８】
図４は、アクセスの多重度を制限する例を示す図である。リバースプロキシサーバ１００は、ユーザＩＤ毎にアクセスの多重度を制御する。リバースプロキシサーバ１００は、アクセスの多重度がそのユーザＩＤに対して設定された最大多重度を超えないように、受信されたアクセスを転送するか拒否するか判断する。アクセスを拒否する場合、リバースプロキシサーバ１００は、そのアクセスを何れのＷｅｂサーバにも転送せず、エラー（例えば、ＨＴＴＰ５０３エラー）を示すＨＴＴＰレスポンスを返信する。
【００３９】
例えば、「ユーザＡ」の最大多重度＝２２であるとする。クライアント３１，３２が複数のＨＴＴＰリクエストを並行して送信することで、クライアント３１，３２とリバースプロキシサーバ１００の間に複数のＨＴＴＰセッションが設定される。ここで、「ユーザＡ」についての２２個の有効なＨＴＴＰセッション（ＨＴＴＰセッション＃１〜＃２２）が存在するとする。そして、「ユーザＡ」についての２３番目のＨＴＴＰセッション（ＨＴＴＰセッション＃２３）によって新たなＨＴＴＰリクエストが送信されたとする。すると、リバースプロキシサーバ１００は、ＨＴＴＰセッション＃２３のＨＴＴＰリクエストをＷｅｂサーバ１００ａに転送せずに破棄し、ＨＴＴＰ５０３エラーを返信する。
【００４０】
なお、アクセスの多重度は、同時アクセス数、同時セッション数、同時接続数などと呼ぶこともある。ＨＴＴＰレスポンスをアクセス元にまだ返信していないＨＴＴＰリクエストの数（処理中のＨＴＴＰリクエストの数）を、アクセスの多重度として用いることもできる。また、確立されているＴＣＰ（Transmission Control Protocol）コネクションの数を、アクセスの多重度として用いることもできる。また、直近の所定時間内に受信されたＨＴＴＰレスポンスの数を、アクセスの多重度として用いることもできる。
【００４１】
以下では、ユーザ毎の最大多重度を決定する方法を中心に説明する。
図５は、リバースプロキシサーバのハードウェア例を示すブロック図である。リバースプロキシサーバ１００は、ＣＰＵ１０１、ＲＡＭ１０２、ＨＤＤ（Hard Disk Drive）１０３、画像信号処理部１０４、入力信号処理部１０５、ディスクドライブ１０６および通信インタフェース１０７を有する。
【００４２】
ＣＰＵ１０１は、プログラムの命令を実行するプロセッサである。ＣＰＵ１０１は、ＨＤＤ１０３に記憶されているプログラムやデータの少なくとも一部をＲＡＭ１０２にロードし、プログラムを実行する。なお、ＣＰＵ１０１は複数のプロセッサコアを備えてもよく、リバースプロキシサーバ１００は複数のプロセッサを備えてもよく、以下で説明する処理を複数のプロセッサまたはプロセッサコアを用いて並列に実行してもよい。また、複数のプロセッサの集合（マルチプロセッサ）を「プロセッサ」と呼んでもよい。
【００４３】
ＲＡＭ１０２は、ＣＰＵ１０１が実行するプログラムや情報処理に用いられるデータを一時的に記憶する揮発性メモリである。なお、リバースプロキシサーバ１００は、ＲＡＭ以外の種類のメモリを備えてもよく、複数の種類のメモリを備えてもよい。
【００４４】
ＨＤＤ１０３は、ＯＳ（Operating System）やアプリケーションソフトウェアなどのソフトウェアのプログラム、および、データを記憶する不揮発性の記憶装置である。なお、リバースプロキシサーバ１００は、ＳＳＤ（Solid State Drive）などの他の種類の不揮発性の記憶装置を備えてもよく、複数の種類の不揮発性の記憶装置を備えてもよい。
【００４５】
画像信号処理部１０４は、ＣＰＵ１０１からの命令に従って、リバースプロキシサーバ１００に接続されたディスプレイ５１に画像を出力する。ディスプレイ５１としては、例えば、ＣＲＴ（Cathode Ray Tube）ディスプレイ、液晶ディスプレイ（ＬＣＤ：Liquid Crystal Display）、プラズマディスプレイ（ＰＤＰ：Plasma Display Panel）、有機ＥＬ（ＯＥＬＤ：Organic Electro-Luminescence）ディスプレイなどを用いることができる。
【００４６】
入力信号処理部１０５は、リバースプロキシサーバ１００に接続された入力デバイス５２から入力信号を取得しＣＰＵ１０１に通知する。入力デバイス５２としては、例えば、マウスやタッチパネルやタッチパッドやトラックボールなどのポインティングデバイス、キーボード、リモートコントローラ、ボタンスイッチなどを用いることができる。また、リバースプロキシサーバ１００に複数の種類の入力デバイスが接続されてもよい。
【００４７】
ディスクドライブ１０６は、記録媒体５３に記録されたプログラムやデータを読み取る駆動装置である。記録媒体５３として、例えば、フレキシブルディスク（ＦＤ：Flexible Disk）やＨＤＤなどの磁気ディスク、ＣＤ（Compact Disc）やＤＶＤ（Digital Versatile Disc）などの光ディスク、光磁気ディスク（ＭＯ：Magneto-Optical disk）を使用できる。ディスクドライブ１０６は、例えば、ＣＰＵ１０１からの命令に従って、記録媒体５３から読み取ったプログラムやデータをＲＡＭ１０２またはＨＤＤ１０３に格納する。
【００４８】
通信インタフェース１０７は、ネットワーク４２に接続され、クライアント３１〜３４やＷｅｂサーバ１００ａ，１００ｂ，１００ｃと通信を行う。
ただし、リバースプロキシサーバ１００はディスクドライブ１０６を備えなくてもよく、端末装置からネットワーク経由でリバースプロキシサーバ１００を制御できる場合には画像信号処理部１０４や入力信号処理部１０５を備えなくてもよい。また、ディスプレイ５１や入力デバイス５２は、リバースプロキシサーバ１００の筐体と一体に形成されてもよい。クライアント３１〜３４やＷｅｂサーバ１００ａ，１００ｂ，１００ｃも、上記と同様のハードウェアにより実現できる。なお、ＣＰＵ１０１は第１の実施の形態の制御部１２の一例、通信インタフェース１０７は第１の実施の形態の受信部１１の一例である。
【００４９】
図６は、リバースプロキシサーバの機能例を示すブロック図である。リバースプロキシサーバ１００は、設定ファイル記憶部１１０、多重度情報記憶部１２０、ログ記憶部１３０、起動処理部１４０およびアクセス処理部１５０を有する。設定ファイル記憶部１１０、多重度情報記憶部１２０およびログ記憶部１３０は、例えば、ＲＡＭ１０２またはＨＤＤ１０３に確保した記憶領域として実現できる。起動処理部１４０およびアクセス処理部１５０は、例えば、ソフトウェアのモジュールとして実現できる。
【００５０】
設定ファイル記憶部１１０は、後述する設定ファイルを記憶する。設定ファイルは、リバースプロキシサーバ１００がアクセスを転送するためのソフトウェアを起動するときに参照される。設定ファイルには、起動モードやユーザＩＤ毎の設定多重度が記述される。設定多重度は、許容される多重度の下限値であり、サービス提供者と組織Ａ，Ｂ，Ｃの間の契約などに応じて決定される。設定ファイルは、例えば、リバースプロキシサーバ１００の管理者によって記述され、予め設定ファイル記憶部１１０に格納される。
【００５１】
多重度情報記憶部１２０は、後述する多重度テーブルを記憶する。多重度テーブルには、ユーザＩＤ毎の最大多重度と設定多重度が含まれる。最大多重度は、前述のように許容される多重度の上限値であり、リバースプロキシサーバ１００がアクセスを転送するためのソフトウェアを起動するときに設定ファイルに基づいて自動的に算出される。設定ファイルで指定された起動モードによって、最大多重度の算出方法が異なる。
【００５２】
ログ記憶部１３０は、後述する超過ログを記憶する。超過ログは、ユーザＩＤ毎のアクセスの受信状況を示す通信ログであり、設定多重度（許容される多重度の下限値）を超えて受信されたアクセスを記録しておく。ただし、設定多重度を超えて受信されたアクセス以外のアクセスも含めた通信ログを、ログ記憶部１３０に記憶しておいてもよい。超過ログは、ユーザＩＤ毎の最大多重度を算出するために利用される。サービス提供者は、組織Ａ，Ｂ，Ｃとの契約を見直すための判断材料として超過ログを利用してもよい。
【００５３】
起動処理部１４０は、リバースプロキシサーバ１００の管理者からの指示に応じて（例えば、起動コマンドを受信することで）、アクセスを転送するためのソフトウェアを起動する。起動処理部１４０は、最大多重度算出部１４１およびログ集計部１４２を有する。
【００５４】
最大多重度算出部１４１は、設定ファイル記憶部１１０から設定ファイルを読み出し、設定ファイルに記述された起動モードに応じた方法で、ユーザＩＤ毎の最大多重度を算出する。そして、最大多重度算出部１４１は、最大多重度を登録した多重度テーブルを生成し多重度情報記憶部１２０に格納する。最大多重度算出部１４１は、最大多重度を算出するにあたり、ログ集計部１４２に超過ログの集計を依頼することがある。
【００５５】
ログ集計部１４２は、最大多重度算出部１４１からの要求に応じて、ログ記憶部１３０から超過ログを読み出し、超過ログに記録されたアクセスをユーザＩＤ毎に集計する。そして、ログ集計部１４２は、ユーザＩＤ毎の設定多重度の超過状況を示すログ集計テーブルを生成し、最大多重度算出部１４１にログ集計テーブルを渡す。ログ集計テーブルは、ユーザＩＤ毎の最大多重度を算出するために利用される。
【００５６】
アクセス処理部１５０は、クライアント３１〜３４からアクセスを受信し、アクセスをＷｅｂサーバ１００ａ，１００ｂ，１００ｃに転送するか判断する。アクセス処理部１５０は、多重度計数部１５１、超過判定部１５２およびアクセス転送部１５３を有する。
【００５７】
多重度計数部１５１は、ユーザＩＤ毎に現在のアクセスの多重度をカウントする。前述のように、例えば、多重度計数部１５１は、多重度として有効なＨＴＴＰセッション数をカウントする。または、多重度計数部１５１は、多重度として、処理中のＨＴＴＰリクエストの数、ＴＣＰコネクションの数、直近の所定時間内に受信されたＨＴＴＰレスポンスの数などをカウントしてもよい。前述のように、ユーザＩＤは、例えば、ＨＴＴＰリクエストに含まれるＵＲＬから抽出することができる。
【００５８】
超過判定部１５２は、受信されたアクセスからユーザＩＤを抽出し、多重度情報記憶部１２０に記憶された多重度テーブルから、抽出されたユーザＩＤに対応する最大多重度と設定多重度を検索する。そして、超過判定部１５２は、抽出されたユーザＩＤに対応する現在の多重度を多重度計数部１５１に問い合わせ、現在の多重度が最大多重度を超えているか判断する。また、超過判定部１５２は、現在の多重度が設定多重度を超えているか判断し、設定多重度を超えている場合はログ記憶部１３０に記憶された超過ログにアクセスを記録する。なお、多重度計数部１５１が回答する多重度は、転送するか否かをまだ判定していない最新のアクセスを含めた多重度である。
【００５９】
アクセス転送部１５３は、受信されたアクセスの転送を制御する。アクセス転送部１５３は、超過判定部１５２で多重度が最大多重度以下であると判定されたユーザＩＤから、転送先のＷｅｂサーバを選択し、選択したＷｅｂサーバにそのユーザＩＤを含むアクセスを転送する。また、アクセス転送部１５３は、超過判定部１５２で多重度が最大多重度を超えていると判定されたユーザＩＤのアクセスについては、転送せずにエラーメッセージ（例えば、ＨＴＴＰ５０３エラーを示すＨＴＴＰレスポンス）を返信する。ただし、後述するように、最大多重度を超えて受信されたアクセスをすぐに拒否するのではなく、所定回数は最大多重度を超えたアクセスを許容するようにする。
【００６０】
図７は、設定ファイルの例を示す図である。図７に示すような設定ファイル１１１が、設定ファイル記憶部１１０に記憶される。設定ファイル１１１は、起動モード、システム多重度、違反許容回数およびユーザＩＤ毎の設定多重度の項目を含む。
【００６１】
起動モードは、「デフォルトモード」と「超過状況反映モード」から１つ選択される。デフォルトモードは、アクセスの設定多重度からの超過状況を監視するモードであり、超過ログを参照せずに設定多重度に基づいて最大多重度が決定される。超過状況反映モードは、デフォルトモードで取得された超過ログを最大多重度に反映させるモードである。
【００６２】
システム多重度は、リバースプロキシサーバ１００が許容するアクセスの多重度の合計である。システム多重度は、リバースプロキシサーバ１００の転送能力、Ｗｅｂサーバ１００ａ，１００ｂ，１００ｃのアクセス処理能力、ネットワーク４２の伝送帯域などを考慮して、リバースプロキシサーバ１００の管理者によって予め決定される。例えば、ユーザＡ，Ｂ，Ｃ全体でシステム多重度＝１００と設定される。
【００６３】
違反許容回数は、１つのユーザＩＤについてアクセスの多重度が最大多重度を超えてもよい回数である。多重度が最大多重度を超えた回数（違反回数）が違反許容回数を超えると、以降は最大多重度を超えて受信されたアクセスが拒否される。例えば、違反許容回数＝３と設定される。なお、図７では違反許容回数は全ユーザＩＤについて同一としているが、ユーザＩＤによって違反許容回数を変えるようにしてもよい。
【００６４】
設定多重度は、前述の通り、許容される多重度の下限値であり、少なくとも設定多重度までの多重アクセスは許容されることを示す。例えば、ユーザＡの設定多重度＝２０，ユーザＢの設定多重度＝３０，ユーザＣの設定多重度＝４０と設定される。
【００６５】
図８は、多重度テーブルの例を示す図である。図８に示すような多重度テーブル１２１が、多重度情報記憶部１２０に記憶される。多重度テーブル１２１は、ユーザＩＤ、設定多重度、最大多重度、違反回数およびシステム多重度の項目を含む。
【００６６】
ユーザＩＤの項目には、組織Ａ，Ｂ，Ｃに付与された識別子が登録される。設定多重度の項目には、設定ファイル１１１に記述されたユーザＩＤ毎の設定多重度が登録される。最大多重度の項目には、起動時に最大多重度算出部１４１によって算出されたユーザＩＤ毎の最大多重度が登録される。ここでは、最大多重度は、設定多重度に追加数αを加えたものとする。追加数αはユーザＩＤによって異なることがある。追加数αは、起動モードがデフォルトモードであるときは設定多重度に基づいて算出され、起動モードが超過状況反映モードであるときは超過ログに基づいて算出される。
【００６７】
違反回数の項目には、設定ファイル１１１に記述された違反許容回数と現在の違反回数とが登録される。違反回数は、アクセスを転送するソフトウェアが起動してから停止するまで蓄積されるようにしてもよいし、稼働中に一定周期でリセットされるようにしてもよい。システム多重度の項目には、設定ファイル１１１に記述されたシステム多重度と最大多重度の合計とが登録される。最大多重度の合計が設定ファイル１１１に記述されたシステム多重度を超えないように、ユーザ毎の最大多重度が算出される。
【００６８】
なお、後述するように、起動モードがデフォルトモードであるときは、多重度情報記憶部１２０に１つの多重度テーブルが格納される。この１つの多重度テーブルが、全ての時間帯において使用される。一方、起動モードが超過状況反映モードであるときは、多重度情報記憶部１２０に最大多重度の異なる複数の多重度テーブルが格納される。この複数の多重度テーブルが、時間帯に応じて使い分けられる。時間帯の変化に伴って使用する多重度テーブルを切り替えたとき、切替前の多重度テーブルの違反回数を切替後の多重度テーブルに引き継いでもよいし、引き継がない（リセットする）ようにしてもよい。
【００６９】
図９は、超過ログの例を示す図である。図９に示すような超過ログ１３１が、ログ記憶部１３０に記憶される。超過ログ１３１は、ユーザＩＤと受信時刻の項目を含む。超過ログ１３１には、設定多重度を超えて受信されたアクセス毎に、そのアクセスに含まれるユーザＩＤとそのアクセスの受信時刻とが超過判定部１５２によって記録される。
【００７０】
なお、図９では超過ログ１３１をＣＳＶ（Comma Separated Values）形式で記述しているが、タブ区切り形式など他の形式で記述してもよい。また、超過ログ１３１へのアクセスの記録は、デフォルトモードのときのみ行ってもよいし、デフォルトモードか超過状況反映モードかにかかわらず行ってもよい。以下の説明では、後者の場合を想定する。
【００７１】
図１０は、ログ集計テーブルの例を示す図である。図１０に示すようなログ集計テーブル１４３が、ログ集計部１４２によって生成される。ログ集計テーブル１４３は、ユーザＩＤおよび複数の時間帯の項目を含む。時間帯の一例として、０−３時，３−６時，６−９時，９−１２時，１２−１５時，１５−１８時，１８−２１時，２１−２４時の８つの時間帯が設定される。ただし、この時間帯の設定方法は一例であり、アクセスを集計する期間の単位は任意に設定できる。例えば、曜日・日・月を考慮してもよい。
【００７２】
ログ集計部１４２は、超過ログ１３１に記録されたアクセスを、ユーザＩＤと時間帯に応じて分類する。そして、ログ集計部１４２は、ユーザＩＤと時間帯が同じアクセスの数をカウントすることで、ログ集計テーブル１４３を生成する。
【００７３】
例えば、０−３時の時間帯には、ユーザＡのアクセス超過が１０回発生し、ユーザＢ，Ｃのアクセス超過が発生していないことがログ集計テーブル１４３に登録される。また、例えば、３−６時の時間帯には、ユーザＡ，Ｂ，Ｃのアクセス超過が全く発生していないことがログ集計テーブル１４３に登録される。また、例えば、６−９時の時間帯には、ユーザＡのアクセス超過が４回発生し、ユーザＢのアクセス超過が３回発生し、ユーザＣのアクセス超過が２回発生したことが、ログ集計テーブル１４３に登録される。
【００７４】
次に、リバースプロキシサーバ１００の起動処理とアクセス処理の手順例を説明する。
図１１は、起動処理の手順例を示すフローチャートである。起動コマンドの入力などを契機として、アクセスを転送するソフトウェア（例えば、Ｗｅｂサーバソフトウェア）がリバースプロキシサーバ１００で起動するとき、図１１のような起動処理が実行される。
【００７５】
（Ｓ１１）最大多重度算出部１４１は、起動コマンドが入力されると、設定ファイル記憶部１１０に記憶された設定ファイル１１１を読み込む。
（Ｓ１２）最大多重度算出部１４１は、設定ファイル１１１に記述された起動モードがデフォルトモードであるか判断する。起動モードがデフォルトモードの場合は処理をＳ１３に進め、超過状況反映モードの場合は処理をＳ１５に進める。
【００７６】
（Ｓ１３）最大多重度算出部１４１は、設定ファイル１１１に記述されたシステム多重度からユーザＡ，Ｂ，Ｃの設定多重度を引いた余裕数を算出する。余裕数は、組織Ａ，Ｂ，Ｃがそれぞれ設定多重度で多重アクセスしている状態で、リバースプロキシサーバ１００が更に追加で処理可能なアクセスの数である。最大多重度算出部１４１は、算出した余裕数を、ユーザＡ，Ｂ，Ｃの設定多重度の比に従ってユーザＡ，Ｂ，Ｃに分配する。分配されたアクセスの数が、ユーザＡ，Ｂ，Ｃの追加数αに相当する。そして、最大多重度算出部１４１は、設定多重度に追加数αを加えたアクセス数を最大多重度とする。
【００７７】
（Ｓ１４）最大多重度算出部１４１は、算出したユーザＡ，Ｂ，Ｃの最大多重度に基づいて、多重度テーブル１２１を生成して多重度情報記憶部１２０に格納する。このとき生成する多重度テーブルは１個でよい。そして、起動処理を終了する。
【００７８】
（Ｓ１５）最大多重度算出部１４１は、ログ集計部１４２にログ集計を依頼する。ログ集計部１４２は、ログ記憶部１３０に記憶された超過ログ１３１を読み込む。
（Ｓ１６）ログ集計部１４２は、超過ログ１３１に記録されたアクセスを、ユーザＩＤと時間帯に応じて分類し、ユーザＩＤと時間帯が同じアクセスの数をカウントする。これにより、図１０に示したようなログ集計テーブル１４３が生成される。最大多重度算出部１４１は、超過ログ１３１の集計結果としてログ集計テーブル１４３を取得する。なお、時間帯の設定方法は、リバースプロキシサーバ１００の管理者によって予め指定される。設定ファイル１１１に時間帯の設定方法を記述しておいてもよい。
【００７９】
（Ｓ１７）最大多重度算出部１４１は、複数の時間帯の中から１つ選択する。
（Ｓ１８）最大多重度算出部１４１は、設定ファイル１１１に記述されたシステム多重度からユーザＡ，Ｂ，Ｃの設定多重度を引いた余裕数を算出する。最大多重度算出部１４１は、算出した余裕数を、選択した時間帯におけるユーザＡ，Ｂ，Ｃの超過回数の比（ログ集計テーブル１４３が示すアクセス数の比）に従ってユーザＡ，Ｂ，Ｃに分配する。分配されたアクセスの数が、ユーザＡ，Ｂ，Ｃの追加数αに相当する。そして、最大多重度算出部１４１は、設定多重度に追加数αを加えたアクセス数を最大多重度とする。
【００８０】
（Ｓ１９）最大多重度算出部１４１は、算出したユーザＡ，Ｂ，Ｃの最大多重度に基づいて、多重度テーブルを生成して多重度情報記憶部１２０に格納する。このとき生成した多重度テーブルは、選択した時間帯と対応付けられる。
【００８１】
（Ｓ２０）最大多重度算出部１４１は、全ての時間帯を選択したか判断する。全て選択した場合は処理をＳ２１に進め、未選択の時間帯がある場合は処理をＳ１７に進める。
（Ｓ２１）超過判定部１５２は、多重度テーブルの切替をスケジューリングする。すなわち、超過判定部１５２は、現在の時間帯に応じて、多重度情報記憶部１２０に記憶された複数の多重度テーブルのうち使用する多重度テーブルを変更するようにする。
【００８２】
なお、１またはそれ以上の多重度テーブルが生成された後、リバースプロキシサーバ１００の管理者がそれら多重度テーブルを修正できるようにしてもよい。例えば、設定多重度または超過ログ１３１に基づいて自動的に算出された最大多重度を、リバースプロキシサーバ１００の管理者が手動で微調整できるようにしてもよい。
【００８３】
なお、上記の説明では超過ログ１３１に記録されたアクセスを集計するタイミングを、超過状況反映モードでソフトウェアが起動するときとしたが、他のタイミングで集計してもよい。例えば、アクセス処理を行っている間にリアルタイムに超過ログ１３１に記録されたアクセスを集計してもよい。また、例えば、デフォルトモードで動作していたソフトウェアが停止するときに集計してもよい。また、上記の説明では超過状況反映モードでソフトウェアが起動するときに全ての時間帯の最大多重度を算出したが、時間帯が切り替わるときに次の時間帯の最大多重度を算出するようにしてもよい。
【００８４】
図１２は、アクセス処理の手順例を示すフローチャートである。クライアント３１〜３４の何れかからアクセスを受信したとき、図１２のようなアクセス処理が実行される。
（Ｓ３１）超過判定部１５２は、アクセスとしてのＨＴＴＰリクエストに含まれるＵＲＬから、アクセス元に付与されているユーザＩＤを抽出する。ただし、ＨＴＴＰヘッダにＣｏｏｋｉｅとしてユーザＩＤを記載しておくなど、他の方法によってクライアント３１〜３４からリバースプロキシサーバ１００にユーザＩＤを伝達することも可能である。
【００８５】
（Ｓ３２）超過判定部１５２は、多重度計数部１５１に問い合わせて、抽出したユーザＩＤについての現在のアクセスの多重度を確認する。ここで確認される多重アクセスの１つとして、転送の可否を今回判断するアクセスも含まれている。
【００８６】
（Ｓ３３）超過判定部１５２は、多重度情報記憶部１２０に記憶されている多重度テーブル１２１から、抽出されたユーザＩＤに対応する設定多重度を検索する。起動モードが超過状況反映モードである場合には、複数の多重度テーブルのうち現在の時間帯に対応する多重度テーブルが使用される。そして、超過判定部１５２は、現在の多重度が設定多重度を超えているか判断する。現在の多重度が設定多重度より大きい場合には処理をＳ３４に進め、現在の多重度が設定多重度以下である場合には処理をＳ３８に進める。
【００８７】
（Ｓ３４）超過判定部１５２は、ログ記憶部１３０に記憶された超過ログ１３１に、抽出されたユーザＩＤとアクセスの受信時刻とを記録する。
（Ｓ３５）超過判定部１５２は、多重度テーブル１２１から、抽出されたユーザＩＤに対応する最大多重度を検索する。そして、超過判定部１５２は、現在の多重度が最大多重度を超えているか判断する。現在の多重度が最大多重度より大きい場合には処理をＳ３６に進め、現在の多重度が最大多重度以下である場合には処理をＳ３８に進める。
【００８８】
（Ｓ３６）超過判定部１５２は、多重度テーブル１２１におけるユーザＩＤに対応する違反回数をインクリメントする（１だけ加算する）。そして、超過判定部１５２は、違反回数が違反許容回数を超えているか判断する。違反回数が違反許容回数より大きい場合は処理をＳ３７に進め、違反回数が違反許容回数以下である場合は処理をＳ３８に進める。
【００８９】
（Ｓ３７）アクセス転送部１５３は、受信されたアクセスをＷｅｂサーバ１００ａ，１００ｂ，１００ｃに転送せずに拒否することを決定する。そして、アクセス転送部１５３は、リバースプロキシサーバ１００が混雑している旨のエラー（例えば、ＨＴＴＰ５０３エラー）を示すＨＴＴＰレスポンスをアクセス元に返信し、アクセス処理を終了する。エラーの返信によって受信されたアクセスの処理が完了することで、アクセスの多重度（例えば、有効なＨＴＴＰセッションの数）が減少し得る。
【００９０】
（Ｓ３８）アクセス転送部１５３は、ＨＴＴＰリクエストに含まれるＵＲＬに基づいてＷｅｂサーバ１００ａ，１００ｂ，１００ｃの中から転送先のＷｅｂサーバを選択する。例えば、「ユーザＡ」を含むＵＲＬを指定したアクセスの転送先をＷｅｂサーバ１００ａ、「ユーザＢ」を含むＵＲＬを指定したアクセスの転送先をＷｅｂサーバ１００ｂ、「ユーザＣ」を含むＵＲＬを指定したアクセスの転送先をＷｅｂサーバ１００ｃとする。ただし、アクセスを振り分ける基準はユーザＩＤでなくてもよい。アクセスの振り分け方法は、例えば、リバースプロキシサーバ１００の管理者によって予め設定される。
【００９１】
（Ｓ３９）アクセス転送部１５３は、受信されたアクセスとしてのＨＴＴＰリクエストを、選択したＷｅｂサーバにネットワーク４２を介して転送する。
図１３は、デフォルトモードにおける最大多重度の算出例を示す図である。前述のように、デフォルトモードではユーザＡ，Ｂ，Ｃの設定多重度の比に従って余裕数をユーザＡ，Ｂ，Ｃに割り振り、ユーザＡ，Ｂ，Ｃの最大多重度を決定する。
【００９２】
例えば、システム多重度＝１００，ユーザＡの設定多重度＝２０，ユーザＢの設定多重度＝３０，ユーザＣの設定多重度＝４０であるとする。すると、多重アクセスの余裕数は１００−（２０＋３０＋４０）＝１０と算出される。そして、この余裕数＝１０が、設定多重度の比＝２０：３０：４０でユーザＡ，Ｂ，Ｃに分配される。すなわち、ユーザＡの追加数α＝２，ユーザＢの追加数α＝３，ユーザＣの追加数α＝４と算出される。これにより、ユーザＡの最大多重度＝２０＋２＝２２，ユーザＢの最大多重度＝３０＋３＝３３，ユーザＣの最大多重度＝４０＋４＝４４と決定される。
【００９３】
なお、ユーザＡ，Ｂ，Ｃの最大多重度の合計２２＋３３＋４４＝９９は、システム多重度＝１００以下に収まっている。最大多重度は整数であり比率計算において端数処理が行われるため、最大多重度の合計がシステム多重度と一致しないこともある。リバースプロキシサーバ１００は、何れのユーザＩＤにも分配されずに残った余裕数（図１３の例では残りの余裕数＝１）を所定のルールに基づいて何れかのユーザＩＤに割り当ててもよい。また、管理者が手動で、残った余裕数を何れかのユーザＩＤに割り当ててもよい。
【００９４】
図１４は、超過状況反映モードにおける最大多重度の算出例を示す図である。前述のように、超過状況反映モードでは時間帯毎にユーザＡ，Ｂ，Ｃの超過回数の比に従って余裕数をユーザＡ，Ｂ，Ｃに割り振り、ユーザＡ，Ｂ，Ｃの最大多重度を決定する。
【００９５】
例えば、システム多重度＝１００，ユーザＡの設定多重度＝２０，ユーザＢの設定多重度＝３０，ユーザＣの設定多重度＝４０であるとする。また、０−３時の時間帯では、ユーザＡの超過回数＝１０，ユーザＢの超過回数＝０，ユーザＣの超過回数＝０であるとする。３−６時の時間帯では、ユーザＡの超過回数＝０，ユーザＢの超過回数＝０，ユーザＣの超過回数＝０であるとする。６−９時の時間帯では、ユーザＡの超過回数＝４，ユーザＢの超過回数＝３，ユーザＣの超過回数＝２であるとする。
【００９６】
すると、０−３時の時間帯では、余裕数＝１０が超過回数の比＝１０：０：０でユーザＡ，Ｂ，Ｃに分配される。すなわち、ユーザＡの追加数α＝１０，ユーザＢの追加数α＝０，ユーザＣの追加数α＝０と算出される。これにより、ユーザＡの最大多重度＝２０＋１０＝３０，ユーザＢの最大多重度＝３０＋０＝３０，ユーザＣの最大多重度＝４０＋０＝４０と決定される。なお、ユーザＡ，Ｂ，Ｃの最大多重度の合計３０＋３０＋４０＝１００は、システム多重度＝１００と一致している。
【００９７】
一方、３−６時の時間帯では、超過回数の比＝０：０：０である。この場合は、余裕数＝１０を設定多重度の比＝２０：３０：４０でユーザＡ，Ｂ，Ｃに分配することにする。すなわち、デフォルトモードと同様に、ユーザＡの追加数α＝２，ユーザＢの追加数α＝３，ユーザＣの追加数α＝４と算出する。これにより、ユーザＡの最大多重度＝２０＋２＝２２，ユーザＢの最大多重度＝３０＋３＝３３，ユーザＣの最大多重度＝４０＋４＝４４と決定される。なお、超過回数の比＝０：０：０である場合に、余裕数を均等に（比を１：１：１として）ユーザＡ，Ｂ，Ｃに分配するようにしてもよい。
【００９８】
また、６−９時の時間帯では、余裕数＝１０が超過回数の比＝４：３：２でユーザＡ，Ｂ，Ｃに分配される。すなわち、ユーザＡの追加数α＝４，ユーザＢの追加数α＝３，ユーザＣの追加数α＝２と算出される。これにより、ユーザＡの最大多重度＝２０＋４＝２４，ユーザＢの最大多重度＝３０＋３＝３３，ユーザＣの最大多重度＝４０＋２＝４２と決定される。なお、ユーザＡ，Ｂ，Ｃの最大多重度の合計２４＋３３＋４２＝９９は、システム多重度＝１００未満となっている。このように、時間帯毎に超過回数を集計するため、時間帯によってユーザＡ，Ｂ，Ｃの最大多重度が異なっている。
【００９９】
以上、リバースプロキシサーバ１００による多重度制御を説明したが、このような多重度制御の機能は様々なシステム形態として実装することが可能である。
図１５は、多重度制御機能の実装例を示す第１の図である。
【０１００】
（Ａ）多重度制御機能の１つの実装形態として、Ｗｅｂサーバで実行される既存のＷｅｂサーバソフトウェアの中に、追加のソフトウェアモジュールとして多重度制御モジュールを組み込む形態が考えられる。
【０１０１】
（Ｂ）また、多重度制御機能の１つの実装形態として、Ｗｅｂサーバで実行される既存のＷｅｂサーバソフトウェアに対して、アドオンソフトウェアとして多重度制御アドオンをインストールする形態も考えられる。
【０１０２】
（Ｃ）また、多重度制御機能の１つの実装形態として、アクセスを中継するサーバコンピュータである中継サーバに、多重度制御ソフトウェアをインストールする形態も考えられる。なお、上記では主にＨＴＴＰを用いたアクセスを想定したが、他のアプリケーション層のプロトコルを用いたアクセスについても多重度制御を行うことが可能である。例えば、上記の中継サーバは、ファイルサーバに対するファイル共有プロトコルを用いたアクセスの多重度を制御してもよい。また、例えば、中継サーバは、アプリケーションサーバに対する分散オブジェクト通信プロトコルを用いたアクセスの多重度を制御してもよい。また、中継サーバは、複数の種類のアクセスの多重度を制御してもよい。
【０１０３】
図１６は、多重度制御機能の実装例を示す第２の図である。
（Ａ）多重度制御機能の１つの実装形態として、負荷分散装置（ロードバランサ）に、多重度制御のための集積回路（多重度制御回路）を組み込む形態も考えられる。または、ロードバランサに、ロードバランサのプロセッサに実行させる多重度制御のためのファームウェア（多重度制御ファームウェア）を組み込む形態も考えられる。多重度制御回路や多重度制御ファームウェアは、ルータなどの通信装置に組み込んでもよい。
【０１０４】
（Ｂ）また、多重度制御機能の１つの実装形態として、多重度制御のための装置（多重度制御装置）を作成する形態も考えられる。多重度制御装置の機能は、集積回路やプロセッサに実行させるファームウェアとして実現できる。多重度制御装置は、複数のアクセスの多重度を制御してもよい。例えば、クライアント３１〜３４からＷｅｂサーバ・ファイルサーバ・アプリケーションサーバへの経路上に多重度制御装置が設定される。
【０１０５】
第２の実施の形態の情報処理システムによれば、ユーザＩＤ単位でアクセスの多重度を制限できるため、リバースプロキシサーバ１００が受信するアクセス全体の多重度を制限する場合と比べてユーザ間の公平性を維持できる。また、デフォルトモードでは、アクセスの余裕数が設定多重度に応じてユーザＡ，Ｂ，Ｃに分配されるため、最大多重度が公平に設定される。また、超過状況反映モードでは、アクセスの余裕数が、過去に多重度が設定多重度を超過した回数に応じてユーザＡ，Ｂ，Ｃに分配されるため、リバースプロキシサーバ１００やＷｅｂサーバ１００ａ，１００ｂ，１００ｃの処理能力を活用できる。
【０１０６】
また、リバースプロキシサーバ１００を一定期間（例えば、１ヶ月など）デフォルトモードで動作させた後で超過状況反映モードに切り替えることで、適切な最大多重度が自動的に決定される。また、多重度が設定多重度を超過した回数を継続的に監視することで、ユーザＡ，Ｂ，Ｃのアクセス状況の変化にも柔軟に対応することが可能となる。また、時間帯毎に各ユーザＩＤの最大多重度を切り替えるため、ユーザによって多重アクセスの多い時間帯が異なる場合には、できる限り各ユーザの需要を満たすことが可能となる。
【０１０７】
なお、前述のように、第１の実施の形態の情報処理は、情報処理装置１０やクライアント装置２１〜２３にプログラムを実行させることで実現できる。また、第２の実施の形態の情報処理は、リバースプロキシサーバ１００やＷｅｂサーバ１００ａ，１００ｂ，１００ｃやクライアント３１〜３４にプログラムを実行させることで実現できる。
【０１０８】
プログラムは、コンピュータ読み取り可能な記録媒体（例えば、記録媒体５３）に記録しておくことができる。記録媒体としては、例えば、磁気ディスク、光ディスク、光磁気ディスク、半導体メモリなどを使用できる。磁気ディスクには、ＦＤおよびＨＤＤが含まれる。光ディスクには、ＣＤ、ＣＤ−Ｒ（Recordable）／ＲＷ（Rewritable）、ＤＶＤおよびＤＶＤ−Ｒ／ＲＷが含まれる。プログラムは、可搬型の記録媒体に記録されて配布されることがある。その場合、可搬型の記録媒体からＨＤＤなどの他の記録媒体（例えば、ＨＤＤ１０３）にプログラムを複製して（インストールして）実行してもよい。
【符号の説明】
【０１０９】
１０  情報処理装置
１１  受信部
１２  制御部
２１，２２，２３  クライアント装置
【図１】
2014112270.tif 000003
【図２】
2014112270.tif 000004
【図３】
2014112270.tif 000005
【図４】
2014112270.tif 000006
【図５】
2014112270.tif 000007
【図６】
2014112270.tif 000008
【図７】
2014112270.tif 000009
【図８】
2014112270.tif 000010
【図９】
2014112270.tif 000011
【図１０】
2014112270.tif 000012
【図１１】
2014112270.tif 000013
【図１２】
2014112270.tif 000014
【図１３】
2014112270.tif 000015
【図１４】
2014112270.tif 000016
【図１５】
2014112270.tif 000017
【図１６】
2014112270.tif 000018