【timezone】服务器时区、JVM 时区,应用时间显示问题处理

一、问题背景

服务部署上环境后,服务日志、服务即时信息相关时间都比背景时间慢了8个小时,显然是使用的UTC时间,不符合时间使用要求。



二、问题排查


查看服务器时区、时间

# timedatectl

可以看出,服务器的时间显示准确,UTC、CST 都没问题,关键在于 Time zone 为 n/a

jvm默认会使用系统的时区,系统没有设置具体时区,就使用UTC


java vm取的默认timezone的算法:


1)如有环境变量 TZ设置,则用TZ中设置的时区

2)在 /etc/sysconfig/clock文件中找 "ZONE"的值

3)如何2)都没,就用/etc/localtime 和 /usr/share/zoneinfo 下的时区文件进行匹配,如找到匹配的,就返回对应的路径和文件名。




三、解决办法


将所有服务器时区设置为 Asia/Shanghai 

# timedatectl  set-timezone  Asia/Shanghai


重启所有应用



四、参考


Java TimeZone 和 Linux TimeZone问题

https://my.oschina.net/huawu/blog/4646


java分析工具 jinfo的使用

https://www.jianshu.com/p/ece32dacce64


如何正确设置JVM TimeZone(How to set a JVM TimeZone Properly)

https://www.it1352.com/956218.html


如何设置 JVM 时区

https://www.sohu.com/a/363106030_355142

https://www.baeldung.com/java-jvm-time-zone


Default timezone is incorrectly set occasionally on Linux

http://bugs.sun.com/view_bug.do?bug_id=6456628


如何设置Linux时间

http://www.hypexr.org/linux_date_time_help.php


解决java default Timezone 问题的方法

http://www.minaret.biz/tips/timezone.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。