【问题标题】:JVM not taking Daylight Time changes in the serverJVM 未在服务器中进行夏令时更改
【发布时间】:2020-06-08 13:51:06
【问题描述】:

我们有 4 台服务器在生产中,它们的所有时间都使用 NTP(网络时间协议)服务器进行同步,所有这些服务器都在新西兰,作为 Daylight 的一部分,服务器被提前到 1 小时,即 + 1200 到 +1300,但似乎所有使用 JVM 的应用程序都达到了 +1200。

所以我写了一段代码来显示时间,并且确认 JVM 没有采用夏令时。有关此行为的任何建议或解释。之间我不想建议重新启动服务器作为其生产框。

我们使用的是 ibmJDK 而不是 Oracle JDK。

【问题讨论】:

  • 你试过Timezone Updater Tool吗?
  • nop 但是,正如我所说,它们是生产环境,但首先为什么 JVM 不会占用 systemTime?,在我们使用 ibmJDK 而不是 Oracle JDK 之间,所以我不是确定那个 Oracle Timezone Updater 工具。
  • 你的一段代码来显示时间,你是在正在运行的生产服务器中运行它还是作为一个单独的 Java 程序运行它?后者似乎表明问题出在这些盒子上的所有 JVM 上,而前者没有。
  • 好吧,我们在那个盒子里只有一个 JRE,我只是用命令行运行了那个片段
  • JVM 运行在什么操作系统上,服务器的时区设置是什么?如果这是 Windows,请给我们TZUtil /g 的输出。如果这是 Linux,请给我们cat /etc/timezone 的输出。谢谢。

标签: java linux production-environment dst ibm-jdk


【解决方案1】:

您所指的特定夏令时规则最近是否发生了变化或已经存在多年?

Java 使用自己的内部时区数据库,而不是系统的。

检查服务器上的 java 时区数据库是否是最新的。 如果没有,那么您可能需要考虑更新 JDK - 特别是如果您运行的是旧版本。

您可以在此处找到更多详细信息:https://www.oracle.com/technetwork/java/javase/timezones-137583.html

此表还可以帮助您找到特定版本的时区数据库(但我不确定 IBM JDK 特定的东西):https://www.oracle.com/technetwork/java/javase/tzdata-versions-138805.html

【讨论】:

    猜你喜欢
    • 2018-06-05
    • 2015-11-14
    • 2022-01-03
    • 2012-06-08
    • 2018-03-06
    • 2011-10-10
    • 1970-01-01
    • 1970-01-01
    • 2018-08-13
    相关资源
    最近更新 更多