时区切换对Quartz的cron表达式有影响,切换的1小时内停止触发定时任务,导致sla没有定时清空内存计数,误发限流。

美国夏令时PST切换到冬令时PDT,会有时间跳变。不带时区跳变的,会出现时间重叠或不连续

问题复现

mac本机模拟,把时区换成美国的,然后把时间调到11月5号01:59

import java.text.ParseException;
import java.util.Date;import org.quartz.CronTrigger;
import org.quartz.Job;
import org.quartz.JobDetail;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.impl.StdSchedulerFactory;public class QuartzTester {public static void main(String[] args) throws ParseException, SchedulerException,InterruptedException {JobDetail jobDetail = new JobDetail("jobDetail", "jobDetail-1", QuartzDemo.class);CronTrigger trigger = new CronTrigger();trigger.setName("triggerTest");trigger.setCronExpression("0/5 * * * * ?");Scheduler scheduler = new StdSchedulerFactory().getScheduler();scheduler.start();scheduler.scheduleJob(jobDetail, trigger);while (true) {long current = System.currentTimeMillis();System.out.println("normal time now=" + current + ", Date=" + new Date());Thread.sleep(5000);}}public static class QuartzDemo implements Job {@Overridepublic void execute(JobExecutionContext context) throws JobExecutionException {long current = System.currentTimeMillis();System.out.println("Job now=" + current + ", Date=" + new Date());}}}

1、把本地时间调到11-05 00:59

normal time now=1509857964930, Date=Sun Nov 05 00:59:24 EDT 2017
Job now=1509857965025, Date=Sun Nov 05 00:59:25 EDT 2017
normal time now=1509857969932, Date=Sun Nov 05 00:59:29 EDT 2017
Job now=1509857970012, Date=Sun Nov 05 00:59:30 EDT 2017
normal time now=1509857974935, Date=Sun Nov 05 00:59:34 EDT 2017
Job now=1509857975017, Date=Sun Nov 05 00:59:35 EDT 2017
normal time now=1509857979940, Date=Sun Nov 05 00:59:39 EDT 2017
Job now=1509857980020, Date=Sun Nov 05 00:59:40 EDT 2017
normal time now=1509857984944, Date=Sun Nov 05 00:59:44 EDT 2017
Job now=1509857985021, Date=Sun Nov 05 00:59:45 EDT 2017
normal time now=1509857989949, Date=Sun Nov 05 00:59:49 EDT 2017
Job now=1509857990013, Date=Sun Nov 05 00:59:50 EDT 2017
normal time now=1509857994952, Date=Sun Nov 05 00:59:54 EDT 2017
Job now=1509857995011, Date=Sun Nov 05 00:59:55 EDT 2017
normal time now=1509857999954, Date=Sun Nov 05 00:59:59 EDT 2017
normal time now=1509858004959, Date=Sun Nov 05 01:00:04 EDT 2017
normal time now=1509858009959, Date=Sun Nov 05 01:00:09 EDT 2017
normal time now=1509858014962, Date=Sun Nov 05 01:00:14 EDT 2017
normal time now=1509858019966, Date=Sun Nov 05 01:00:19 EDT 2017
normal time now=1509858024970, Date=Sun Nov 05 01:00:24 EDT 2017

从Nov 05 01:00开始,quartz的定时任务就停了

2、把本地时间调到11-05 01:10

信息: Quartz scheduler version: 1.5.2
Nov 05, 2017 1:10:07 AM org.quartz.core.QuartzScheduler start
信息: Scheduler DefaultQuartzScheduler$NON_CLUSTERED started.
normal time now=1509858607008, Date=Sun Nov 05 01:10:07 EDT 2017
normal time now=1509858612016, Date=Sun Nov 05 01:10:12 EDT 2017
normal time now=1509858617018, Date=Sun Nov 05 01:10:17 EDT 2017
normal time now=1509858622022, Date=Sun Nov 05 01:10:22 EDT 2017
normal time now=1509858627022, Date=Sun Nov 05 01:10:27 EDT 2017
normal time now=1509858632026, Date=Sun Nov 05 01:10:32 EDT 2017
normal time now=1509858637030, Date=Sun Nov 05 01:10:37 EDT 2017
normal time now=1509858642030, Date=Sun Nov 05 01:10:42 EDT 2017

quartz的定时任务一直没有触发

3、把本地时间调到11-05 01:59

normal time now=1509861583050, Date=Sun Nov 05 01:59:43 EDT 2017
normal time now=1509861588058, Date=Sun Nov 05 01:59:48 EDT 2017
normal time now=1509861593061, Date=Sun Nov 05 01:59:53 EDT 2017
normal time now=1509861598066, Date=Sun Nov 05 01:59:58 EDT 2017
normal time now=1509861603070, Date=Sun Nov 05 01:00:03 EST 2017
normal time now=1509861608072, Date=Sun Nov 05 01:00:08 EST 2017
normal time now=1509861613076, Date=Sun Nov 05 01:00:13 EST 2017
normal time now=1509861618080, Date=Sun Nov 05 01:00:18 EST 2017
normal time now=1509861623081, Date=Sun Nov 05 01:00:23 EST 2017
normal time now=1509865173966, Date=Sun Nov 05 01:59:33 EST 2017 //这里调整了系统时间
normal time now=1509865178970, Date=Sun Nov 05 01:59:38 EST 2017
normal time now=1509865183975, Date=Sun Nov 05 01:59:43 EST 2017
Job now=1509865185057, Date=Sun Nov 05 01:59:45 EST 2017
normal time now=1509865188977, Date=Sun Nov 05 01:59:48 EST 2017
Job now=1509865190012, Date=Sun Nov 05 01:59:50 EST 2017
normal time now=1509865193980, Date=Sun Nov 05 01:59:53 EST 2017
Job now=1509865195015, Date=Sun Nov 05 01:59:55 EST 2017
normal time now=1509865198985, Date=Sun Nov 05 01:59:58 EST 2017
Job now=1509865200022, Date=Sun Nov 05 02:00:00 EST 2017
normal time now=1509865203990, Date=Sun Nov 05 02:00:03 EST 2017
Job now=1509865205011, Date=Sun Nov 05 02:00:05 EST 2017
normal time now=1509865208995, Date=Sun Nov 05 02:00:08 EST 2017
Job now=1509865210016, Date=Sun Nov 05 02:00:10 EST 2017
normal time now=1509865214000, Date=Sun Nov 05 02:00:14 EST 2017
Job now=1509865215019, Date=Sun Nov 05 02:00:15 EST 2017

从夏令时的2点跳到冬令时的1点,quartz的定时任务没有开始执行,直到冬令时的2点,quartz的定时任务才开始执行。

结论

从夏令时的1点开始,到冬令时的2点,quartz都没触发定时任务,所以期间重启服务器也没用。

受时区影响的影响的:
Date()的分钟级加减
Calendar
mysql
把Date时间转成字符串,再转回Date
quartz的cron表达式

本机时区设置

时区切换导致quartz定时任务没有触发问题相关推荐

  1. springboot、quartz定时任务未触发

    spring boot.quartz定时任务不触发 定时每隔5分钟触发一次 但是定时任务没有触发,不知道为什么? 若您知道原因,请留言谢谢 解决办法 针对多模块,若要一个web模块启动定时器模块,那么 ...

  2. element-ui Pagination 分页频繁切换导致重复触发api问题

    Pagination频繁切换导致重复触发api问题 问题复现 问题原因 解决 问题复现 当分页数据足够多的情况下,将分页接入api(api返回值需要重新赋值分页参数),频繁触发分页的下一页. 问题原因 ...

  3. 大数据互联网架构阶段 QuartZ定时任务+RabbitMQ消息队列

    QuartZ定时任务+RabbitMQ消息队列 一 .QuartZ定时任务解决订单系统遗留问题 情景分析: 在电商项目中 , 订单生成后 , 数据库商品数量-1 , 但是用户迟迟不进行支付操作 , 这 ...

  4. 详细总结:分布式, Nginx Linux Redis 微服务 Dubbo框架 Quartz定时任务

    目录 1.1 概念 2.1分布式概念 2.2分布式项目拆分 2.3分布式项目总结 2.3 分布式事务 3.1 Nginx配置文件介绍 3.2 实现负载均衡(Tomcat高可用) 3.3 常见面试题 4 ...

  5. 【Java Web】Quartz定时任务执行两次的解决方法

    问题描述 如果选择定时任务,那么Quartz是一个不错的框架,但是在使用的过程中,莫名发现Quartz定时任务在指定时间被执行了两次. 问题原因 在Tomcat的配置文件conf/server.xml ...

  6. Quartz 定时任务(Scheduler)的 3 种实现方式

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. PS:第 3 种最简单. 一.引入 jar . <!-- quartz 定时任务调度 --&g ...

  7. vue 父组件使用keep-alive和infinite-scroll导致在子组件触发父组件的infinite-scroll方法...

    (vue.js)vue 父组件使用keep-alive和infinite-scroll导致在子组件触发父组件的infinite-scroll方法"问题疑问,本网通过在网上对" (v ...

  8. 记一次quartz定时任务不执行排雷

    过程 项目中需求统计数据,涉及大屏展示,展示的数据很复杂,所以采取了晚上把数据汇总出来存到redis缓存,供白天查询的方式. 用到了quartz定时任务,写好sql.逻辑等测试没问题,就愉快的部署到了 ...

  9. Quartz定时任务-@DisallowConcurrentExecution注解

    Quartz定时任务默认都是并发执行的,不会等待上一次任务执行完毕,只要间隔时间到就会执行, 如果定时任执行太长,会长时间占用资源,导致其它任务堵塞. 在Spring中这时需要设置concurrent ...

最新文章

  1. Esper应用以及原理解析
  2. 在Myeclipse中没有部署jeesite项目,但是每次运行其他项目时,还是会加载jeesite项目...
  3. 再次强调事件绑定中this的坑
  4. QT-子线程或自定义类操作访问主界面UI控件的几种方法
  5. 大数据之Spark简介及RDD说明
  6. Android官方开发文档Training系列课程中文版:手势处理之ViewGroup的事件管理
  7. SpringBoot配置Profile以及配置文件的加载位置
  8. java 无符号整数_如何在java 8中使用无符号整数?
  9. canvas操作图片,进行面板画图,旋转等
  10. 关于大规模录入的数据流转
  11. ddwrt开启USB硬盘
  12. hadoop配置文件还原_hadoop通过Configuration对象自定义配置文件
  13. bootstrap 获取表格修改的结果_bootstrap table getData获取表格数据的方法
  14. windows 下安装securecrt 绿色版
  15. 无源晶振有方向吗?无源贴片晶振贴反会怎样?
  16. Jetson Nano 安装deepStream
  17. 程序集版本号,文件版本号及发布版本号管理
  18. 基于Acgis从全球.nc数据中提取中国地图并计算地区CO2值
  19. SAP 财务校验(基本内容及常用财务校验配置涉及退出提供源代码)
  20. SCI论文发表的流程是怎样的?

热门文章

  1. 【Kubernetes】两篇文章 搞懂 K8s 的 fannel 网络原理
  2. 替换 RHEL5的yum源为CentOS5源,亲测线上系统可用
  3. CODING 最佳实践:快课网研发效能提升之路
  4. 深度有趣 | 27 服饰关键点定位
  5. YEX黄建:脱离比特币谈区块链,要么真傻,要么装疯卖傻丨区块链十人谈
  6. 如何让网页不受电信114劫持
  7. 团队项目个人进展——Day10
  8. BZOJ 1194: [HNOI2006]潘多拉的盒子 [DP DFA]
  9. html input不可编辑
  10. hdu 2067 兔子板