IT中的闰秒问题(r5笔记第85天)
虽然闰秒的考验已经结束了,不少IT人都为这一秒付出了很大的代价。 我也是在周末知道闰秒的说法,自己听到时也是一知半解,原本以为是个很新鲜的名词,看着微信朋友圈和微信群里大家都在热烈讨论,因为都是oracle圈子的,大家讨论的更多关注点都在数据库层面了。 讨论比较多的说法是: 这个问题将影响部分开启ntp服务的Linux操作系统——会导致Linux内核Crash!Linux kernel是在2.6.18-164.e15之后的版本中解决了这个问题。换句话说,Linux kernel低于2.6.18-164的Linux系统,无论是什么公司的Linux都将受到影响。闰秒产生后,由于NTP同步时间,则对于10.2.0.4 (不包括)之前的RAC系统, 存在BUG 5015469 和BUG 6022204 可能在一定场景下会导致节点重启。 参考oracle 官方文档, Leap seconds (extra second in a year) and impact on the Oracle database. (文档 ID 730795.1) 建议解决办法:在6月30日停掉所有Linux及Oracle版本在上述影响范围内的Oracle RAC数据库服务器的NTP网络时间同步服务,到7月1日零点以后再重新打开。该方法对应用系统无影响(只是短时间内不自动校时罢了,服务器自己的时间精度短时间内足够应付一般应用)。 自己也潮了一把。也顺便看看公司是否也有相应的防范措施,结果一查看邮件历史,真是让人大跌眼镜。公司早在今年1月份就已经明确发出邮件,而且讨论的邮件列表已经很长了。着实让我感慨了一把。 官方结构的宣布是在1月5日左右。http://datacenter.iers.org/web/guest/eop/-/somos/5Rgv/latest/16
To authorities responsible for the measurement and distribution of time UTC TIME STEP on the 1st of July 2015 A positive leap second will be introduced at the end of June 2015. The sequence of dates of the UTC second markers will be: 2015 June 30, 23h 59m 59s 2015 June 30, 23h 59m 60s 2015 July 1, 0h 0m 0s
所以可以很明显的看到,时间会多出一秒来。关于闰秒,也简单说几句,因为自己确实是文化水平不够:)。闰秒是指为保持协调世界时接近于世界时时刻,由国际计量局统一规定在年底或年中(也可能在季末)对协调世界时增加或减少1秒的调整。由于地球自转的不均匀性和长期变慢性(主要由潮汐摩擦引起的),会使世界时(民用时)和原子时之间相差超过到±0.9秒时,就把世界时向前拨1秒(负闰秒,最后一分钟为59秒)或向后拨1秒(正闰秒,最后一分钟为61秒) 当然还有一些数据来看看,可能还有点意思。 下面是闰秒实施的一些时间情况,都是正闰秒。看到这我就在想,下一次是什么时候呢,结果百度了一大圈,没有任何收获,最后又认真读了读闰秒的百科,才发现闰秒的添加频率是不固定的,有时一年添加两次闰秒,有时7年添加一次闰秒,而这一次添加闰秒的时间是4年,如此“漂浮不定”,大体意思应该是说取决于地球的转速了。这样来看以后可能还有一些这种补丁要做。
实施年份 |
6月30日23:59:60 |
12月31日23:59:60 |
实施年份 |
6月30日23:59:60 |
12月31日23:59:60 |
---|---|---|---|---|---|
1972年 |
+1秒 |
+1秒 |
1989年 |
—— |
+1秒 |
1973年 |
—— |
+1秒 |
1990年 |
—— |
+1秒 |
1974年 |
—— |
+1秒 |
1992年 |
+1秒 |
—— |
1975年 |
—— |
+1秒 |
1993年 |
+1秒 |
—— |
1976年 |
—— |
+1秒 |
1994年 |
+1秒 |
—— |
1977年 |
—— |
+1秒 |
1995年 |
—— |
+1秒 |
1978年 |
—— |
+1秒 |
1997年 |
+1秒 |
—— |
1979年 |
—— |
+1秒 |
1998年 |
—— |
+1秒 |
1981年 |
+1秒 |
—— |
2005年 |
—— |
+1秒 |
1982年 |
+1秒 |
—— |
2008年 |
—— |
+1秒 |
1983年 |
+1秒 |
—— |
2012年 |
+1秒 |
—— |
1985年 |
+1秒 |
—— |
2015年 |
+1秒 |
—— |
大概了解了一下闰秒,当然从IT层面来看,是不是只有2.6.18-164.e15之后的才不会有影响呢。以redhat为例,在不同的版本中,其实还是有一些不同。
Required Kernel Updates
RHEL 4
RHEL 4 Update 8 - kernel-2.6.9-89.EL
建议升级为RHEL 4 update 9 – kernel-2.6.9-100 RHEL 5.x
5.x: Kernel must be updated to a release >=kernel-2.6.18-164.el5
RHEL 6.x minimum required patch levels:
6.1: kernel-2.6.32-131.30.2
6.2: kernel-2.6.32-220.25.1.el6
6.3: kernel-2.6.32-279.5.2
6.4 and later already contain the patch.
7.x: currently not affected 各大厂商都会或多或少的影响到,在2012年很多互联网公司就受到很大的影响。 所以这次的闰秒时间应该是格外重视。 redhat官方的讨论文章 https://access.redhat.com/articles/15145
https://rhn.redhat.com/errata/RHEA-2015-0141.html
HP 官方的讨论 http://h30499.www3.hp.com/t5/General/HP-Support-Statement-for-XNTPD-Leap-Second-Processing/td-p/3663790?notmigrated#.VZOQjpWKDcs
IBM的官方讨论 http://www-03.ibm.com/support/techdocs/atsmastr.nsf/5cb5ed706d254a8186256c71006d2e0a/f592455a33db567086257a35005d4028/$FILE/IBM%20AIX%20Oracle%20Database%20Leap%20Second%20REDER%20%2030JUN2012.pdf
从数据库层面,在Oracle RAC 11.1.0.7版本基于AIX和Solaris时,如果使用了集群,在闰秒问题发生时,很可能会出现莫名其妙的重启情况,所以还是强烈建议打上对应的补丁。metalink的文章还是很值得推荐的。Leap seconds (extra second in a year) and impact on the Oracle database. (文档 ID 730795.1) 从这一点来看,很多问题和我们都是紧密相关的,处理问题也需要与时俱进,能够前瞻的预见问题和分析排查,就能在出现的问题的时候更加从容一些。
- XssHtml – 基于白名单的富文本XSS过滤类
- fireeyee解剖新型Android恶意软件
- WordPress系统暴力破解测试工具 – wpbf
- RecyclerView notifyItem闪烁的问题
- 独家: iOS是如何收集用户的地理信息的
- Hygieia 为何物?DevOps 利器也
- 汽车攻击离你很近:一分钟变成汽车黑客
- LIFX智能灯泡漏洞泄露WIFI密码
- android ViewPager+Fragment之懒加载
- 逆向APK进行smali注入实现“秒破WIFI”
- 我所理解的Android 启动模式
- 搭建开源入侵检测系统Snort,并实现与防火墙联动
- 如何在Python中为长短期记忆网络扩展数据
- android 开发Handler源码剖析
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- laravel 字段格式化 modle 字段类型转换方法
- laravel-admin 在列表页添加自定义按钮的例子
- laravel利用中间件防止未登录用户直接访问后台的方法
- laravel实现上传图片并在页面显示的例子
- php实现大文件断点续传下载实例代码
- Laravel第三方包报class not found的解决方法
- 使用laravel的migrate创建数据表的方法
- 解决laravel session失效的问题
- php7下的filesize函数
- PHP-FPM 设置多pool及配置文件重写操作示例
- laravel实现登录时监听事件,添加登录用户的记录方法
- php更新cookie内容的详细方法
- php实现映射操作实例详解
- Laravel 已登陆用户再次查看登陆页面的自动跳转设置方法
- yii框架数据库关联查询操作示例