• 検索結果がありません。

Web コンテナによるスレッドの作成

JSP 2.0,2.1 JSP ページ ISO-8859-1

2.13  Web コンテナによるスレッドの作成

この節では,Web コンテナによるスレッドの作成について説明します。

この節の構成を次の表に示します。

表 2‒42 この節の構成(Web コンテナによるスレッドの作成)

分類 タイトル 参照先

解説 作成するスレッドの種類と数 2.13.1

作成するスレッドの総数 2.13.2

注 「実装」,「設定」,「運用」および「注意事項」について,この機能固有の説明はありません。

Web コンテナでは,Web サーバ連携のためのスレッド,Web アプリケーションのためのスレッドなどを 作成します。これらのスレッドに対して,システムのリソースが十分であるか検討してください。

なお,アプリケーションサーバでは,サーブレットおよび JSP からスレッド(ユーザスレッド)を作成し て使用することもできます。ユーザスレッドで使用できるアプリケーションサーバの機能の詳細について は,「2.14 ユーザスレッドの使用」を参照してください。

ここでは,Web コンテナが作成するスレッドについて説明します。

2.13.1 作成するスレッドの種類と数

Web コンテナが作成するスレッドを次の表に示します。

表 2‒43 Web コンテナが作成するスレッド

スレッドの分類 参照先

Web コンテナの簡易 Web サーバ用のスレッド (1)

Web サーバ連携機能を使用するためのスレッド※1 (2)

インプロセス HTTP サーバを使用するためのスレッド※2 (3)

Web アプリケーションのためのスレッド (4)

管理用コンテキストのためのスレッド (5)

レスポンス送信時のタイムアウトを監視するためのスレッド (6)

注※1

Web サーバ連携機能を使用する場合に作成されるスレッドです。

注※2

インプロセス HTTP サーバを使用する場合に作成されるスレッドです。

(1) Web コンテナの簡易 Web サーバ用のスレッド(必須)

簡易 Web サーバ用のスレッドとして,Web コンテナが作成するスレッドとスレッド数を次に示します。

作成するスレッド

TCP のコネクション接続要求を受信するスレッド,および受信したリクエストの処理用スレッドを作成 します。

スレッドの数

TCP のコネクション接続要求を受信するスレッドは,1 スレッドです。簡易 Web サーバが受信したリ クエストの処理用スレッドは,最小 5 スレッド,最大 100 スレッドです。

リクエスト処理用スレッドは,起動時に 5 スレッド作成し,同時実行スレッド数が起動済みスレッド数 を超えた場合,100 スレッドまで作成されます。

なお,Web コンテナの簡易 Web サーバは,必ず使用します。

(2) Web サーバ連携機能を使用するためのスレッド

Web サーバとの連携に使用するスレッドとして,Web コンテナが作成するスレッドとスレッド数を次に 示します。

作成するスレッド

リダイレクタからのコネクション接続要求を受信するスレッド,およびリダイレクタから受信したリク エストの処理用スレッドを作成します。

スレッドの数

リダイレクタからのコネクション接続要求を受信するスレッドは,1 スレッドです。リダイレクタから 受信したリクエストの処理用スレッドは,Web サーバと Web コンテナとのコネクション数分スレッ ドを作成します。

リダイレクタから受信したリクエスト処理用スレッドは,起動時に,usrconf.properties の webserver.connector.ajp13.max_threads キーに指定した数分作成します

(webserver.connector.ajp13.max_threads キーのデフォルトは 10)。

(3) インプロセス HTTP サーバを使用するためのスレッド

インプロセス HTTP サーバ用のスレッドとして,Web コンテナが作成するスレッドとスレッド数を次に 示します。

作成するスレッド

リクエスト処理スレッド,およびリクエスト処理スレッド数の監視用スレッドを作成します。

スレッドの数

Web クライアントまたはプロキシサーバからの接続数と同じ数のリクエスト処理スレッドを作成しま す。リクエスト処理スレッドは,J2EE サーバ起動時に,usrconf.properties の

webserver.connector.inprocess_http.init_threads キーに指定した数分作成します

(webserver.connector.inprocess_http.init_threads キーのデフォルトは 10)。同時実行スレッド数 が J2EE サーバ起動時に作成したスレッド数を超えた場合,Web クライアントからの接続数の最大値を 上限として,リクエスト処理スレッドを作成します

(webserver.connector.inprocess_http.max_connections キーのデフォルトは 100)。

また,リクエスト処理スレッド数の監視用スレッドを 1 スレッド作成します。

(4) Web アプリケーションのためのスレッド

Web アプリケーション単位に,セッションの有効期限監視スレッドを作成します。最小 1 スレッド,最大 3 スレッドです。

(5) 管理用コンテキストのためのスレッド

管理用コンテキストを二つ生成するため,2 スレッド作成します。

(6) レスポンス送信時のタイムアウトを監視するためのスレッド

レスポンス送信時のタイムアウトを有効にすると,送信タイムアウトを監視するためのスレッドを 1 ス レッド作成します。

2.13.2 作成するスレッドの総数

Web コンテナがデフォルトの設定でプロセス起動時に作成するスレッドの総数を,Web サーバと連携す る場合と,インプロセス HTTP サーバを使用する場合に分けて示します。ただし,この数値には Web コ ンテナ以外のスレッド,および JavaVM が作成するスレッドは含まれていません。

(1) Web サーバと連携する場合

Web サーバと連携する場合の作成するスレッドの総数について説明します。また,Web サーバ連携に使 用するスレッド数についても説明します。

(a) 作成するスレッドの総数

作成するスレッドの総数は,レスポンス送信時のタイムアウトを設定しているかどうかによって異なりま す。

レスポンス送信時のタイムアウトを設定しているとき スレッド総数=A + B + C + D + E

レスポンス送信時のタイムアウトを設定していないとき スレッド総数=A + B + C + D

(凡例)

A:Web コンテナの簡易 Web サーバ用のスレッド数 B:Web サーバとの連携に使用するスレッド数 C:Web アプリケーション単位のスレッド数 D:管理用コンテキストのスレッド数

E:レスポンス送信時のタイムアウトを監視するためのスレッド数

このため,Web サーバ連携の場合のプロセス起動時のスレッド総数は次のようになります。

レスポンス送信時のタイムアウトを設定しているときのスレッド総数

=6 + 11 +(1×Web アプリケーション数)+ 2 + 1

=20 + Web アプリケーション数

レスポンス送信時のタイムアウトを設定していないときのスレッド総数

=6 + 11 +(1×Web アプリケーション数)+ 2

=19 + Web アプリケーション数

プロセス起動後,Web サーバとのコネクション数,簡易 Web サーバの同時実行数によってスレッド数が 増加します。

(b) Web サーバとの連携に使用するスレッド数

Web サーバ連携機能を使用する場合のリクエスト処理スレッドは,Web コンテナ起動時に

usrconf.properties の webserver.connector.ajp13.max_threads キーに指定した数分作成し,以降はリ ダイレクタからのコネクション数分作成します。そのため,リクエスト処理スレッド数の最大数は Web サーバの最大接続数に依存します。

なお,リダイレクタ−Web コンテナ間のコネクションがタイムアウトによって切断された場合は,Web サーバの最大接続数以上にリクエスト処理スレッドが作成されます。リクエスト処理用スレッド数の最大 値を算出する式を次に示します。

• HTTP Server を使用している場合

リクエスト処理スレッド数の最大値= A + B

(凡例)

A:HTTP Server の ThreadsPerChild ディレクティブの設定値

B:リダイレクタ−Web コンテナ間のコネクションがタイムアウトによって切断されたときの,実 行中のリクエスト数(最大値は webserver.connector.ajp13.max_threads の設定値)

• Microsoft IIS を使用している場合

リクエスト処理スレッド数の最大値= A×B + C

(凡例)

A:Microsoft IIS のスレッド数 B:Microsoft IIS のプロセス数

C:リダイレクタ−Web コンテナ間のコネクションがタイムアウトによって切断されたときの,実 行中のリクエスト数(最大値は webserver.connector.ajp13.max_threads の設定値)

(2) インプロセス HTTP サーバを使用する場合

作成するスレッドの総数は,レスポンス送信時のタイムアウトを設定しているかどうかによって異なりま す。

レスポンス送信時のタイムアウトを設定しているとき スレッド総数=A + B + C + D + E

レスポンス送信時のタイムアウトを設定していないとき スレッド総数=A + B + C + D

(凡例)

A:Web コンテナの簡易 Web サーバを使用する場合のスレッド数 B:インプロセス HTTP サーバを使用する場合のスレッド数 C:Web アプリケーション単位のスレッド数

D:管理用コンテキストのスレッド数

E:レスポンス送信時のタイムアウトを監視するためのスレッド数

このため,インプロセス HTTP サーバを使用する場合のプロセス起動時のスレッド総数は次のようになり ます。

レスポンス送信時のタイムアウトを設定しているときのスレッド総数

=6 + 11 +(1×Web アプリケーション数)+ 2 + 1

=20 + Web アプリケーション数

レスポンス送信時のタイムアウトを設定していないときのスレッド総数

=6 + 11 +(1×Web アプリケーション数)+ 2

=19 + Web アプリケーション数

J2EE サーバ起動後,Web クライアントとのコネクション数,簡易 Web サーバの同時実行数によってス レッド数が増加します。

Outline

関連したドキュメント