8.3.3 リクエスト処理スレッド数を制御する
Webフロントシステムの場合,Webブラウザなどのクライアントからのリクエストは,アプリケーションサーバが作成するリクエスト処理スレッドによって処理されます。リクエスト処理スレッド数を適切に制御することで,処理性能の向上が図れます。
ここでは,アプリケーションサーバでのリクエスト処理スレッド数を制御する目的と,チューニングの指針について説明します。
なお,ここでは,J2EEサーバ上のWebコンテナが作成するリクエスト処理スレッド数のチューニングの方法について説明します。
- 参考
-
J2EEサーバの前段に置くリバースプロキシとしてHTTP Serverを使用している場合は,HTTP Serverの設定で同様のチューニングができます。詳細は,マニュアル「HTTP Server」を参照してください。
- 〈この項の構成〉
(1) リクエスト処理スレッド数を制御する目的
リクエスト処理スレッド数をJ2EEサーバが動作しているホストの性能やクライアントからのアクセス状況に合わせてチューニングすることで,性能向上を図れます。
リクエスト処理スレッドの生成は,負荷が高い処理です。リクエスト処理スレッドをあらかじめ生成してプールしておくことで,Webブラウザなどのクライアントからのリクエスト処理要求時の負荷を軽くして,処理性能を高めることができます。
Webコンテナでは,J2EEサーバ起動時にリクエスト処理スレッドをまとめて生成してプールしておき,Webブラウザなどのクライアントからリクエスト処理要求があった場合にそれを利用するようにできます。これによって,リクエスト処理要求時の処理性能の向上を図れます。なお,プールしているスレッドの数を監視しておくことで,プールしているスレッド数が少なくなった場合はさらに追加生成して,プールに確保しておくこともできます。
ただし,使用しないスレッドを大量にプールしておくと,むだなリソースを消費します。このため,システムの処理内容に応じて,プールするリクエスト処理スレッド数を適切に制御し,場合によっては不要なスレッドを削除することが必要です。
リクエスト処理スレッドの制御では,これらを考慮して,パラメタに適切な値を設定してください。
(2) 設定の指針
リクエスト処理スレッド数の制御では,次のパラメタを使用してチューニングできます。
-
J2EEサーバ起動時に生成するリクエスト処理スレッドの数
-
Webクライアントとの接続数(リクエスト処理スレッド数)の上限数
-
接続数の上限を超えた場合のTCP/IPのListenキュー(バックログ)の最大値
-
リクエスト処理スレッド数の最大数
これらのパラメタを設定するときには,次の点に留意してください。
-
提供するサービスの内容によっては,J2EEサーバ起動直後から大量のリクエストを処理する必要があります。この場合は,J2EEサーバ起動時に生成するリクエスト処理スレッドの数に,大きな値を指定してください。
-
リクエスト処理スレッドの最大数を大きくしておくと,クライアントからのアクセスが急に増加した場合にも,処理性能を下げることなく迅速に対応できます。ただし,多くのスレッドをプールしておくと,多くのリソースが消費されます。このため,急な増加が予想されるアクセス数を見積もって,適切な数のスレッドがプールされるように,注意して設定してください。
-
一度作成したスレッドを削除しないでプールし続けたい場合は,リクエスト処理スレッドの最大数を,リクエスト処理スレッドの最小数と同じ値にしてください。
このほか,Webアプリケーションの同時実行スレッド数との関係についても留意してください。Webアプリケーションの同時実行スレッド数については,「8.3.4 Webアプリケーションの同時実行数を制御する」を参照してください。