gpt4 book ai didi

java - 所有 Quartz Scheduler 线程都进入 TIMED_WAITING?

转载 作者:太空宇宙 更新时间:2023-11-04 11:23:36 25 4
gpt4 key购买 nike

我有 Spring 和 Quartz 作业(集群)定期运行(1 分钟)。当服务器启动时,一切似乎都很好,但一段时间后不会触发作业。重新启动服务器使作业运行,但一段时间后问题再次出现。

我怀疑这是一个线程耗尽问题,从线程转储中我注意到我的所有 Quartz 线程 (10) 都处于 TIMED_WAITING 状态。

配置:

org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount = 10
org.quartz.threadPool.threadPriority = 5

线程转储:

quartzScheduler_Worker-10 - priority:10 - threadId:0x00007f8ae534d800 - nativeId:0x13c78 - state:TIMED_WAITING stackTrace:
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x000000066cd73220> (a java.lang.Object)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:568)
- locked <0x000000066cd73220> (a java.lang.Object)

使用quartz 2.2.1(我怀疑这是否可能是版本特定问题)

我从日志中验证不存在数据库连接问题。

请帮助诊断问题。我是否有可能耗尽系统资源(线程数)?但我的作业是同步的,仅当其所有子线程完成其任务时才存在,并且我也有此注释 @DisallowConcurrentExecution

最佳答案

根本原因是我们在 quartz 工作中发生了太多火灾。我们每 1 分钟就会启动一次 quartz ,而工作并不能真正在 1 分钟内完成,因此当未命中时, quartz 会首先尝试执行它们,因此工作会堆积起来。

在此过程中,需要执行未命中更新操作,该操作需要花费大量时间,导致 quartz 卡住。从线程转储中可以明显看出这一点,其中我们所有的 quartz 线程都处于 TIMED_WAITING 状态,如下所示

quartzScheduler_Worker-10 - priority:10 - threadId:0x00007f8ae534d800 - nativeId:0x13c78 - state:TIMED_WAITING
stackTrace:
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x000000066cd73220> (a java.lang.Object)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:568)
- locked <0x000000066cd73220> (a java.lang.Object)

引用:https://jira.terracotta.org/jira/si/jira.issueviews:issue-html/QTZ-357/QTZ-357.html

对于我们的用例,未命中的火灾可以忽略,并且可以在下次运行时选择。因此我将 Misfire 指令更改为忽略,如下所示

<property name="misfireInstructionName" value="MISFIRE_INSTRUCTION_IGNORE_MISFIRE_POLICY" />

关于java - 所有 Quartz Scheduler 线程都进入 TIMED_WAITING?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44626679/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com