闰秒为什么会导致Linux出现问题

系统 Linux
由于Linux kernel 2.6.29之前版本存在bug,在进行闰秒调整时可能会引起系统时钟服务ntpd进程死锁。Debian Lenny、RHEL/CentOS 5等旧发行版今天仍被广泛使用,部分供应商早已经发布了补丁。

由于Linux kernel 2.6.29之前版本存在bug,在进行闰秒调整时可能会引起系统时钟服务ntpd进程死锁。Debian Lenny、RHEL/CentOS 5等旧发行版今天仍被广泛使用,部分供应商早已经发布了补丁。

[[180797]]

闰秒导致部分Linux服务器高CPU使用率

国际地球自转和参考坐标系统服务(IERS)在2012年6月30日午夜(北京时间7月1号7点59分59秒)增加一闰秒(即出现 7:59:60)。由于Linux kernel 2.6.29之前版本存在bug,在进行闰秒调整时可能会引起系统时钟服务ntpd进程死锁。Debian Lenny、RHEL/CentOS 5等旧发行版今天仍被广泛使用,部分供应商早已经发布了补丁。

但除了Linux服务器外,一些服务器程序也因为闰秒出现了问题,如Reddit、Mozilla、FourSquare、Yelp、 LinkedIn和Gawker等网站都短暂遭遇了技术问题,国内的一家云储存供应商发现运行在CentOS 6.2上的Java和MySQL因闰秒出现了不同程度的CPU利用率增长,猜测是JVM和MySQL试图通过CPU硬件晶振的数据获得当前精确的时间,由 于闰秒的关系,这个时间和操作系统维持的墙上时间(Wall Time,也就是显示给用户看的时间)不一致,导致了这个问题。简单的修正方法是强制重置系统时间,让系统中所有时间回到同步的状态

近日,国际地球自转和参考系统服务地球定向中心(IERS)通过推特重申,国际标准时间UTC将在格林尼治时间2016年12月31日23时59分59秒(北京时间2017年1月1日7时59分59秒)之后,在原子时钟实施一个正闰秒,即增加1秒,然后才会跨入新的一年。

每隔一段时间,目前世界范围内通用的协调世界时(UTC)会与依据地球围绕太阳运动计算的平太阳日和世界时(UT1)出现很小的偏差,需要对UTC增加或者减少一秒来消除。

简要解决方法:在发生闰秒前停掉ntpd服务,闰秒发生后再开启ntpd

根解:放弃使用ntpd,使用简化的sntp协议,同时在实现直接调用settimeofday来完成,不会触发内核的事件调整异常

Java Fortunately the fix is straightforward:

 

  1. /etc/init.d/ntp stop  
  2. date -s "$(date)"  
  3. Mysql  
  4. The fix is quite simple – simply set the date. Alternatively, you can restart the machine, which also works. Restarting MySQL (or Java, or whatever) does NOT fix the problem. We put the following into puppet to run on all our machines: 
  5. $ cat files/bin/leap-second.sh  
  6. #!/bin/bash  
  7. # this is a quick-fix to the 6/30/12 leap second bug  
  8. if [ ! -f /tmp/leapsecond_2012_06_30 ]  
  9. then  
  10. /etc/init.d/ntpd stop; date -s "`date`" && /bin/touch /tmp/leapsecond_2012_06_30  
  11. fi 
责任编辑:未丽燕 来源: 程序师
相关推荐

2009-12-16 10:22:49

2024-07-18 20:18:51

2017-10-19 12:45:07

PHP

2012-05-02 10:08:51

桌面Linux微软

2010-05-06 14:52:52

Oracle查询记录数

2024-05-27 08:04:41

2023-05-30 08:03:05

Windows 11AMD 驱动

2010-08-24 10:11:02

虚拟化部署

2012-07-03 09:57:11

闰秒Linux 服务器

2012-07-02 16:38:22

Linux服务器闰秒

2012-07-02 09:55:28

闰秒技术故障

2010-05-13 10:09:18

MySQL编码

2024-05-27 08:01:15

2010-06-13 11:20:31

win7 Ubuntu

2011-06-28 09:39:31

Qt

2023-07-26 16:31:09

Windows 10Windows 11微软

2009-12-25 10:46:46

设置ASP.NET W

2020-05-26 09:09:43

Linux 系统调用操作系统

2009-12-28 14:23:37

ADO启动连接

2012-07-03 10:31:09

闰秒计算机
点赞
收藏

51CTO技术栈公众号