2011-10-17 46 views
1

Tomcatのスレッド関連のMbeanで、私はCatalina.ThreadPoolの下にあります。Tomcatスレッド監視Mbean説明

さまざまな属性があります。 maxThreadsの、currentThreadCount、currentThreadsBusyなど

だから、私はこれらの属性のそれぞれが示すされているもの 、これらのMbean属性の説明を取得することができ、私はスレッドを提供します私の監視オートメーションコードでこれを含める必要があり利用統計。

ソースコードを見たいのですが、どこから入手できますか?

(jconsoleを介して)Mbeanクラス名が表示されている場合、org.apache.tomcat.util.modeler.BaseModelMBeanとして表示されますが、BaseModelMBeanのソースコードを調べると、フィールドまたはデータメンバーこれらの属性は、このクラスの上記部分または実装するインタフェースの一部です。

次に、Mbeanのどの実装がここに表示されていますか?あなたはgetCurrentThreadCount()、getCurrentThreadsBusy()とJIoEndpointでmaxThreadsのについて読むことができます

答えて

1

maxThreadsの、currentThreadCount、currentThreadsBusy JMXプロパティはスレッドプールに関連するTomcatのコネクターは、着信要求を処理するために使用しています。通常、アプリケーションスレッドリストにhttp-nio-[port-number]-exec-[sequence-number]という名前のスレッドがあります。 要求がコネクターに到着すると、コネクターはスレッドプールの手段によって特定のスレッドをそのコネクターに割り当てます。このスレッドは、要求が処理されるまで「ビジー」になります。したがって、currentThreadsBusyは、現在処理されている要求の数を反映しています。

maxThreadsは、いずれの場合でも超過したくないスレッドの数を定義します。 currentThreadsBusyカウンタがmaxThreadsのしきい値に達すると、これ以上の要求は処理されず、アプリケーションは停止します。

currentThreadCountがあれば、糸の量、スレッドプールは今、忙しいとフリーの両方が、スレッドプールがmaxThreadsのまで、彼らは一定の期間のために使用されていない場合は、いくつかのスレッドを終了するか、新しいものを作成しますしていることを示します需要がある、以下の詳細を参照してください。

「Under the hood」は、Tomcat 7以降、org.apache.tomcat.util.net.AbstractEndpointであり、とりわけスレッド管理を担当しています。スレッドプール(デフォルト選択)としてjava.util.concurrent.ThreadPoolExecutorを使用する場合、maxThreadsはThreadPoolExecutorのmaximumPoolSize、currentThreadsBusy - activeCount、currentThreadCount - poolSizeにマッピングされます。

currentThreadsBusyは、Webアプリケーションの健康を監視するための最良の選択である、と述べました。 maxThreadsは静的な値に似ています(動的に変更する場合を除きます)。 currentThreadCount mayは、タイムラグのある有用な情報を提供します。