闰秒导致MySQL服务器的CPU sys过高

今天,有个哥们碰到一个问题,他有一个从库,只要是启动MySQL,CPU使用率就非常高,其中sys占比也比较高,具体可见下图。

注意:他的生产环境是物理机,单个CPU,4个Core。

 

于是,他抓取了CPU的历史信息,发现CPU飙高大概是从2017年1月1日8点10分开始的。

 

但是这个从库的负载并不高,通过他反馈的“show processlist”和“show engine innodb status\G”的结果可以看出来

show processlist

mysql> show processlist;
+-----+-------------+-----------+------+---------+-------+-----------------------------------------------------------------------------+------------------+
| Id  | User        | Host      | db   | Command | Time  | State                                                                       | Info             |
+-----+-------------+-----------+------+---------+-------+-----------------------------------------------------------------------------+------------------+
|   1 | system user |           | NULL | Connect | 57892 | Waiting for master to send event                                            | NULL             |
|   2 | system user |           | NULL | Connect |    23 | Slave has read all relay log; waiting for the slave I/O thread to update it | NULL             |
| 108 | root        | localhost | NULL | Query   |     0 | NULL                                                                        | show processlist |
+-----+-------------+-----------+------+---------+-------+-----------------------------------------------------------------------------+------------------+
3 rows in set (0.00 sec)

 

show engine innodb status

在这里,只截取了“row operations”这一部分

...
--------------
ROW OPERATIONS
--------------
0 queries inside InnoDB, 0 queries in queue
1 read views open inside InnoDB
Main thread process no. 3034, id 140218088003328, state: waiting for server activity
Number of rows inserted 7500, updated 237481, deleted 884, read 31371340
0.00 inserts/s, 0.00 updates/s, 0.00 deletes/s, 0.00 reads/s
----------------------------
...

 

再次回到CPU sys态较高的事实上,一般sys较高就意味着系统在频繁调用内核代码。如果是这样的话,通过perf top就能定位系统什么操作执行得比较多。

 

结果却显示,无任何异常操作,尤其是内核部分的,排在第一位的还是MySQL的后台进程。

 

一切看来是如此的诡异,MySQL本身几乎没有负载,但是CPU sys使用率较高,而且,只要关闭MySQL,CPU负载又会降下来。

 

最后,还是从/var/log/messages中找到些许蛛丝马迹。

 

联想到前几天的闰秒新闻,怀疑这个是闰秒造成的。

 

事实上,2012年发生的闰秒调整事件(2012年6月30日23:59:59)在全球造成了较大的影响,很多网站的服务器的CPU使用率飙升,导致网站被拖垮。

后来确认为Linux内核版本存在缺陷,在进行闰秒调整时可能会引起系统时钟服务ntpd进程死锁,并造成Linux系统重启。包括SUSE、RedHat等所有Linux kernel版本在2.6.29以下且开通了NTP服务的Linux系统都存在本次风险。如同步的时钟源对象为内部时钟源,理论上不会有此影响;如同步的时钟源对象为官方时钟源,则会存在上述风险。

该缺陷在2012年修复后,在2015年同样的闰秒调整事件中就没有造成极大的影响。

 

之前发生的闰秒调整导致MySQL服务器CPU sys飙高的问题,

具体可参考:

https://blog.mozilla.org/it/2012/06/30/mysql-and-the-leap-second-high-cpu-and-the-fix/

 

解决方法:

1. 重启服务器

2. 重新设置时间

/etc/init.d/ntpd stop; date -s now

很明显,第2种方法更实用。

 

重新设置时间后,CPU sys负载马上下降了。

 

那么,如何避免此类问题的发生呢?

简单方法:

在发生闰秒前停掉ntpd服务,发生后再开启ntpd

其它较优雅的方法,可参考:

https://www.percona.com/blog/2016/12/27/prepare-for-the-new-leap-second/

https://developers.redhat.com/blog/2015/06/01/five-different-ways-handle-leap-seconds-ntp/

 

PS:闰秒不是23:59:60秒么?为什么该问题发生的时间是8点。
因为23:59:60是格林威治时间,我们是东八区,所有要增加8个小时。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/457302.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

position定位——让人又爱又恨的属性

关于css中的position这个属性,在使用的时候,有时很强大,有时又让人很无奈。 强大的时候,对于div中的一些小物件不方便使用margin或者padding的时候,给与position:absolute;再配备left、right、top和bottom,…

CentOS 6.8安装Python2.7.13

转载自:http://www.cnblogs.com/94YY/p/6224441.html查看当前系统中的 Python 版本python --version返回 Python 2.6.6 为正常。检查 CentOS 版本cat /etc/redhat-release返回 CentOS release 6.8 (Final) 为正常。安装所有的开发工具包yum groupinstall -y "D…

新安装数据库sqlserver2008r2,使用javaweb连接不上问题处理

鼠标右键【计算机】--》【管理】,打开界面如下: 选择自己数据库的实例名: 选择TCP/IP:右键【属性】,将所有TCP动态端口的【0】删掉,TCP端口设为1433;重启服务,即可连接。PS:不知道这…

vue 鼠标点击事件_VBA代码解决方案第115讲:点击鼠标实现精准控制触发事件的VBA代码第二方案...

大家好,我们今日继续讲解VBA代码解决方案的第115讲内容:工作表事件中,根据Target参数不同,实现精准控制触发事件的VBA代码第二方案。在上一讲中我们讲了利用Address的属性实现控制触发事件的方案,今日讲解第二方案&…

mysql注入5.0以上_[Injection]对MYSQL 5.0服务器以上版本注入

How to do a SQL Injection for MYSQL Server 5.01. Find a vulnerable add a ‘ at the end of the site example: news.php?id1 add a ‘ at the end of the 1 and see if you get a syntax error2. order by #–Keep upping the # until you get an error.3. union all sel…

动态规划(制表法)模板及应用

int cache[100][100] 初始化为全体为 -1,这样在 cache 中存储的可以是其他任意非负整数,也可以是布尔类型 0/1 (true/false),1. 模板 int cache[2500][2500];// 初始化为 -1,memset(cache, -1, sizeof(cach…

(翻译)31天Windows Phone学习-1-项目模板

今天在在外文网站Google关于Windows Phone 7的学习资料,无疑间Google到了Jeff Blankenburg的 31 Days of Windows Phone这个系列,感觉写的比较基础和浅显易懂,适合我这种入们级的人学习,所以准备拿来对Windows Phone 7的简单入门学…

Mssql 跨域查询

有数据库test1和数据库test2。其中test1中有表 table1、table2;test2 中有表 table1。三个表的字段都为为:id、xingming、shijian、shuliang。接下来我们就以上面的条件为例来介绍跨数据库查询和跨表 查询的方法。 SELECT * FROM OPENROWSET(sqloledb…

arch mysql日志位置_MySQL 日志文件与相关参数

1 、参数文件及mysql参数查看mysql 的 my.cnf 配置文件位置命令:>./bin/mysql --help | grep my.cnf查看mysql 的参数设置命令: mysql > show variables --显示所有参数; // show variables like log_error% 显示某匹配参数mysql > select se…

MOSS点滴(2):自定义Application Page

在MOSS中后台管理的页面都是Application Page,比如网站设置的页面(settings.aspx)就是典型的Application Page,它不能被Sharepoint Desiger定制。如果我们要修改只能手动的使用其他工具来修改,我们也可以添加Application Page,必须…

wpf使用webbrowser时提示当前页面脚本发生错误_win7系统internet脚本错误的应对办法...

最近有win7系统用户反馈,上网时遇到ie浏览器总会提示internet脚本错误的问题,不知如何解决,为此非常苦恼,那么win7系统提示internet脚本错误怎么办呢?就此问题,下面小编教你win7系统internet脚本错误的应对办法。有不…

JDK的目录结构及结构图

-bin目录: JDK开发工具的可执行文件 -lib目录: 开发工具使用的归档包文件 -jre: Java 运行时环境的根目录,包含Java虚拟机,运行时的类包和Java应用启动器, 但不包含开发环境中的开发工具 -demo: 含有源代码的程序示例 -include: 包含…

java9-1.类,抽象类,接口的综合小练习

1 /*2 教练和运动员案例(学生分析然后讲解)3 乒乓球运动员和篮球运动员。4 乒乓球教练和篮球教练。5 为了出国交流,跟乒乓球相关的人员都需要学习英语。6 请用所学知识:7 分析,这个案例中有哪些抽象类,哪些接…

java发送c语言结构体_C语言中结构体直接赋值?

在C语言中结构体变量之间可以进行赋值操作吗?简单结构体的赋值先说结论:一般来说,C语言中的结构体变量可以用另一个变量对其进行赋值或初始化。简单结构体(不包含指针成员)直接赋值没有问题。我们先下面一段代码:#include #includ…

Cacti 使用安装详解-企业级实例

Cacti是一套基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测图形分析工具。Cacti是通过 snmpget来获取数据,使用 RRDtool绘画图形,它提供了非常强大的数据和用户管理功能,可以指定每一个用户能查看树状结构、host以及任何一张图,还…

MySQL 插入数据时,中文乱码???问题的解决

在终端,mysql -u root -p 登录; show variables like character%; 来查看当前数据库的相关编码集。 client为客户端使用的字符集。connection为连接数据库的字符集设置类型,如果程序没有指明连接数据库使用的字符集类型则按照服务器端默认的字…

mysql时间间隔interval_MySQL DATEDIFF函数获取两个日期的时间间隔的方法

描述返回两个日期之间的时间间隔。语法DateDiff(interval, date1, date2 [ ,firstdayofweek[ , firstweekofyear]] )DateDiff 函数的语法有以下参数:参数描述interval必选。字符串表达式,表示用于计算 date1 和 date2 之间的时间间隔。有关数值&#xff…

linux教程:配置Tomcat开机启动

我们在linux下安装好tomcat之后;经常是需要配置到开机启动的; 这样的话就不需要我们每次重启linux服务器之后自己在登陆运行startup.sh文件启动tomcat了 本次的演示环境是在centos7中完成的;也在centos6.5中测试过;理论上所有版本…

操作系统内存分配算法_操作系统基础45-伙伴系统和slab内存分配

当在用户模式下运行进程请求额外内存时,从内核维护的空闲页帧列表上分配页面。这个列表通常使用页面置换算法来填充,如前所述,它很可能包含散布在物理内存中的空闲页面。也要记住,如果用户进程请求单个字节内存,那么就…

Sublime Text 3新建工程

1. 创建工程 Project > Add Folder to Project 这时在sidebar中将出现刚刚添加的文件目录,如果还需要添加其他目录,则重复这一操作即可。 2. 保存工程 Project > Save Project As 点击保存后Sublime Text将自动生成两个文件: 如图&…