7

定期サービスを開発しています。

アプリケーションは、JDK 1.6、Spring Framework 2.5.6、Quartz 1.8.4 を使用して開発され、ジョブをスケジュールします。

WebLogic Server 10.3.5 で 2 つのクラスタ サーバーを使用しています。

時々、クオーツのスケジュールがおかしくなってしまうようです。それが発生する条件を分析すると、クラスタ化されたサーバー間で 1 秒を超えるクロック「非同期化」が発生しているようです。ただし、この非同期化は常にサーバーのシステム時刻が原因であるとは限りません。マシンのクロックが同期していても、JVM によって多少の「遅延」が発生しているように見える場合があります。

誰かが同じ問題に遭遇しましたか? それを解決する方法はありますか?

前もって感謝します

4

5 に答える 5

4

バージョン 2.2.1 の Oracle で JDBC-JobStore を使用すると、同じ問題が発生しました。

私の場合、Quartz を 1 つのノードで実行していました。しかし、データベース マシンが Quartz を実行しているノードと同期していないことに気付きました。

データベース マシンと Quartz を実行しているマシンの両方で ntpd をアクティブにすると、数分後に問題が解消されました。

于 2015-07-24T19:26:39.697 に答える
3

この問題は、ほとんどの場合、クラスター ノードでの時間の非同期化が原因で発生します。ただし、DB へのアプリケーションの接続が不安定であることが原因である可能性もあります。このような接続の問題は、ネットワークの問題 (アプリケーション サーバーと DB サーバーが異なるマシン上にある場合) またはパフォーマンスの問題 (DB サーバーが何らかの理由でリクエストを非常に遅く処理する場合) によって引き起こされる可能性があります。

このような場合、org.quartz.jobStore.clusterCheckinInterval の値を増やすことで、この問題が発生する可能性を減らすことができます。

于 2016-10-20T09:56:12.183 に答える
2

この問題は、ほとんどの場合、クロック スキューに起因します。NTPd が適切に設定されていると思っていても、いくつかのことが起こる可能性があります:

  • NTPdが機能していると思っていましたが (適切に構成されていました)、AWS ではファイアウォールが NTP ポートをブロックしていました。UDP 123. 繰り返しますが、これは TCP ではなく UDP です。
  • 十分な頻度で同期しないと、クロック スキューが蓄積されます。多くのマザーボードのタイマーの精度は、非常に不安定です。したがって、時間の経過とともに (数日) 突然、これらの Quartz エラーが発生します。5 分以上経過すると、Kerberos などの多くのセキュリティ エラーが発生します。

したがって、この話の教訓は NTPd と同期することですが、頻繁に同期を行い、実際に機能していることを確認してください。

于 2016-08-30T17:56:33.153 に答える