Tomcatをインストールしていますが、スレッドが適切に解放されていないために、スレッドプールが時間とともに減少している可能性があります。 maxthreadsに達するとcatalina.outでエラーが発生しますが、この仮説を検証できるように、使用中のスレッドの数を5分ごとにファイルに記録したいと思います。誰もこれをどのように行うことができるかアドバイスできますか?
また、このインストールにはTomcatマネージャーはありません。元のインストールを行った人が何らかの理由でマネージャーwebappを削除したようです。マネージャーが上記を実行できるかどうか、または既存のインストールを損傷せずに再インストールできるかどうかはわかりませんか?本当にやりたいことは、スレッドプールを追跡することです。
また、Tomcatのmaxthreadsは200ですが、Apacheの同時接続の最大数が少ないことに気付きました(Apacheはmod_proxyおよびmod_proxy_ajp(AJP 1.3)を使用してTomcatにフィードします)。それも間違っているようですが、これらの数字の正しい関係は何ですか?
助けていただければ幸いです:D
更新:直接的なJMXアクセスが機能したと言う簡単な更新。ただし、Dcom.Sun.management.jmxremote.Hostも設定する必要がありました。 localhostに設定して動作しましたが、サイコロなしでは動作しませんでした。他の誰かがJMXを有効にしようとして同様の問題を抱えている場合は、ローカルマシンから接続している場合でも、この値も設定することをお勧めします。 Tomcatの一部のバージョンでは必要なようです。
JMXへの直接アクセスが機能したと言う簡単な更新です。ただし、Dcom.Sun.management.jmxremote.Hostも設定する必要がありました。 localhostに設定して動作しましたが、サイコロなしでは動作しませんでした。他の誰かがJMXを有効にしようとして同様の問題を抱えている場合は、ローカルマシンから接続している場合でも、この値も設定することをお勧めします。 Tomcatの一部のバージョンでは必要なようです。
これをcatalina.sh
/bat
に追加してみてください:
-Dcom.Sun.management.jmxremote
-Dcom.Sun.management.jmxremote.port=5005
-Dcom.Sun.management.jmxremote.ssl=false
-Dcom.Sun.management.jmxremote.authenticate=false
更新:Alex Pは、状況によっては次の設定も必要になることを示唆しています。
-Dcom.Sun.management.jmxremote.Host=localhost
これにより、ポート5005でのリモート匿名JMX接続が可能になります。プラグイン経由でJMXを参照できるJVisualVMを検討することもできます。
探しているのは、Catalina
-> ThreadPool
-> http-bio-8080
->さまざまな興味深いメトリックです。
より簡単な方法は、Tomcatの JMX proxy servlet under: http:// localhost:8080/manager/jmxproxy を使用することです。たとえば、次のクエリを試してください。
$ curl --user Tomcat:tomcat http://localhost:8080/manager/jmxproxy?qry=Catalina:name=%22http-bio-8080%22,type=ThreadPool
少しのgrep
pingとスクリプト作成により、アプリケーションを簡単かつリモートで監視できます。 Tomcat:tomcat
は、manager-jmx
でconf/Tomcat-users.xml
ロールを持つユーザーのユーザー名/パスワードであることに注意してください。
よりエンタープライズ向けのソリューション。実稼働環境でNew Relicを使用しています。
これにより、経時的なスレッドプールへの変更のグラフが提供されます。
jolokia.war をデプロイしてから、JSONでmbeans値を取得できます(マネージャーなし):
http:// localhost:8080/jolokia/read/Catalina:name = *、type = ThreadPool?ignoreErrors = true
一部の値(currentThreadsBusy、maxThreads、currentThreadCount、connectionCount)のみが必要な場合:
{
request: {
mbean: "Catalina:name="http-nio-8080",type=ThreadPool",
attribute: [
"currentThreadsBusy",
"maxThreads",
"currentThreadCount",
"connectionCount"
],
type: "read"
},
value: {
currentThreadsBusy: 1,
connectionCount: 4,
currentThreadCount: 10,
maxThreads: 200
},
timestamp: 1490396960,
status: 200
}
注:この例はTomcat7 +で機能します。