【问题标题】:Is the Java version vulnerable to leap seconds? [closed]Java 版本是否容易受到闰秒的影响? [关闭]
【发布时间】:2015-07-07 14:33:18
【问题描述】:

我想知道Java build 1.7.0_51-b13 版本是否易受闰秒影响?

我有一个运行 Tomcat 的服务器集群。自 7 月 1 日以来,我们的 CPU 使用率很高。我们试图阻止 ntp 和 date -s "date" 是徒劳的。

Redhat 内核和 tzdata 软件包自 6 月起已修补。

有用的链接:

【问题讨论】:

  • “易受闰秒影响”是什么意思?最有可能的答案是“也许一秒钟”。或者您说的是时间准确性?
  • 在这种情况下易受攻击意味着 ==> CPU 过载使用和系统不稳定
  • 时间计算中额外的一秒会使您的 CPU 过载的可能性几乎为零。发生某种崩溃或异常的可能性微乎其微,但它不太可能不值得担心。
  • @RobertHarvey 软件可以在时钟增加一秒时做一些奇怪的事情;某些软件无法正确处理闰秒也就不足为奇了。
  • @Jesper:不幸的是,问题的答案是“Java JDK 中的闰秒错误是否会导致我们巨大的 CPU 使用问题?”是“我们不知道”。

标签: java linux tomcat7


【解决方案1】:

这取决于实施。您的 JVM 不太可能支持闰秒。

来自java.util.Date 文档:

虽然 Date 类旨在反映协调的普遍性 时间(UTC),它可能不完全这样做,这取决于主机 Java虚拟机环境。几乎所有现代运营 系统假设在所有情况下 1 天 = 24 × 60 × 60 = 86400 秒。 然而,在 UTC 中,大约每年或每两年会有一次额外的 第二,称为“闰秒”。闰秒总是添加为 一天的最后一秒,并且总是在 12 月 31 日或 6 月 30 日。对于 例如,1995 年的最后一分钟是 61 秒,谢谢 到一个额外的闰秒。大多数计算机时钟不够准确 能够反映闰秒的区别。

(出于兴趣,并且根本没有与 Java 连接,Google NTP 服务器会在有闰秒的一天中延长秒数,因此额外的时间在当天的秒数上线性分配。)

【讨论】:

  • Google stretch the seconds in a day that has a leap second, so the extra time is allocated linearly across the seconds in that day -- 真的吗?我非常怀疑这一点。地球上的每一个实施都会在午夜前的一分钟内增加一秒。
  • google 在他们的 NTP 基础设施中涂抹了闰秒,这与 java 没有任何关系。
  • @MarcB 确实:这就是我想说的。
  • 这对于任何期望单个秒数作为准确时间参考的应用程序来说是非常不方便的。
  • 是的。这就是生活。如果您需要准确的计时,那么您最好编写自己的东西或使用为此目的设计的严格库。 (我在攻读博士学位期间从事过此类工作。)
猜你喜欢
  • 1970-01-01
  • 2015-04-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多