Cosminexus V9 アプリケーションサーバ Cosminexus HTTP Server

[目次][用語][索引][前へ][次へ]

4.9 流量制限機能

Webサーバへのアクセスの増加や,業務アプリケーションなどの影響でWebサーバの負荷が高くなった場合に,Webサイトにアクセスするユーザ数を制限するなどして,Webサービスの処理効率を維持する機能を流量制限機能といいます。

HTTP Serverにmod_hws_qosモジュールを組み込めば,流量制限機能を使用できます。流量制限機能を使用すると,次に示すことができます。なお,以降の記述で「サーバプロセス数」は,Windows版の場合「サーバスレッド数」のことです。

十分なWebサービスを提供するには,同時にアクセスするユーザ数を満たすだけのサーバプロセス数が必要です。Webサーバが1台で不十分なら,複数台用意し,負荷分散機でアクセスを分散させるなどしてWebサービスを保証できるように運用設計してください。

このようにWebサービスの資源を用意しても,一時的に過負荷状態が発生する場合に備えて,流量制限機能を使用してください。mod_hws_qosによる流量制限機能の概要を次に示します。

図4-12 mod_hws_qosによる流量制限機能の概要

[図データ]

<この節の構成>
(1) mod_hws_qosモジュールの組み込み
(2) ディレクティブの設定方法
(3) レスポンスメッセージ
(4) 注意事項

(1) mod_hws_qosモジュールの組み込み

流量制限機能を使用するためにはmod_hws_qosモジュールの組み込みが必要です。mod_hws_qosモジュールを組み込むには,コンフィグファイル(httpsd.conf)に次に示すディレクティブを指定します。

(2) ディレクティブの設定方法

流量制限機能を使用するための,各ディレクティブの設定例を次に示します。

(a) サーバプロセス数の制限によるリクエスト拒否

次のように指定すると,リクエスト処理中のサーバスレッド数が13の場合には,新たなリクエスト要求はステータスコード503で拒否されます。

(b) クッキーを使用したセション管理

クッキーを使用したセション管理には,HTTP Serverで作成したクッキーを使用するHWS作成モードと,HTTP Server以外の外部モジュールなどで作成されたクッキーを使用するユーザ作成モードがあります。QOSCookieNameディレクティブを用いて,どちらの方式を使用するかを選択します。QOSCookieNameディレクティブの詳細については,「6.2 ディレクティブの詳細」を参照してください。

HWS作成モード
リクエスト処理を実施した場合には,HTTP Serverで作成したクッキーが,レスポンスヘッダのSet-Cookieヘッダに付けられます。HTTP Serverで作成したクッキーを持ったリクエスト要求は,持っていないリクエスト要求よりも優先して処理されます。

ユーザ作成モード
HTTP Server以外で作成されたクッキーがレスポンスヘッダのSet-Cookieヘッダに付けられる場合に,そのクッキーを使用した流量制限が実行されます。そのクッキーを持ったリクエスト要求は,持っていないリクエスト要求よりも優先して処理されます。

次のように指定すると,リクエスト処理中のサーバスレッド数が10の場合,クッキーを持っていない新しいセションのリクエスト要求は拒否されますが,クッキーを持った継続セションは処理されます。リクエスト処理中のサーバスレッド数が13の場合は,クッキーを持っているかどうかに関係なく拒否されます。この例ではHWS作成モードで動作します。

(c) リダイレクト

流量制限機能によってリクエスト処理を拒否する場合には,ステータスコード503でレスポンスメッセージを返送しますが,次のように指定すると,ほかのWebサーバへリダイレクトさせることができます。/index.htmlへのリクエスト要求が流量制限機能によって拒否された場合には,www1.hitachi.co.jpのWebサーバのindex.htmlをレスポンスヘッダに設定し,ステータスコード302で返送されます。

QOSRedirect /index.html http://www1.hitachi.co.jp/index.html
(d) レスポンスメッセージのカスタマイズ

次のように指定すると,拒否されたリクエストに対するレスポンスは,ステータスコード503で,レスポンスメッセージは,htdocs/busy.htmlの内容が返送されます。

QOSResponse file "text/html; charset=ISO-8859-1" htdocs/busy.html

(3) レスポンスメッセージ

(a) サーバからクライアントに送信されるクッキーについて

HWS作成モード
HTTP Serverで作成したクッキーは,Set-Cookieヘッダによってクライアントへ返送されます。Set-Cookieヘッダは一つのレスポンスに複数指定できるため,ここで作成するクッキーは,ほかのクッキーに影響しません。HTTP Serverで返送するSet-Cookieヘッダを次に示します。
 
Set-Cookie: NAME=VALUE; expires=DATE; path=/; domain=DOMAIN_NAME; secure
 
NAME=VALUE
NAMEにはQOSCookieNameディレクティブで指定した名称が設定されます。VALUEにはリクエスト制御用の値が設定されます。
expires=DATE
クッキーが無効となる時刻。"リクエストの受信時刻+QOSCookieExpiresディレクティブ設定値"によって求めた値が,RFC822形式で設定されます。
path=/
クッキーが有効となるURL。このモジュールでは,クッキーが有効となるドメイン内の,すべてのURLで有効となるように設定されます。
domain=DOMAIN_NAME
クッキーが有効となるドメイン。QOSCookieDomainディレクティブで指定されます。
secure
SSLによる通信時だけ,クッキーをクライアントからサーバに送信するかどうかの指定。QOSCookieSecureディレクティブで指定されます。

ユーザ作成モード
HTTP Serverではクッキーを作成しません。HTTP Server以外で作成されたクッキーが,Set-Cookieヘッダによってクライアントへ返送されます。
(b) 流量制限機能によって拒否された場合のヘッダについて

流量制限機能によって拒否された場合,レスポンスメッセージをキャッシュできなくするためのヘッダであるExpiresを,レスポンスヘッダに含めます。これは,サーバ側でリクエスト処理が可能であっても,プロキシまたはブラウザでキャッシュされると,キャッシュされたメッセージがブラウザに表示されて,サーバにリクエストしない場合があるためです。また,拒否メッセージ送信後はサーバ側からコネクションを切断します。

そのほかのレスポンスヘッダは,次のように設定されます。Content-Typeには,AddDefaultCharsetで指定した文字セットが付加されます。

(i)ステータスコード503の標準メッセージ
Content-Type:text/html

(ii)QOSResponseによるカスタマイズされたメッセージ
Content-Type:QOSResponseディレクティブ指定値

(iii)QOSRedirectによるステータスコード302のメッセージ
Content-Type:text/html
Location:QOSRedirectディレクティブ指定値

(4) 注意事項