时区切换对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 { @Override
public 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. Quartz定时任务和IIS程序池闲置超时时间冲突解决方案

    一.问题描述 Bs项目中用Quartz功能执行一个定时任务(每隔5分钟执行一个Job),正常情况,Quartz定时任务会5分钟执行一次,但IIS程序池闲置 超时默认为20分钟,造成的结果是:定时任务只 ...

  2. quartz定时任务框架的使用

    quartz定时任务时间设置 这些星号由左到右按顺序代表 :     *    *     *     *    *     *   *                                 ...

  3. Quartz定时任务使用小记(11月22日)

    骤然接触quartz,先从小处着手,why,what,how quartz定时任务: 为什么使用quartz定时任务,以及定时任务在实际应用场景下的特定需求. 1.用户方面的需要,为了提供更好的使用体 ...

  4. quartz定时任务时间配置

    quartz定时任务时间设置描述(2011-03-03 16:23:50)转载▼标签: quartz时间it 分类: 凌乱小记  这些星号由左到右按顺序代表 :     *    *     *    ...

  5. 对quartz定时任务的初步认识

    已经好久没有写技术博文了,今天就谈一谈我前两天自学的quartz定时任务吧,我对quartz定时任务的理解,就是可以设定一个时间,然后呢,在这个时间到的时候,去执行业务逻辑,这是我的简单理解,接下来看 ...

  6. Spring整合Quartz定时任务执行2次,Spring定时任务执行2次

    Spring整合Quartz定时任务执行2次,Spring定时任务执行2次 >>>>>>>>>>>>>>>&g ...

  7. Quartz 定时任务时间设置

    转自https://blog.csdn.net/zdx1515888659/article/details/79158169 quartz定时任务时间设置: 这些星号由左到右按顺序代表 : * * * ...

  8. quartz定时任务及时间设置

    quartz 定时任务时间设置1.这些星号由左到右按顺序代表 :     *    *     *     *    *     *   *                               ...

  9. quartz定时任务框架的使用以及原理

    quartz定时任务时间设置 这些星号由左到右按顺序代表 :     *    *     *     *    *     *   *                                 ...

随机推荐

  1. java的编译过程

    用记事本编写两个java文件 第一个Employee.java import java.io.*; public class Employee{ String name; int age; Strin ...

  2. [BZOJ4913][SDOI2017]遗忘的集合

    题解: 首先先弄出$f(x)$的生成函数$$f(x)=\prod_{i=1}^{n} {{(\frac{1}{1-x^i})}}^{a[i]}$$因为$f(x)$已知,我们考虑利用这个式子取推出$a[ ...

  3. <WebGIS之OpenLayers全面解析>示例程序运行问题

    运行<WebGIS之OpenLayers全面解析>中的示例程序时,无法加载*.json文件. 查看到提示如下错误:GET http://localhost:11232/demos/data ...

  4. python基础篇_005_迭代器和生成器

    Python迭代器和生成器 1.迭代器 迭代:可以将某个数据集内的数据“一个挨着一个的取出来” for i in range(1, 10, 2): # in 后面的对象必须是一个可迭代的 print( ...

  5. Round#534 div.2-C Grid game

    http://codeforces.com/contest/1104/problem/C 好厉害的题~ 只要把竖着的放在第一第二行,横着的放在第三/第四行就行. 哦吼,大半夜脑子迷糊地看英文的脑筋急转 ...

  6. 下面为初学者分享一下SQL 数据库学习资料

    一.基础 1.说明:创建数据库CREATE DATABASE database-name2.说明:删除数据库drop database dbname3.说明:备份sql server--- 创建 备份 ...

  7. Beta(2/7)

    鐵鍋燉腯鱻 项目:小鱼记账 团队成员 项目燃尽图 冲刺情况描述 站立式会议照片 各成员情况 团队成员 学号 姓名 git地址 博客地址 031602240 许郁杨 (组长) https://githu ...

  8. EF Working with Transactions

    原文:https://msdn.microsoft.com/en-us/data/dn456843.aspx Prior to EF6 Entity Framework insisted on ope ...

  9. 日期求星期(java)-蓝桥杯

    日期求星期问题(java)-蓝桥杯 1:基姆拉尔森计算公式(计算星期) 公式: int week = (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7; 此处y,m,d指代年 ...

  10. Python基础之数据基本运算

    一.核心数据类型(五种): 在Python中变量没有数据类型,但关联的对象有数据类型,可通过type函数查看数据类型 1.整型(Int): 包含正整数,负整数和零 二进制:逢二进一,书写格式为 a = ...