腾讯网络应对闰秒危机之最佳实践

"鹅厂网事"由深圳市腾讯计算机系统有限公司技术工程事业群网络平台部运营,我们希望与业界各位志同道合的伙伴交流切磋最新的网络、服务器行业动态信息,同时分享腾讯在网络与服务器领域,规划、运营、研发、服务等层面的实战干货,期待与您的共同成长。

网络平台部以构建敏捷、弹性、低成本的业界领先海量互联网云计算服务平台,为支撑腾讯公司业务持续发展,为业务建立竞争优势、构建行业健康生态而持续贡献价值!

2015年7月1日07:59:60是一个奇妙的时刻…

这一刻,迎来了全球第26次闰秒。何为闰秒?

先介绍几个概念

世界时(Universal Time)

即格林尼治时间,以地球自转为基础的时间计量系统,通过恒星观测计算。1960年之前,世界时曾作为基本时间计量系统广泛使用。由于地球自传速度变化的影响,世界时不是一种均匀的时间系统

原子时(International Atomic Time)

以物质的原子内部发射的电磁振荡频率为基准的时间计量系统。原子时规定1958年1月1日世界时为0时,秒长定义为铯-133原子基态的两个超精细能级间在零磁场下跃迁辐射9192631770周所持续的时间,是一种较恒定的时间系统。

协调时(Universal Time Coordinated)

以原子时秒长为基础,在时刻上尽可能接近于世界时的时间计量系统。为了保持世界协调时与世界时尽可能接近,当世界时与协调时相差超过±0.9秒时,就把世界协调时拨快或拨慢1秒,这就是闰秒。2015年6月30日23:59:60迎来了全球第26次闰秒,因为北京时间为UTC+8,所以北京时间闰秒发生于2015-07-01 07:59:60。闰秒对互联网用户的日常生活不会产生影响,但是为互联网用户提供服务的服务商则需要严阵以待。因为处理不当会导致服务器宕机,进而导致服务中断,比如发生于2012年6月30日23:59:60的第25次闰秒导致Reddit、Mozilla、FourSquare、Yelp、LinkedIn和Gawker等互联网企业服务中断。

“那闰秒为什么会导致服务器宕机呢?”

互联网企业广泛使用Linux、Windows操作系统,不同操作系统对于闰秒的处理方式不一样的,具体如下:

Linux操作系统

采用倒回1秒机制Linux系统接收到闰秒通知后于7月1日00:00更新时间时插入1秒,即重复1次23:59,系统出现2次23:59。正常情况下,系统时间会跳变(慢)了1秒,但是部分版本的Linux内核存在bug,比如linux-2.6.22以前、linux-2.6.25到2.6.27内核版本会闰秒死锁,linux-2.6.32内核插入闰秒可能出现高CPU消耗,从而导致服务器宕机,服务中断。较新的linux-3.4内核版本系统活锁不受影响。因此如果采用了Linux系统的互联网企业没有恰当处理可能导致服务器宕机,服务中断。

Windows操作系统

忽略闰秒通知,会在下一次时间同步时更新至正确时间此点来看,闰秒对Windows操作系统的影响相对较小,但是如果对时间准确性有较高要求的话,也存在风险,因为下一次时间同步的时间可能比较久,依赖于系统管理员的设置,同时存在系统时间跳变1秒可能导致的风险。

此外,还有其他机制,比如时间分散机制即将多出来的1秒分散在闰秒时刻附近24小内,每1秒调整1/86400秒,最终于7月1日12:00与世界协调时时间一致。这是一个聪明的办法,但是存在较高实现成本。

“那当前腾讯网络面对闰秒又有什么特殊之处呢?”

当前腾讯网络内部使用了众多厂家的网络设备,同一厂家也会多款型号并存,同时网络设备操作系统既有基于Linux内核的也有厂家封闭研发的,网络设备上线年份跨度度大,并且已经有厂商反馈闰秒会导致部分网络设备直接崩溃。为此,团队共同讨论如下几个方案:

方案一:停止网络设备时间同步具体地,闰秒事件之前删除网络设备上时间同步配置,闰秒事件过后配置网络设备时间同步。此方案可以完全避免闰秒可能导致网络设备时间异常,进而造成网络故障,但是操作成本非常高,事前事后需要操作以万计的网络设备,即便通过自动化工具操作,也可能出现遗漏。此外,网络设备时间同步配置被删除期间,网络设备时间可能异常(比如网络设备自身计时晶振异常),同样可能导致网络故障。

方案二:停止网络设备专用时间服务器具体地,受益于当前网络设备会向集中的时间服务器同步时间,闰秒事件之前停止时间同步服务器,避免网络设备接收到闰秒通知,这样可以极大的减少工作量,但是同样存在时间服务器停止期间网络设备时间异常的风险。

那么有没有一个工作量小,同时又能保证网络设备时间同步的办法呢?

方案三:时间同步服务器使用本地时间,时间服务器自身通过ntpdate向上级时间服务器同步时间具体地,时间服务器使用本地时间,如此可以保证网络设备与时间服务器一致。但是,如果时间服务器本地时间不准,或者发生了跳变,则同样可能导致网络设备时间异常。为此引入ntpdate工具矫正更新时间服务器本地时间,因为ntpdate工具不接收闰秒通知,所以上一级时间服务器的闰秒通知不会扩散至时间服务器,更不会扩散至网络设备,从而避免闰秒对腾讯网络的影响。

实施细节之事前

时间服务器使用本地时间

变更务必于6月29日00:00之前实施,因为闰秒通知会提前1天开始广播,即从6月29日00:00开始广播。如果晚于此时间点,则时间同步服务器可能已经接收到闰秒通知并开始广播。变更前可以通过ntptime命令确认时间服务器的状态必须为PLL,如果状态为INS的话,说明已经接收到闰秒通知。

ntpd设置为本地时间,注释之前server配置,添加如下配置并重启ntpd进程即可

server 127.127.1.0

可以通过ntpq –q命令确认时间服务器是否使用本地时间,示例如下:

设置定时任务通过ntpdate更新时间服务器本地时间

注意:ntpdate需要配合-u参数使用,同时因为作为时间源使用,建议同步频率不低于10分钟/次。实施细节之事后(与事前操作相反即可)

时间服务器恢复与上级时间服务器同步时间

取消通过ntpdate更新时间服务器本地时间的定时任务

那么方案三是否可以作为常态运行呢?这里需要了解ntpd、ntpdate的时间同步机制。其实方案三得以实施存在一个前提条件:网络设备可以接受1秒钟时间跳变。如果不能接受此前提条件(比如对时间精度要求极高的金融机构、航空航天行业),则不能通过这个方案规避。ntpd不仅可以作为时间服务器,同时可以保证与上一级时间服务器平滑同步时间,而ntpdate则是立即同步,当时间差小于0.5秒调用系统调用adjtime()调整,当时间差大于0.5秒则调用settimeofday()调整时间,从而可能导致系统时间不平滑的跳变。如果对于时间精度要求极高的话,ntpdate同步时间方式是不可接受的,所以方案三并不能作为常态运行。

综上所述便是腾讯网络应对第26次闰秒危机的最佳实践,不仅巧妙规避了闰秒影响,而且只需极少的工作量,同时为再次应对闰秒积累了行之有效的可持续方案。该方案适用于腾讯网络,相信在其他场景下也有借鉴意义,欢迎同行拍砖。后记:

关于闰秒,业界存在争议,对于是否保持闰秒的提案将于2015年下半年举行的世界无线电通信全会进行表决,团队将会密切跟进进展,欢迎交流。

注1:凡注明来自“鹅厂网事”的文字和图片等作品,版权均属于“深圳市腾讯计算机系统有限公司”所有,未经官方授权,不得使用,如有违反,一经查实,将保留追究权利;

注2:本文图片部分来至互联网,如涉及相关版权问题,请联系judithliu@tencent.com。

原文发布于微信公众号 - 鹅厂网事(tencent_network)

原文发表时间:2015-07-06

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏企鹅号快讯

深度解析小程序4大核武器级接口能力

今天给大家介绍4组极其重要,但并不广为人知的微信小程序接口,了解这4类接口,相信您也可以设计出来一款牛逼的微信应用。下面且听微播君为您娓娓道来: 其实在公众号接...

24350
来自专栏web前端教室

前端工作师都能做什么?

这几年,前端开发确实是火的不行不行的, 工资也动辄十几K,几十K的, 而且前端入门的门槛确实也不高, 无非是三大块:html / css / js, 这三块里...

22470
来自专栏CSDN技术头条

专访当当网张亮:深度解读分布式作业调度框架elastic-job

【编者按】互联网从诞生到现在,网站的规模不断扩大,存储和处理的数据量也远远超出了人们的想象,又随着对信息实时性、多媒体需求大幅增长的现象,互联网架构面临越来越大...

26760
来自专栏phodal

使用 adr 轻松创建 “程序员友好” 的轻量级文档

是的,我又写了一个 markdown 工具,它对我来说非常有用。 上下文 在一周里,我看到了一个名为 “轻量级架构决策记录” 的技术实践。在看到了一个简单的示例...

251100
来自专栏鹅厂网事

海量服务器安全高效管控系统设计

"鹅厂网事"由深圳市腾讯计算机系统有限公司技术工程事业群网络平台部运营,我们希望与业界各位志同道合的伙伴交流切磋最新的网络、服务器行业动态信息,同时分享腾讯在网...

37080
来自专栏SDNLAB

如何确保uCPE零接触部署

服务提供商正在努力用在通用客户端设备(uCPE)的标准平台上运行的软件来替换客户端设备(CPE)。他们还希望尽量减少在供应链和客户现场建立uCPE所需的步骤。在...

11020
来自专栏SDNLAB

IO Visor:又一个开源项目横空出世

日前,Linux组织宣布成立开源项目IO Visor,该项目主要针对Linux内核的输入/输出请求任务。这个项目听上去似乎很深奥,事实上该项目与网络有很大的相关...

31560
来自专栏程序员互动联盟

【答疑释惑】学嵌入式需要什么样的电脑配置?

毋庸置疑,嵌入式仍旧是一门非常热门的技术,每年依旧有很多同学投入到嵌入式学习的大军中来。从简单的8位单片机,例如51系列,到32位的arm,mips系列,甚至现...

37880
来自专栏Android开发实战

Android 一直怎样在速度上追赶 iOS

一直以来人们都有这样的印象,认为搭载iOS系统的iPhone一定比搭载Android系统的安卓手机流畅。潜移默化中,不少果粉甚至是普通吃瓜群众都形成了这样的思维...

10720
来自专栏福利活动清单

新用户有哪些优惠——腾讯云篇

满200减150 / 满500减375 / 满1000减750 / 满2000减1500

1.7K20

扫码关注云+社区

领取腾讯云代金券