2009-10-30 1 views
9

Hallowe'enです。私のbrainzを食べるゾンビ糸(J2EE、Tomcat、Hibernate、Quartz)

問題は次のとおりです。Quartzを使用して古いスレッドJ2EEコードを維持していますが、スレッドが不足しています。 jconsoleは、それが約100(!!)が実際に走っている、梨の形になったら、ちょうど60Kのスレッドが足りないことを教えてくれます。直感といくつかのグーグル(hereも参照)は、何が起こっているのか(クォーツに賭けている)は、決してクリーンアップされない管理されていないスレッドを作成していることを示唆しています。

いくつかsubquestions:

  1. それが私がスレッドの作成をトレースするために簡単に使用することができますので、私は問題は本当にクォーツある特定のことができるツール?

  2. 同様の問題について私が見つけたほとんどすべてがWeblogicを参照しています。これはTomcatの間違ったリードですか?

  3. 誰にも既知の解決策がありますか?

私はJ2EEをやって以来、何年も経っています。これが単純に解決できるものであれば、あまり驚かないでしょう。

更新:これは明確にスレッドが増加しています.jconsoleのこのプロットを参照してください。

They're dead, Jim http://i35.tinypic.com/33vnarn.png

+0

スレッドの名前にパターンがありますか?私は問題をQuartzを使用するコードではなく、Quartz自体ではなく、タイトルのために –

+8

+1、私が知る必要があるすべてを教えてくれます。あなたはショットガンを試しましたか? – Anthony

+0

Matt、私はJEEデバッグツールでは時代遅れです(ちょうど別の質問に対して推奨事項を求めました:http://stackoverflow.com/questions/1650881/state-of-the-art-in-j2ee-debugging-and -monitoring-tools/1650922#1650922)私はまだいません。しかし、Quartzの既知のバグがあり、アンマネージスレッドが生成されています。 –

答えて

4
  • より多くの情報を取得するには、デバッグにorg.quartz.simpl.SimpleThreadPoolのログレベルを上げるようにしてください。

  • これでうまくいかない場合は、ロギングリスナーを試してみてください。 Quartzには、tutorialで指定されたJobListenerインターフェイスがあります。リスナーは、ジョブの実行をトレースするのに役立ちます。多分、仕事は終わらず、デッドロックしてしまうかもしれません。

  • org.quartz.threadPool.threadCountにスレッド不足を設定します。

更新:

  • また、あなたは、スレッドダンプを取ると、スレッドの統計を見たいかもしれません。 visual vmにはTDAというプラグインがありますが、Thread dump analyzerを直接使用することもできます。

  • 水晶バージョンを確認して、既知のバグがないかどうかを確認してください。

+0

Marcelo、jconsoleプロットはスレッドが無限に明確に成長していることを示しています。うーん、私はその絵を含めるべきです。 –

0

あなたはjvisualvmで見たことがありますか?いくつかの情報がありますか?

さらに、スタックトレースを取得して、実際にスレッドが待機しているものを確認します。あなたはそこにああ気分があるかもしれません。

関連する問題