闰年闰月大家都知道,可是你听说过闰秒这回事情吗?

闰年是为了弥补是我们的历法365天和地球实际公转365.25天的差距,所以每4年会一年是闰年,多出来的那一天就是2月29日。

闰月则是和阴历有关,不同于阳历的以公转制定的方式,阴历以月亮绕地球的时间来计算,所以会和阳历的365.25天相差10天21小时,于是,多出来的时间累积下来凑成一个月,也就是闰月了。

那么什么是闰秒?闰秒会带来什么影响?怎么解决闰秒带来的问题?

闰秒定义

要了解闰秒,首先需要了解几个基本的概念。

平均太阳日:天空中的太阳连续两次出现最大仰角(90度)所经历的时间就是一个太阳日,而又由于太阳日的长短不同,所以取一年内的太阳日平均值,所以可以大致的认为一个平均太阳日就是一天24小时。

UTC:英文为Coordinated Universal Time,中文叫做协调世界时或者世界标准时间,相信开发的同学都很清楚,他是世界上调节时钟和时间的主要时间标准,也是最接近格林威治标准时间GMT的时间系统之一。

最早的时候,一秒根据平均太阳日的1/86400来定义,这个时间依赖于地球的自转和公转。后来直到1967年,秒被物理学重新定义,以铯133的振荡频率来定义秒,并可以用原子钟来测量。

UTC的时间就是基于此来定义,而且他是一个固定的时间长度。

但是由于地球自转的速度受到潮汐加速等众多因素的影响,平均太阳日的时间并不固定。

为了让UTC贴近平均太阳日的时间,所以就产生了闰秒。

闰秒分为两种形式:

  1. 正闰秒,也就是在23:59:59之后一秒是23:59:60,然后才是00:00:00,很奇葩很诡异是不是。
  2. 负闰秒,23:59:58的下一秒就是00:00:00,但是目前没有出现过负闰秒。

闰秒的时间调整一般是在6月30日或者12月31日,而离我们最近的一次闰秒的调整则是在2016年的12月31日。

从1972年到现在,已经发生了20多次闰秒,对于我们的系统配置来说,通过NTP的服务来进行时间同步,如果服务器收到闰秒的处理通知,则会一级级下发到最边缘的NTP服务器,然后通知到客户端的操作系统,最终由操作系统来处理闰秒。

下面的表格是历年发生闰秒的时间:

6月30日 12月31日
1972年 +1 +1
1973年 0 +1
1974年 0 +1
1975年 0 +1
1976年 0 +1
1977年 0 +1
1978年 0 +1
1979年 0 +1
1981年 +1 0
1982年 +1 0
1983年 +1 0
1985年 +1 0
1987年 0 +1
1989年 0 +1
1990年 0 +1
1992年 +1 0
1993年 +1 0
1994年 +1 0
1995年 0 +1
1997年 +1 0
1998年 0 +1
2005年 0 +1
2008年 0 +1
2012年 +1 0
2015年 +1 0
2016年 0 +1

带来的影响

虽然闰秒对普通人的日常生活没有任何影响,但是对于开启NTP服务的Linux系统来说有致命的风险,在Linux kernel 2.6.29之前版本存在bug,在进行闰秒调整时可能会引起系统导致ntpd进程死锁,从而导致crash。另外由于应用程序不能处理闰秒的问题导致时间的变化,会导致CPU load激增。

在上一次闰秒产生,国外Reddit、Mozilla、FourSquare、Yelp、LinkedIn和Gawker都产生了一定的问题,其中Reddit宕机时间超过1个半小时。其中,或许你能很明显的看到异常错误信息:kernel[81951.244556] Clock: inserting leap second 23:59:60 UTC

另外,针对数据库方面,23:59:60时间的问题兼容也不尽相同。

PostgreSQL:PostgreSQL可以兼容23:59:60的写法,不会报错。

Mysql:Mysql还不支持60秒写法,闰秒时必须使用unix time来表示时间,否则会报错。

根据目前的信息来看,Linux内核版本高于2.6.29修复了这个问题,NTP版本高于4.2.2p1-9会把这一秒的时间分散到大约2000秒中,低于该版本的话则会直接加一秒或者减一秒。

解决方案

最简单直接的方法就是闰秒发生前停止ntpd服务,闰秒结束后再开启。

提前一天停止ntp /etc/init.d/ntpd stop
重置系统时间 date -s "`date`"
重新开启ntp ntp/etc/init.d/ntpd start

但是有一个很明显的问题就是,大公司一个服务上千台机器,操作起来成功太高,而且停止同步是否会带来其他的问题不好评估影响面。

目前像google、阿里、amazon都有一些具体的应对方案,使用云服务的话可能不需要用户关心这方面的问题,如果是自己机房托管的话那么可能需要运维开发人员手动处理了。

以国内阿里云的处理方案举例,amazon同样也是采用该方案

阿里云的ECS云服务器的NTP服务采用忽略闰秒时刻的跳秒,缓慢同步消除闰秒带来的1秒误差的方案来面对闰秒事件,实际上采用的方案是闰秒发生前,每秒比UTC慢1/86400,经过12小时(43200秒)后,会比UTC慢0.5秒,闰秒发生之后,每秒和UTC误差减少1/86400,经过12小时(43200秒)后,-0.5的误差消除。国外Amazon也是这样的解决方案。

具体时间同步方案如下表格所示:

UTC 阿里云时间(北京时区 阿里云时间和UTC误差 备注
2016/12/31 11:59:59 2016/12/31 19:59:59 +0 和UTC完全同步
12:00:00 20:00:00 +0
12:00:01 每秒比UTC慢1/86400,经过12小时(43200秒)后,会比UTC慢0.5秒
20:00:01 +1/86400
12:00:02
20:00:02 +2/86400
23:59:59
2017/1/1 07:59:59 +43199/86400
23:59:60 闰秒
2017/1/1 08:00:00 -0.5秒 和UTC误差-0.5秒
2017/1/1 00:00:00 每秒和UTC误差减少1/86400,经过12小时(43200秒)后,-0.5的误差消除
08:00:01 -43199/86400
00:00:01
08:00:02 -43198/86400
19:59:59 -1/86400
11:59:59
2017/1/1 12:00:00 2017/1/1 20:00:00 0 再一次和UTC同步
12:00:01 20:00:01 0

如何预测避免

实际上,由于地球自转的时间无法计算,他有可能变快,也有可能变慢,受到潮汐、天气和熔态金属在地球核心的流动等各方面因素的影响,下一次闰秒的时间无法预估,但是国际地球自转和参考系服务(IERS)会提前6个月公布下一次闰秒的时间。

废除闰秒真的有必要吗?不废除会有哪些影响?相关推荐

  1. 微信安装包11年膨胀575倍,UP主:“98%的文件是垃圾”;苹果应用商店被曝大量色情App;四大科技巨头呼吁废除闰秒|极客头条...

    「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧. 整理 | 梦依丹 出品 | CSDN(ID:CSDNnews ...

  2. 大厂们终于无法忍受“加一秒”了,微软谷歌Meta等公司提议废除闰秒

    萧箫 发自 凹非寺 量子位 | 公众号 QbitAI 大厂们再也无法忍受闰秒带来的一堆bug了. 现在,谷歌Meta微软亚马逊等一众科技巨头发起了一项倡议:废除闰秒! 闰秒这玩意,说白了就是通过给&q ...

  3. HTML5新增标签及废除标签整理

    HTML5新增标签及废除标签整理(有些很偏就没有列出) 1>新增的标签 1>section元素 表示页面中的一个内容区块,比如章节.页眉.页脚或页面的其他部分,其实就像div,比div更具 ...

  4. 恐造成下一个“千年虫”的闰秒,遭科技巨头们联合抵制

    整理 | 彭慧中       责编 | 屠敏 出品 | CSDN(ID:CSDNnews) 近日,谷歌.Meta.微软和亚马逊四位科技巨头呼吁将闰秒取消,并称闰秒会对网络造成巨大影响.闰秒或将成为下一 ...

  5. #资讯 #科普 #闰秒 这一秒,困扰了程序员 50 年

    目录 1.前情提要 2.闰秒从何而来? 3.计算机中令人"头疼"的闰秒问题 3.呼吁废除闰秒 1.前情提要 2012 年 6 月 30 日晚,美国著名新闻社交网站 Reddit 突 ...

  6. css发动机的机滤,别傻了!网传的机油滤清器加磁铁真的能起到发动机保护作用?...

    好几年前开始流行起了在机油滤清器外壳上放磁铁来吸收机油里的铁屑,想必当时很多人都是瞬间脑洞大开,感觉这是一个极好的方法,因为不用对车辆进行任何改造和改装,仅仅是在机滤外壳上吸几个磁铁即可.而且再配上一 ...

  7. 正式宣布取消!能让 Linus 本人同谷歌微软达成一致的,只有它了!

    转自:量子位 | 公众号 QbitAI 决定了!这一秒,程序员们不用再续了! 国际计量大会已正式宣布:废除闰秒. 该消息一经官宣,相当一部分人喜大普奔. 毕竟,各家互联网大厂和其背后的程序员们,苦闰秒 ...

  8. 复旦副教授魏忠钰:AI和人类对垒「奇葩说」,如何打造智能辩手?

    导读:想象一下,在一场AI和人类对垒的「奇葩说」,智能辩手的表现会如何? 论辩的过程,既需要理解对方的表达,同时根据对方的观点生成自身的论据和观点,这个处理过程对于AI来讲,比一般性的对话要复杂很多. ...

  9. 怎么看cudnn的版本好_针对此次版本削弱,怎么用好嫦娥!

    大招的费蓝 & 蓝量伤害比 (先把嫦娥的冷门知识点放置顶,干货感比较重要) 嫦娥100%蓝时,所有造成的伤害均要2倍,蓝量每下降1%,伤害倍数就下降2%. 即嫦娥在50%蓝的时候,伤害就不加倍 ...

最新文章

  1. SciTE for Ruby的配置
  2. python免费视频百度网盘-Python入门视频百度网盘看这些就够
  3. leetcode 两数相加c++_167. 两数之和 II - 输入有序数组
  4. 《数据整理实践指南》一第1章 从头说起:什么是噪音数据
  5. leetcode43. 字符串相乘
  6. Python练习:站队顺序输出
  7. 谁说 C++ 的强制类型转换很难懂?
  8. 论文赏析[ACL18]基于RNN和动态规划的线性时间成分句法分析
  9. 00110_Class类
  10. vim全文替换字符串
  11. Matlab实现圆孔夫琅和费衍射
  12. ROS2-Gazebo仿真
  13. SYD8811 内存和代码的分布
  14. 细数 TS 中那些奇怪的符号
  15. WebLogic Server 9.2 直接下载 地址分享
  16. 5分绩点转4分_张康阳重大利好,国米提前4轮进欧冠!只差尤文5分,争冠还有戏...
  17. 51单片机 Proteus仿真 简易计算器设计 清零 十以内
  18. 2017高二会考计算机考试时间,2017年高中期末考试时间通知
  19. 开源项目推荐!2019阿里,腾讯,百度,美团,头条等大厂技术面试题目汇总
  20. 2020下半年总结:void

热门文章

  1. 基于 SQL SERVER 的分布式数据库设计与实现
  2. Linux PCI网卡驱动的详细分析
  3. 【网站国际化必备】Asp.Net MVC 集成Paypal(贝宝)快速结账 支付接口 ,附源码demo...
  4. python 监目录文件变动,然后在做些其它的操作,watchdog 详细解答
  5. hdu 2050折现分割平面
  6. GOTS——商品中的化学品控制
  7. 十个计算机快捷键,10个常用的电脑快捷键,学会了可以让你进一步提升工作效率...
  8. echarts 多个水球图简单移动动画demo
  9. 杭电4510—小Q系列故事—为什么时光不能倒流
  10. 三星手机直连电脑Samsung Flow