java - org.quartz.jobStore.clusterCheckinInterval 的推荐值

标签 java spring quartz-scheduler

我们在集群环境中使用 quartz 调度程序(集群中的两个节点,指向单个 Oracle 数据库)。目前我们有两个作业,几乎每一个小时运行一次。

我们有一个单独的数据库架构用于 quartz 作业。我们注意到, quartz 每 15 秒检查一次数据库(clusterCheckinInterval 的默认值)。

我们不喜欢这样,希望减少它的频率。我们的想法是给出 1 分钟的频率,但大多数示例配置将 clusterCheckinInterval 指定为 20000

有人可以为 clusterCheckinInterval 推荐一个合适的值吗?

来自 Quartz 文档:

org.quartz.jobStore.clusterCheckinInterval

Set the frequency (in milliseconds) at which this instance "checks-in"* with the other instances of the cluster. Affects the quickness of detecting failed instances.

最佳答案

在 Quartz 集群中,clusterCheckinInterval 告诉您集群对故障转移的响应程度(考虑 Quartz 作业)。间隔越小,您的应用程序响应速度越快。实际上这个值被集群节点用来检查是否有可恢复的作业在损坏的节点上运行。如果是,Quartz 会尝试重新运行它们。

一般来说,默认值就足够了,但您必须考虑作业的频率以及错过作业运行可能造成的影响。

如果您有许多必须每秒运行的作业,则必须将间隔设置为1000(以毫秒为单位)。

如果您有每秒运行一次的作业,但始终运行它们并不重要,那么 5-15 秒就足够了(取决于系统的容错能力)。

如果您有每天运行几次的长达一小时的作业,您甚至可以将间隔提高到 60 秒。

我的意见是我不会将每分钟 20-30 个数据库请求视为“负载”,因此我会将其设置为 2 或 3 秒 (20003000(以毫秒为单位)。

关于java - org.quartz.jobStore.clusterCheckinInterval 的推荐值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14953297/

相关文章:

java - 如何使用 Jersey 将带注释的对象列表从客户端传递到服务器

java - 反序列化 JMS 消息中的对象

java - 端点 API : way to run long tasks

spring - 两个EntityManagerFactories,TransactionRequiredException:没有事务在进行中

java - 两个 Quartz-Worker 执行相同的作业两次

java - 如何让 Quartz 作业在多 ApplicationContext 环境中运行?

java - 为什么Java的System.getSystemProperty ("os.name")错误?

spring - 无法让 Elasticsearch 插件与 Grails 3 一起使用

java - Spring MVC 和 UTF-8 : How to work with Swedish special characters?

grails - Grails quartz 作业永不执行