Quartz 作业始终在同一节点上执行
Quartz job always executed on same node
我将 quartz 配置为在集群中工作,我的简单 quartz 配置
org.quartz.scheduler.instanceName=作业调度程序
org.quartz.scheduler.instanceId=AUTO
org.quartz.threadPool.threadCount=5
org.quartz.jobStore.class=org.quartz.impl.jdbcjobstore.JobStoreTX
org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.StdJDBCDelegate
org.quartz.jobStore.useProperties=true
org.quartz.jobStore.misfireThreshold=10000
org.quartz.jobStore.tablePrefix=QRTZ_
org.quartz.jobStore.isClustered=true
org.quartz.jobStore.clusterCheckinInterval=20000
我有两个节点执行我的作业,但是当我每秒安排一些任务到 运行 时,我可以看到它只在节点 1 上执行。如果我在 node1 上暂停调度程序,任务将移动到 node2 并坚持下去,即使 node1 再次联机也是如此。我怎样才能使节点之间的执行均匀偏差?
谢谢
This 可能会有帮助。如果你的集群不是很忙,一个节点可能会完成所有的工作,因为每次它完成一项工作,它就会去寻找更多的工作,并找到下一个 运行 工作它刚刚完成。集群上的另一个节点将定期轮询工作,但不太可能找到任何需要做的事情。
您是否有理由希望在集群中更均匀地分配工作?有什么事情没有完成吗?如果一个节点接受的工作多于它能够完成的工作,您可以考虑调低 threadCount
。
我将 quartz 配置为在集群中工作,我的简单 quartz 配置
org.quartz.scheduler.instanceName=作业调度程序
org.quartz.scheduler.instanceId=AUTO
org.quartz.threadPool.threadCount=5
org.quartz.jobStore.class=org.quartz.impl.jdbcjobstore.JobStoreTX
org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.StdJDBCDelegate
org.quartz.jobStore.useProperties=true
org.quartz.jobStore.misfireThreshold=10000
org.quartz.jobStore.tablePrefix=QRTZ_
org.quartz.jobStore.isClustered=true
org.quartz.jobStore.clusterCheckinInterval=20000
我有两个节点执行我的作业,但是当我每秒安排一些任务到 运行 时,我可以看到它只在节点 1 上执行。如果我在 node1 上暂停调度程序,任务将移动到 node2 并坚持下去,即使 node1 再次联机也是如此。我怎样才能使节点之间的执行均匀偏差?
谢谢
This 可能会有帮助。如果你的集群不是很忙,一个节点可能会完成所有的工作,因为每次它完成一项工作,它就会去寻找更多的工作,并找到下一个 运行 工作它刚刚完成。集群上的另一个节点将定期轮询工作,但不太可能找到任何需要做的事情。
您是否有理由希望在集群中更均匀地分配工作?有什么事情没有完成吗?如果一个节点接受的工作多于它能够完成的工作,您可以考虑调低 threadCount
。