26

毎日午後7時に実行されていたクォーツジョブがあります。突然実行できなくなりました。server.log を確認しましたが、スローされた例外はありません。何が問題なのか誰にも分かりますか?

前もって感謝します

4

6 に答える 6

15

同様の問題がありましたが、問題は、クォーツプロパティに10個のスレッドクォーツのデフォルトスレッド数があり、スレッドダンプ*を作成したときに、ブロックされた統計に10個のジョブがあることがわかりました。つまり、これ以上実行できませんスレッド。

この問題をすばやく修正して、Quartz プロパティのスレッド プール内のスレッド数を増やします。

実際の修正は、コードを見直して、ブロックされたスレッドが 10 個あった理由を知ることでした。

*スレッド ダンプを実行するには、kill -3 < java process number >を使用できます。これにより、スレッド ダンプがアプリケーションの標準出力に出力されます。つまり、Tomcat を実行している場合は、catalina.outログ ファイルで見つけることができます。

于 2011-04-11T18:30:38.133 に答える
8

私の場合、データベースへのオープン接続がありました。利用可能な接続がなくなったとき、スレッドは永遠に待機したままになりました。他の仕事を始めることができなかったので、何も起こらず、すべてがブロックされたままになりました。私のアドバイスは、解放する必要がある可能性のあるブロッキング リソースがあるかどうかを確認することです。

于 2014-01-20T14:09:47.757 に答える
4

データベースを使用してジョブを保存している場合は、トリガーの trigger_state を確認してください。現在、同様の問題が発生しています (または、少なくとも同様の症状があります)。

1 分に 1 回実行されるジョブは、トリガーを「ACQUIRED」状態のままにし、二度と実行されません。あなたのように、ログには何も表示されません。

また、同じ問題の別の原因も見ています。繰り返しますが、ジョブは実行を停止しますが、トリガーは「ACQUIRED」状態ではありません。これまでのところ、私は原因を知りません。

私がこれまでに知っていることは、スケジューラ スレッドが空きワーカー スレッドを待っているということです。スケジュールを更新するために、すべてのワーカー スレッドがセマフォを待機しているようです。ワーカー スレッドが何を待機しているかを確認するためのスレッド ダンプをまだ取得できていません。

Quartz 1.6.1 RC1 を実行しています。このバグ レポートを参照してください: http://jira.opensymphony.com/browse/QUARTZ-668

それが私が見ているものだと思います。

于 2009-05-05T13:13:54.227 に答える
2

ジョブが例外をスローしているかどうかを確認します。Job exe コードを try catch ブロックに入れ、例外をトレースして、問題をトラブルシューティングします。

于 2009-11-10T16:39:29.627 に答える