Java项目时间与服务器时间不同步的问题解决

  • Post author:
  • Post category:java




问题描述

  1. 直接以Jar包在服务器运行的SpringBoot项目获取的时间戳比当前时间慢12小时1, 并且系统时间并没有问题
  2. 以docker镜像运行的SpringBoot项目获取的时间戳比当前时间慢8小时, 此问题出现在将问题1解决之后的服务器上



问题1



查看数据库时区与数据库连接配置

使用sql查询数据库当前时间

select now();

发现就是当前时间, 没有任何问题

然后查看数据库连接属性 ?useUnicode=true&characterEncoding=UTF-8**&serverTimezone=UTC**有时区设置



查看服务器系统时间

使用

date

命令, 看到时间: 2019年 10月 11日 星期五 10:12:22 CST

使用

date -R

看到时间及时区: Fri, 11 Oct 2019 10:14:22 +0800



查看服务器硬件时间

使用

sudo hwclock --show

查看服务器硬件时间: 2019-10-11 10:16:36.554545+0800



查看项目日志, 发现项目日志时间也是错的, 比当前时间慢了12小时



通过网上查阅资料, 定位到是JVM问题

首先找到的方法就是在启动jar包的命令中添加时区参数


java -jar -Duser.timezone=GMT+08 xxx.jar


但是这是一个临时解决方案, 每次启动都需要添加时区参数, 会很麻烦, 所以我就找了下面这种一劳永逸的方法。

有一点需要注意: 实际执行的时候, 这几个命令是需要使用管理员权限来执行的, 在前面添加 sudo 就可以

1. 编辑时间配置文件


sudo vim /etc/sysconfig/clock


ZONE=“Asia/Shanghai”

UTC=false #设置为false,硬件时钟不于utc时间一致

ARC=false

2. linux的时区设置为上海时区


sudo ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime


3. 对准时间


sudo ntpdate cn.pool.ntp.org


4. 设置硬件时间和系统时间一致并校准


sudo /sbin/hwclock --systohc


然后正常重启项目就可以啦



问题2

因为在本地测试, 发现插入数据库的数据时间戳没有问题, 由于有了问题1的排查, 直接去看了项目日志, 发现时间确实错的, 但是情况又不一样, 因为这个项目与出现问题1的项目是在同一台服务器的, 只不过这个服务是运行在docker镜像中的

其他网上说的同步宿主机时间的方式我都试过, 对于我这种情况并不适用

最后采用网友建议, 在docker启动时添加参数指定一下时区就可以了 -d -e TZ=“Asia/Shanghai” -v /etc/localtime:/etc/localtime:ro

如:

docker run -d -e TZ="Asia/Shanghai" -v /etc/localtime:/etc/localtime:ro -e PARAMS="spring.profiles.active=test" --name commonSecurity -p 9000:8080 -v /home/dataexa/insight-microservice/commonSecurity:/usr/local/tomcat/webapps/ROOT -d tomcat

第一步: 使用

docker ps

查看运行的docker镜像

第二步: 关闭或者删除镜像

关闭镜像

docker stop 镜像名称或镜像id


删除镜像

docker rm -f 镜像名称


第三步: 使用名称发布镜像, 在项目war包解压后的WEB-INF下的classes目录下执行项目启动命令


docker run -d -e TZ="Asia/Shanghai" -v /etc/localtime:/etc/localtime:ro -e PARAMS="spring.profiles.active=test" --name commonSecurity -p 9000:8080 -v /home/dataexa/insight-microservice/commonSecurity:/usr/local/tomcat/webapps/ROOT -d tomcat

参考文章: https://blog.csdn.net/fullbug/article/details/78619701



版权声明:本文为baidu_38404101原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。