私は毎日午後7時に実行していた石英の仕事をしています。突然実行に失敗しました。私はserver.logをチェックし、例外はスローされません。誰もが何が問題になるか考えていますか?あなたが仕事を格納するデータベースを使用している場合は、事前クォーツスケジューラが突然実行を停止し、例外エラーはありません
答えて
で
おかげで、あなたのトリガのtrigger_stateを確認してください。今私は似たような問題を抱えています(あるいは少なくとも類似した症状を抱えています)。
1分に1回実行されるジョブは、「ACQUIRED」状態でトリガを残しており、再び実行されません。あなたのように私はログを何も見ていない。
私は同じ問題の別の原因も見ています。この場合も、ジョブは実行を停止しますが、トリガーは「取得済み」状態ではありません。これまでのところ私は原因を知らない。
私が今まで知っているのは、スケジューラスレッドが空きワーカースレッドを待っているということです。スケジュールを更新するために、すべてのワーカースレッドがセマフォを待っているようです。ワーカースレッドが何を待っているかを確認するためにスレッドダンプをまだ取得できませんでした。
私はQuartz 1.6.1 RC1を実行しています。このバグレポートをご覧ください:http://jira.opensymphony.com/browse/QUARTZ-668
私はそれが私が見ていると思います。
ジョブが例外をスローしているかどうかを確認します。 try EXEコードをtry catchブロックに入れて、例外をトレースして問題をトラブルシューティングします。
私は同じ問題を抱えていましたが、問題は、石英のプロパティで石英のデフォルトスレッド数が10個あり、スレッドダンプを作成したときです... のブロックがであることがわかりました。これ以上スレッドを実行することはできません。
クォーツプロパティのスレッドプール内のスレッド数を増やすためにこの問題をすばやく修正しました。
なぜ私はブロックされたスレッドが10個あるかを知るためにコードを見直していました。 *実行するスレッド
は、あなたが使用することができますダンプキル-3 < javaプロセス番号> Tomcatを実行している場合は、ログファイルcatalina.out でそれを見つけるすなわち、アプリケーション、標準出力にスレッドダンプを印刷
私は似ていますが多少異なる問題がありました。私のスケジューラは、開発環境で正常に動作しています。このスケジューラでは、トランザクションの更新などの仕事をしています。
ビルドをプロダクションに移すと、スケジューラはうまく動作し、土曜日まではすべて正常でした。土曜日に私のスケジューラーが突然停止しました。私は、アプリケーションサーバー(OC4J)のスケジューラに関連する例外を見つけませんでした。
私はquartz-1.5.2バージョンを使用しています。私は問題の実際の根本原因を辿ることができません。
私はアプリケーションサーバーの起動時にスケジューラを開始しています。何か問題が起これば、それは動作を停止します。それから私はそれらを始める機会がありません。
私はいくつかのjsp要求を使用してinitサーブレットを呼び出すことによってスケジューラを開始すると再び違いが生じると思います。それはプロファイル(私たちのスケジューラーの健康とそれらを再び開始する)を見るようなものです。あなたがスケジューラを開始するためのより良いアプローチがあるなら、私に提案してください。
あなたのジョブがしばらくの間うまく実行されていたならば、スケジューラーをどのように起動するべきではないはずです。私はあなたがスレッドとヒープダンプを取る必要があり、それが固まっている場所を参照してくださいね。また、devとprodのセットアップの違いはありませんが、スレッドダンプから始めましょう。私たちのケースでは – aishwarya
はい、quartz.propertiesのスレッド数を7から10に増やすことは、この問題を解決するようです。
私の場合、私はデータベースとのオープンな接続を持っていました。利用可能な接続がなくなったとき、スレッドは永遠に待っていました。私は他の仕事を始められなかったので、何も起こらず、すべてが閉ざされたままでした。 私は、あなたが解放する必要のあるかもしれないすべてのブロックリソースを持っているかどうかを確認することを勧めます。
接続が失われたときに起こった –
クォーツジョブの設定に使用されているコードを投稿できますか? –
回避策はありますか?私は同じ問題を抱えています。 – kaptan