闰秒危机:雷声大雨点小

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

闰秒危机:雷声大雨点小
作者:暂无
来源:《计算机世界》 2012年第27期
本报记者甘露
一秒钟在普通生活中几乎影响不到什么,然而在程序机械的IT 领域,闰秒就可以实现
“秒杀”。

由于地球自转速度变慢,导致世界时(民用时)每年比原子时(世界的科学计时器)慢大
约半秒钟。

为保持与地球自转时间一致,1972年英国格林尼治天文台引入闰秒概念,即在世界
时与原子时差异累积至一秒时,加上或减去一秒。

在今年1 月国际地球自转服务组织和国际地
球时间局宣布,全世界在英国格林尼治时间6 月30 日23:59:59 将增加一秒,记为23:59:60,也就是北京时间7 月1 日的7:59:60。

就这一秒,弄得整个世界很沸腾。

早在2009 年新年前夜,全球有数千部微软Zune 播放器因为闰秒问题出现时间显示混乱,情况与2000年“千年虫”问题类似。

一秒钟在普通生活中几乎影响不到什么,然而在程序机械的IT 领域,闰秒就可以实现“秒杀”。

一秒钟的影响
博客媒体Gawker 证实,该公司遭遇了与闰秒有关的故障。

Gawker首席技术官汤姆·普朗
科特说,“我们的网站并未完全下线,但在大约30 分钟的时间里,服务变得非常不稳定。


社交新闻网站Reddit 通过Twitter 也发表声明称,“闰秒造成利用Java 开发的开放源
代码数据库Apache Cassandra 出现故障,我们在尽力解决与此相关的故障。


据新闻聚合网站BuzzFeed 报道,StumbleUpon、Yelp、FourSquare 和LinkedIn 也在闰秒发生时遭遇到故障。

Mozilla 基金会表示,闰秒是导致Hadoop 遭遇故障的罪魁祸首。

此外,闰秒还导致部分Linux服务器产生高CPU 使用率。

因为Java 和MySQL 试图通过CPU 硬件晶振的数据获得当前精确的时间,由于闰秒的关系导致较高的CPU 占用。

同时,
Linux kernel 2.6.29 之前版本存在bug,在进行闰秒调整时很可能会引起系统时钟服务ntpd 进程死锁。

据Opera Software 系统管理员Marco Marongiu 称,在今年闰秒即将来临之前,
至少有一部分Opera 服务器在收到时钟服务时就已经开始被锁定。

这么麻烦的话,为什么不取消闰秒呢?今年一月在日内瓦召开的国际电信联盟会议上,是
否取消闰秒这一议题引发了全球科学家的大讨论。

美国认为应该取消闰秒,原因是不定时的调
整时间,会导致一些对时间精度依赖较高的电子系统产生混乱。

美国海军天文台的主要计时员
杰夫·切斯特说:“取消闰秒可以消除计算机网络灾难性故障的一个潜在来源。


如果闰秒被取消,天文学的时间定义将由原子时决定,对我们现在是没什么影响,但每天
相差千分之几秒,数千年后,我们日常所熟悉的计时将被打乱,原本中午的情景却展现在早晨,所以以英国为代表的国家反对取消闰秒。

英国国家物理实验室表示,取消闰秒意味着失去与太
阳的关联,但技术的问题是可以解决的。

我国也是反对者之一,中国科学院国家授时中心时频基准实验室主任董绍武表示,“中国
的相关机构已经适应了闰秒的存在,即便是北斗导航系统,都已经做了调整。

如果取消闰秒,
对于中国来说成本损失估计达到几百亿元。


闰秒的解决之策
在今年3 月份,黑客约翰·斯图尔茨为Linux 核心中的高精度定时器故障提供了一个补丁。

据了解,高精度定时器是在一个应用“睡眠”时被使用的子系统,它会等待操作系统完成某些
其他的任务。

例如,当闰秒发生时,这些高精度定时器的提前操作会同时唤醒无数睡眠中的应用,导致服务器的CPU 超载。

这一补丁就是想缓解这个问题。

此外,Linux 等系统可使用网络时间协议来与全球原子钟
进行对接,从而对时间做出调整。

对于闰秒引发的动荡,国内的IT 领域似乎并未产生太多的波澜。

腾讯网产品专家郑坚在
接受本报记者采访时表示,“目前没有听说国内哪家网站有受到影响,腾讯没有发生任何故障,因为腾讯早在两周前就集合技术人员对闰秒的问题展开应对措施,虽然在技术层面上能解决,
但却增加了企业运营的成本。


谷歌也在博客中称:“我们采取“leap smear”解决方案,通过调整内部的网络时间协议(NTP) 服务器,达到闰秒发生时增加 1 秒钟,所以我们没有受到影响。


因此,如何优化数据设计,是解决闰秒问题的关键所在。

综合业内人士的观点来看,首先,时间数据的等价类划分应该更加细致,除了一个有效时间和一个无效时间,还应该有闰年、闰月、闰秒数据。

因为时间是广泛相关数据,纵使被测软件可以正确处理,但与其相关的其他软
件(操作系统、数据库、Java虚拟机等)也有可能会出问题(例如Linux 内核的那个Bug)。

其次,时间的广义边界值测试应该扩大。

大部分测试者都知道测试输入框的显性边界值,
但是很少有人去测试时间这个隐形边界值。

所以,测试不单单是常规的时间数据,更要挖掘潜
在知识,从设计和分析等方面全面深入。

虽然我们不知道下一次闰秒将在何时发生,也不知国际组织对闰秒的存在会有怎样的取舍,但一定要吸取Reddit 的教训,必须提前做好防御应对措施。

可能当下一次闰秒发生时还是会
带来更多的问题,正如托瓦尔德斯所说,“无论什么时候,如果时间被弄混,情况就很有可能
变得糟糕。


背景知识
什么是“千年虫”?
“千年虫”包括两方面的问题:一个是在一些计算机系统中,对于闰年的计算和识别出现问题,不能把2000 年识别为闰年,即在该计算机系统的日历中没有2000 年2 月29 日这一天,而是直接由2000 年2 月28 日过渡到了2000 年3 月1 日;另一个是在一些比较老的计算机
系统中,在程序中使用了数字串99( 或99/99 等) 来表示文件结束、永久性过期、删除等一些特殊意义的自动操作,这样当1999 年9 月9 日( 或1999 年4 月9 日即1999 年的第99 天) 来临时,计算机系统在处理到内容中有日期的文件时,就会遇到99 或99/99 等数字串,从而
将文件误认为已经过期或者将文件删除等错误操作,引发系统混乱甚至崩溃等故障。

相关文档
最新文档