9

やっぱりハロウィンです。

問題は次のとおりです。Quartzを使用して古いJ2EEコードを維持しているため、スレッドが不足しています。 jconsole洋ナシの形になると、60Kのスレッドが不足しているとのことですが、実際には約100(!!)が実行されています。直感といくつかのグーグル(ここも参照)は、何が起こっているのか(Quartzに賭けている)がクリーンアップされないアンマネージスレッドを作成していることを示唆しています。

いくつかのサブ質問:

  1. スレッドの作成を追跡するために簡単に使用できるツールがあるので、問題は本当にQuartzであると確信できますか?

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

  3. 誰かが既知の解決策を持っていますか?

J2EEをやってから何年も経ちますので、これが簡単に解決できるものであれば、それほど驚かないでしょう。

更新:それは明らかに無制限にスレッドを増やしています。jconsoleからのこのプロットを参照してください。

彼らは死んでいる、ジム

4

2 に答える 2

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

  • それでも問題が解決しない場合は、ロギングリスナーを試してください。Quartzには、チュートリアルで指定されているJobListenerインターフェイスがあります。リスナーは、ジョブの実行を追跡するのに役立ちます。たぶん、仕事は終わらないだけで行き詰まります。

  • org.quartz.threadPool.threadCountスレッドの不足を停止するように構成します。

アップデート:

  • また、スレッドダンプを取得して、スレッドの統計を確認することもできます。visual vmにはTDAと呼ばれるプラグインがあります。または、スレッドダンプアナライザーを直接使用することもできます。

  • 念のため、クォーツのバージョンをチェックして、既知のバグがないかどうかを確認してください。

于 2009-10-30T16:41:02.633 に答える
0

jvisualvmをご覧になりましたか?それはいくつかのより多くの情報を提供します。

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

于 2009-10-30T17:21:21.053 に答える