Jump to content 日本-日本語
日本HPホーム 製品 & サービス サポート & ドライバー ソリューション ご購入方法
≫  お問い合わせ

製品とサービス  >  ソフトウェアとOS  >  HP-UX   >  Knowledge-on-Demand

Tomcat 3.3 チューニング

HP-UX/Integrityサーバー お問い合せ
コンテンツに進む

Connectorの変更


Tomcatのデフォルトserver.xmlで構成されるConnectorには、server.xmlの次の部分で構成される2つのConnectorが含まれます。
Tomcat 3.3 チューニング
はじめに
JVM設定
スレッドプール
サーブレット

<!-- (1) HTTP Connector for stand-alone operation -->
<Connector className="org.apache.tomcat.service.PoolTcpConnector">
<Parameter name="handler"
value="org.apache.tomcat.service.http.HttpConnectionHandler"/>
<Parameter name="port"
value="8080"/>
</Connector>

<!-- (2) AJPV12 Connector for out-of-process operation -->
<Connector className="org.apache.tomcat.service.PoolTcpConnector">
<Parameter name="handler"
value="org.apache.tomcat.service.connector.Ajp12ConnectionHandler"/>
<Parameter name="port"
value="8007"/>
</Connector>
  1. 着信HTTP要求についてポート8080でリスンするConnectorです。このConnectorはスタンドアロン操作にのみ必要です。
  2. 着信AJPV12要求についてポート8007でリスンするConnectorです。このConnectorは、Webサーバー統合 (外部プロセスサーブレット統合) に必要です。
TomcatをシャットダウンするにはAJPV12 Connectorが必要です。しかし、スタンドアロン操作が不要な場合、HTTP Connectorを削除できます。

Connectorでのスレッドプールの使用


Tomcatはマルチスレッドで動作するサーブレットのコンテナです。したがって、各要求を実行するのにスレッドを1つ使用します。Tomcat 3.2より以前のバージョンでは、デフォルトで、着信する各要求に対応するために新しいスレッドが作成されていました。しかし、次のような理由から、この動作はロードされたサイトで問題になります。
  • すべての要求に対してスレッドを起動/停止することが、オペレーティング システムとJVMに余計な負担をかけます。
  • リソース消費量を制限するのは困難です。300個の要求が同時に着信する場合、Tomcatはその要求に対応するために300個のスレッドをオープンし、すべての要求を同時に処理するために必要なリソースをすべて割り当てます。このため、通常使用するリソースをはるかに上回るリソース (CPU、メモリ、記述子など) が割り当てられ、パフォーマンスの低下したり、リソースを使い果たしてクラッシュする可能性あります。
このような問題を解決する場合、スレッドプールを使用します (これはTomcat 3.3のデフォルト構成です)。スレッドプールを使用しているサーブレットコンテナが、スレッドを直接管理する負担から解放されます。サーブレットコンテナは、新しいスレッドを割り当てる代わりに、スレッドが必要な場合はプールからスレッドを取得するように要求し、不要になるとスレッドをプールに戻します。現在では、スレッドプールを利用して次のような高度なスレッド管理手法を実装することができます。
  1. スレッドを「オープン」したまま、スレッドを何度も再使用する手法。これにより、スレッドを連続的に作成/破棄した時に発生する問題が解消されます。
    - 一般的に管理者は、アイドル状態のスレッドの数を適正に保ち、必要に応じてスレッドを解放するようにプールに指示できます。
  2. 同時に利用できるスレッド数の上限を設定する手法。これにより、スレッドが無制限に割り当てられる際に発生するリソース割り当て問題を防止できます。
    - コンテナのスレッド数が上限に達した時に新しい要求が着信すると、その要求は別の (以前の) 要求が終了し、別の要求に使用されていたスレッドが開放されるまで待機しなければなりません。
上記の手法をさまざまな方法で洗練することは可能ですが、あくまで洗練にとどまります。スレッドプールの主要な利点は、スレッドの再利用と同時に利用できるリソース使用量の制限です。

Tomcatでのスレッド プールの利用方法は簡単です。つまり、<Connector>構成でPoolTcpConnectorを使用するだけです。たとえば、server.xmlの次の部分でプールを使用したConnector AJPV12が定義されています。

プールを使用したAJPV12 Connector


<!-- A pooled AJPV12 Connector for out-of-process operation -->
<Connector className="org.apache.tomcat.service.PoolTcpConnector">
<Parameter
name="handler"
value="org.apache.tomcat.service.connector.Ajp12ConnectionHandler"/>
<Parameter
name="port"
value="8007"/>
</Connector>
この部分は非常にシンプルで、デフォルト (上記) のプール動作は次のようになります。
  • 50個のスレッドを同時に利用可能。
  • プールにアイドル状態のスレッドが26個以上あると、プールがそれらのスレッドを削除し始める。
  • プールの作成時には10個のスレッドを保持し、空きのスレッドを10個維持しようとする (上限が維持されている限り)。
このデフォルト構成は、平均的な同時要求数が10〜40個ぐらいの中規模なサイトに適しています。上記の例に当てはまらない場合、この構成を変更する必要があります (上限を低くするなど)。次に示すように、server.xmlの<Connector>要素でプールを構成できます。

スレッドプールの構成方法


<!-- A pooled AJPV12 Connector for out-of-process operation -->
<Connector className="org.apache.tomcat.service.PoolTcpConnector">
<Parameter
name="handler"
value="org.apache.tomcat.service.connector.Ajp12ConnectionHandler"/>
<Parameter
name="port"
value="8007"/>
<Parameter
name="max_threads"
value="30"/>
<Parameter
name="max_spare_threads"
value="20"/>
<Parameter
name="min_spare_threads"
value="5" />
</Connector>
上記のように、プールには次の3つの構成パラメータがあります。
  • max_threads - 同時に使用できるスレッド数の上限を定義します。プールはこの数を超えるスレッドを作成しません。
  • max_spare_threads - プールがアイドル状態でも保持するスレッドの最大数を定義します。アイドル状態のスレッド数がmax_spare_threadsの値を超えると、プールがスレッドを削除します。
  • min_spare_threads - プールは、新しい着信要求をリスンしているアイドル状態のスレッド数が常にこの数以上になるよう監視します。min_spare_threadsの値は、1以上でなければなりません。
上記のパラメータを使用して、必要に合わせてプール動作を調整する必要があります。
最初のページへ 前のページへ 次のページへ

お問い合わせ

ご購入前のお問い合わせ


ご購入後のお問い合わせ

オンラインサポート
製品の標準保証でご利用いただける無償のサービスです。

ショールーム

ショールーム 導入をご検討のお客様へ
業務アプリケーションの継続・標準化・開発性とシステム担当者様、システム開発者様が抱える悩み・疑問に対する解決策実体験して頂けます。
印刷用画面へ
プライバシー ご利用条件・免責事項 ウェブマスターに連絡