集群配置中quartz的java奇怪行为
我正在开发定期服务
该应用程序是使用JDK 1.6、Spring Framework 2.5.6和Quartz 1.8.4开发的,用于调度作业
我有两台带有WebLogic Server 10.3.5的群集服务器
有时,石英石的生产进度似乎很疯狂。分析发生这种情况的条件,集群服务器之间似乎存在一个大于1秒的时钟“去同步”。然而,这种去同步并不总是由于服务器的系统时间,有时似乎即使机器的时钟是同步的,JVM也会引入一点“延迟”
有人遇到过同样的问题吗?有办法解决吗
提前谢谢
# 1 楼答案
这个问题几乎总是归因于时钟偏移。即使您认为NTPd设置正确,但仍可能发生以下几件事:
所以这个故事的寓意是与NTPd同步,但要经常这样做,并验证它是否真的有效
# 2 楼答案
我使用的是Quartz 2.2.1,每当发生群集恢复时,我都会注意到一个奇怪的行为
例如,即使机器已与ntpdate服务同步,我在群集实例恢复时也会收到以下消息:
组织。石英impl。jdbcjobstore。JobStoreSupport findFailedInstances“此计划程序实例()仍处于活动状态,但已由群集中的另一个实例恢复。这可能会导致不一致的行为”
Here表示解决方案是:“同步所有集群节点上的时间,然后重新启动集群。消息不应再出现在日志中。”
因为每台机器都是同步的,所以这个“延迟”可能是由JVM引入的??我不知道……:()
# 3 楼答案
在Oracle 2.2.1版上使用JDBC JobStore时,我遇到了同样的问题
在我的例子中,我在一个节点上运行Quartz。然而,我注意到数据库机器与运行Quartz的节点没有时间同步
我在数据库机器和运行Quartz的机器上都激活了ntpd,几分钟后问题就消失了