String @Scheduled 比预计时间早很多调起任务,大家有遇到过么

2023-01-15 10:25:02 +08:00
 cowcomic

我设置了一个 schedule

@Scheduled(cron = "0 0 23 * * ?")

理论上应该晚上 11 点调起,哪怕有差异也应该控制在 1 秒左右

但我这个任务没天晚上 8 ,9 ,10 点就调起了,而且不是固定时间,每天都不一样

log 如下:

2023-01-14 21:04:12,582 INFO c.e.t.b.d.c.DAGController [scheduling-1]
and different trigged time every day

服务是跑在 k8s 上的

检查了 pod 的 date 是正常的,服务器的的 date 是正常的

Spring version : 5.1.6.RELEASE

求助

2953 次点击
所在节点    Java
14 条回复
iamv2er
2023-01-15 11:17:56 +08:00
重启一下
TUNGH
2023-01-15 12:01:25 +08:00
是不是定时任务太多,处理不过来导致延迟了?
feelinglucky
2023-01-15 12:55:48 +08:00
检查下时区
win301
2023-01-15 15:09:41 +08:00
@Scheduled 注解,默认就使用一个线程,就是说如果你有多个 @Scheduled 任务,那么都只能使用一个线程来运行程序,如果某个线程很占用时间,那么就会出现你说的现象了,解决办法就是初始化 ThreadPoolTaskExecutor ,然后通过 @Scheduled 注解的定时任务就可以使用到多线程了
hccsoul
2023-01-15 16:27:35 +08:00
GMT+8
ChovyChu
2023-01-15 16:33:10 +08:00
@win301 大概率是这个问题,之前也遇到过
cowcomic
2023-01-15 17:21:19 +08:00
@TUNGH
@feelinglucky
@ChovyChu
Schedule 用的是多线程,而且目前设置定时的只有三个,早上 8 点一个,晚上 22 点一个,晚上 23 点一个,这三个任务从日志看执行都很快完成了,而且是从服务启动开始就没一个准的,都提前了,应该不是任务积压的问题
cowcomic
2023-01-15 17:22:14 +08:00
@iamv2er 重启过,问题依旧,包括把 pod 删了重新冲 habor 拉个新的镜像都没用
cowcomic
2023-01-15 17:23:02 +08:00
@feelinglucky
@hccsoul
服务器和容器都是正确的时间,是 CST 时间,而且提前的时间也没有规律,不是每次都提前一个整点,而且每次时间都不一样,目前看还没超过两小时,但没啥规律忽短忽长的,也都不是整数
Terminator0826
2023-01-15 17:48:45 +08:00
可以多写几个 cron 试试,然后只设一个 schedule ,再不行换个依赖版本看看是不是 spring 的 bug
zhenjiachen
2023-01-15 20:44:54 +08:00
给 jvm 添加一个 timezone 的参数试试
zsdroid
2023-01-15 21:21:03 +08:00
我也遇到过设置了 10 点,结果 9 点 58 分就执行了
cp19890714
2023-01-15 21:32:49 +08:00
如果还没有找到原因,那就用笨方法:控制变量,一个个尝试。
列出所有可能导致该问题的原因, 每次改变一个,观察执行结果。
cowcomic
2023-01-15 21:57:48 +08:00
@Terminator0826 spring issue 上的回复是 5.1.x 不维护了,回头换个高版本的试试
@zhenjiachen 好,回头试一下
@cp19890714 嗯嗯,之前就是没头绪,看了回复有了一些可以试的了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/909012

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX