`
ikalen
  • 浏览: 1405 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

别忘了我们又多活了一秒

阅读更多

 

北京时间7月早上8点左右,集群收到报警,cpu暴增,经过排查发现hadoop集群没有任何job执行,然而CPU基本是满载,非常奇怪。还好现在集群没有在线服务和比较重要的任务处理。排查毫无头绪。

周一上班,打开各类新闻,北京时间7月1日全球于7:59后增加一秒,出现7:59:60的特殊现象,然后是8:00:00。

紧接着就是互联网行业内都不同程度的受到闰秒影响,造成服务器宕机,

经过上网查阅资料,发现是因为操作系统内核在处理闰秒的时候,导致部分试图获取当前系统时间的进程出现Live Lock,也就是说,某个进程/线程在查询系统时间的时候,进入了一种类似死循环的状态,CPU利用率很高,同时不能完成时间查询。

猜测JVM和MySQL试图通过CPU硬件晶振的数据获得当前精确的时间,由于闰秒的关系,这个时间和操作系统维持的墙上时间(Wall Time,也就是显示给用户看的时间)不一致,导致了这个问题。

系统时间对于各种服务器程序尤为重要,hadoop集群节点都定期收集和报告系统状态,如果系统时间无法获取,可能导致部分节点被误判为故障,自动引起一系列不必要的故障恢复动作。

我们首先选择的方式是重启所有服务,但是很显然没有解决问题,后来经过运维部同事排查,我们Linux服务器默认启用Ntp服务器的时间源是centeros的,所以我们先关闭了ntp服务,改由局域网同步,问题可以解决。

当然网上也有解决方案:Mozilla的一篇blog, 也谢谢Google快速灵活的实时索引,我们在重启服务器的过程中,发现了如下更简单的解决办法:

$ cat files/bin/leap-second.sh 
# this is a quick-fix to the 6/30/12 leap second bug

if [ ! -f /tmp/leapsecond_2012_06_30 ]
then
/etc/init.d/ntpd stop; date `date +"%m%d%H%M%C%y.%S"` && /bin/touch /tmp/leapsecond_2012_06_30
fi

这个脚本只是简单的强制重置系统时间,从而让系统中所有时间回到同步的状态。完成后,你可以确认所有服务的状态回到正常,然后手动重启ntp服务。类似mozilla, 我们也使用puppet将该脚本在所有服务器上执行。

分享到:
评论

相关推荐

    一秒搜硬盘.zip

    "一秒搜硬盘.zip"这个压缩包文件显然与系统软件相关,尤其强调了“一秒搜硬盘”的功能,这可能是一款快速搜索硬盘上文件的系统工具。这类软件的主要目标是提高用户在大量数据中查找特定文件的效率,对于经常需要处理...

    一秒快速关机,很实用的程序

    一秒快速关机,自制作,无病毒

    一秒关机+一秒重启

    综上所述,"一秒关机+一秒重启"涉及到操作系统设计、硬件性能、系统优化和电源管理等多个层面。通过合理配置和优化,用户可以显著提升电脑的启动和关闭速度,享受到更为流畅的使用体验。然而,实际操作时需注意,...

    一秒新建多个文件夹.bat

    一秒新建多个文件夹.bat

    一秒关机(世上最快关机)

    标题中的“一秒关机(世上最快关机)”和描述中的“自制快速关机”都指向了一个主题,即创建一个能够迅速关闭计算机的程序或脚本。这通常涉及到操作系统底层的命令行工具,如在Windows系统中使用命令提示符来执行...

    微机汇编一秒延时子程序

    ### 微机汇编一秒延时子程序解析 在微机汇装语言编程中,实现精确的时间延迟是一项挑战性任务,尤其是当需要实现一个稳定的一秒延时时。本篇文章将详细解析“微机汇编一秒延时子程序”,并探讨其背后的原理与技术...

    一秒扫雷(含源代码)

    扫雷,一秒扫雷绝对快,易语言+(雪峰破解补丁)编译制作,绝对无毒 内含源代码

    计算下一秒的时间

    关于通过用户输入的时间,可以计算下一秒的时间

    c语言下一秒

    任意输入一个时间,输出下一秒;例如输入当前时间2006年12月20日19时17分59秒,计算后输出时间是2006年12月20日19时18分00秒。

    一秒生成多个文件夹,一秒生成一百个文件夹

    标题 "一秒生成多个文件夹,一秒生成一百个文件夹" 描述的是如何通过自动化脚本来高效地创建大量文件夹。这个过程涉及到Excel处理、脚本编写以及批处理(batch processing)技术。以下是对这些知识点的详细说明: 1...

    C语言 下一秒时刻 程序

    ### C语言实现下一秒时刻程序解析 #### 一、程序背景与目的 ...通过以上分析,我们可以看到这个程序虽然简单,但是涵盖了C语言中多个重要的知识点和技术细节,对于初学者来说是一个非常好的学习案例。

    获得指定月的和第一秒和最后一秒

    标题中的“获得指定月的和第一秒和最后一秒”指的是在编程中获取特定月份的第一天的零时零分零秒和最后一天的最后一秒的时间戳,这通常涉及到日期和时间的处理。在Java中,我们可以使用`java.time`包或者旧的`java....

    最近微信很火的html小游戏安卓版【按一秒】

    至于“一秒”游戏的具体玩法,虽然描述中没有详细说明,但我们可以推测它可能涉及到计时、反应速度等元素。通过JavaScript的setTimeout或setInterval函数可以实现时间的精确控制,结合事件监听器(如touchstart和...

    快速关机(一秒)软件

    快速关机软件是一种实用工具,它能够极大地提升用户在关闭计算机时的效率,将原本可能需要几分钟的关机过程缩短至仅仅一秒。这种技术主要基于操作系统底层的优化和控制,通过对系统资源的快速释放和关闭来实现瞬间...

    安卓微信一秒语音软件,已修复bug

    网上已有的软件,但通过反编译修改了在微信上不能使用的bug,只能保证微信一秒语音可用,其余并未测试。语音包自己去网上找

    编写程序数入年月日时分秒,输出显示下一秒,例如输入2004年12月31日23时59分59秒输出显示2005年1月1日0时0分0秒

    通过上述步骤,我们可以构建一个程序,接受用户输入的日期时间,增加一秒并正确输出。对于初学者来说,这个任务不仅涵盖了基本的日期时间处理,还涉及到了字符串解析、条件判断、异常处理等多个编程概念,是一个很好...

    小例子--当前时间加三天时间减一秒

    ### 小例子--当前时间加三天时间减一秒 在Java编程语言中,处理日期与时间是非常常见的需求之一。本示例通过一个简单的程序演示了如何获取当前时间,并在此基础上增加三天然后减去一秒钟的操作。这有助于理解Java中...

    计算输入时间的下一秒的c语言源代码

    对输入的时间进行简单的判断,得到下一秒的时间,然后输出出来结果。用c语言实现的

    一秒有多长HTML5游戏源码

    这款"一秒有多长"HTML5游戏源码提供了一个很好的学习和实践平台,帮助我们深入理解HTML5在游戏开发中的应用。 首先,HTML5的核心组成部分包括HTML(超文本标记语言)、CSS(层叠样式表)和JavaScript。在这款游戏...

    教你PS人物一秒变丧S.rar

    在本教程中,我们将探索如何使用Photoshop(简称PS)制作一种令人惊悚的效果,将人物瞬间转变为“丧S”风格,类似于丧尸的形象。这个过程涉及到PS中的各种工具和功能,包括图层样式、调整图层、滤镜以及动作(Action...

Global site tag (gtag.js) - Google Analytics