定时任务在本地可以执行,在服务器上无法执行的问题

定时任务在本地可以执行,在服务器上无法执行的问题

背景和问题

项目采用springboot为框架,需要有一个定时任务的功能实现,使用springboot框架自带的工具实现,具体实现很简单。我希望每天凌晨1点执行任务,本地实现是没问题的,但是,部署到服务器上却出现比预定的时间晚了12个小时才执行。

查看原因并解决问题

首先,本地可以执行说明,定时任务代码层面没有问题,,放到服务器上晚12个小时才执行,首先考虑的是时区问题,查看服务器时区没有问题,说明服务器时间是正常的,查看nohup.out日志信息,发现,日志时间正好比系统时间晚12个小时,似乎有点思路了,这就说明java代码在服务器上运行的过程中,所获取的时间不是系统时间,这应该是java运行环境的问题,也就是jvm的问题,通过网上的资源,也在服务器上各种配置时区,最后发现还是不起作用,仔细一想,如果项目的运行环境可以设置,将其设置成与系统(本地)时间一致,就可以解决问题了,于是通过https://blog.csdn.net/qq_31075763/article/details/90479946该资源获得解决的办法了,就是在服务启动的时候,就设置时区,再部署到服务器上时,发现问题解决。

总结

  1. 项目应用系统运行时间和服务器时间不一致;
  2. 查看服务器时间是否正确;
  3. 服务器时间正确,就说明项目应用系统的获取时间有问题;
  4. 查看项目运行过程中的日志,看是否与系统时间一致(很有可能不一致);
  5. 因为服务器的时间和本地的时间是一致的,所以就需要更改应用运行环境的时间(时区)设置了;
  6. 在启动类加一个设置项目运行时的时区,这是一种方法,应该还有其他的方法,还没实践,不过这种方法在应用多的时候就需要重复操作了。。。。也算是不足,希望有更好方法的可以讨论,,,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值