MySQL SYS CPU高的案例分析(二)
后面又做了补充测试,增加了每秒context switch的监控,以及SQL执行时各步骤消耗时间的监控。
【测试现象一】
启用1000个并发线程的压测程序,保持压测程序持续运行,保持innodb_spin_wait_delay默认值不变
在10:17:14秒将innodb_spin_wait_delay值从默认值6调整为18,看到sys从40%降到20%

TPS从1.7W增加到2W

context switch从82W降到78W

【测试现象二】
开启SQL执行时各步骤消耗时间的监控,重点关注stage/sql/update步骤的时间消耗(TIMER_WAIT的单位是picoseconds),下面是截取了每个场景下执行接近平均时间的SQL过程采样。
1、下图是单句insert执行时情况,stage/sql/update时间约0.077豪秒

2、下图是innodb_spin_wait_delay=6时,TPS约在1.7W时insert执行时情况,stage/sql/update时间约32毫秒

3、下图是innodb_spin_wait_delay=18时,TPS约在2W时insert执行时情况,stage/sql/update时间约1.5毫秒

【测试结论】
1 、关于加大spin_wait_delay的理解,增大spin_wait_delay会让线程在进入os wait之前再多spin一段时间,增加时间会增加获取到rw-lock的概率,减少CPU空转的次数,当spin wait的循环次数在1-30之间获取到rw-lock时,则不会进入os wait,这种情况下减少了context switch的次数。从而减少了sys CPU的消耗,表现出来的现象是SQL执行时间变短,TPS处理能力上升。
2、innodb_spin_wait_delay的单位,是100MHZ的奔腾处理器处理1毫秒的时间,默认innodb_spin_wait_delay配置成6,表示最多在100MHZ的奔腾处理器上自旋6毫秒。
现在CPU是按照GHZ来计算的(测试是基于Intel(R) Xeon(R) CPU E5-2630 v4 @ 2.20GHz 40核的CPU处理器),默认值相对变的很短,建议可以将这个配置值适当调大。
3、MySQL高并发写入出现瓶颈,确实不像SQL Server的Latch等待类型那么明显。我们需要结合TPS、CPU、IO、运行进程等情况来综合定位。

MySQL SYS CPU高的案例分析(二)的更多相关文章
- MySQL SYS CPU高的案例分析(一)
原文:MySQL SYS CPU高的案例分析(一) [现象] 最近关注MySQL CPU告警的问题时,发现有一种场景,有一些服务器最近都较频繁的出现CPU告警,其中的现象是 SYS CPU占比较高. ...
- 【原创】MySQL CPU %sys高的案例分析(二)
后面又做了补充测试,增加了每秒context switch的监控,以及SQL执行时各步骤消耗时间的监控. [测试现象一] 启用1000个并发线程的压测程序,保持压测程序持续运行,保持innodb_sp ...
- MySQL CPU %sys 高的案例分析(三)
[现象] 最近有台服务器晚上CPU告警,系统抓取的故障期间的snapshot显示CPU %sys较高,同时context switch在300K以上. 是否过高的context switch引起的%s ...
- 【原创】MySQL CPU %sys高的案例分析(一)
[现象] 最近关注MySQL CPU告警的问题时,发现有一种场景,有一些服务器最近都较频繁的出现CPU告警,其中的现象是 SYS CPU占比较高. 下面的截图来源于“MySQL CPU报警”采集的文件 ...
- 【MySQL】排序原理与案例分析
前言 排序是数据库中的一个基本功能,MySQL也不例外.用户通过Order by语句即能达到将指定的结果集排序的目的,其实不仅仅是Order by语句,Group by语句,Distinct语句都会隐 ...
- CPU 上下文切换及案例分析
什么是CPU 上下文 我们都知道,Linux是一个多任务操作系统,它远支持大于CPU数量的任务同时运行,当然,这些任务实际上并不是真的在同时运行,而是因为系统在很短时间内,将CPU轮流分配给他们,造成 ...
- Java Mysql连接池配置和案例分析--超时异常和处理
前言: 最近在开发服务的时候, 发现服务只要一段时间不用, 下次首次访问总是失败. 该问题影响虽不大, 但终究影响用户体验. 观察日志后发现, mysql连接因长时间空闲而被关闭, 使用时没有死链检测 ...
- MySQL服务器 IO 100%的案例分析
[问题] 有台MySQL 5.6.21的数据库实例以写入为主,IO %util接近100% 写入IOPS很高 [分析过程] 1.通过iotop工具可以看到当前IO消耗最高的mysql线程 2.查看线程 ...
- MySQL服务器发生OOM的案例分析
[问题] 有一台MySQL5.6.21的服务器发生OOM,分析下来与多种因素有关 [分析过程] 1.服务器物理内存相对热点数据文件偏小,62G物理内存+8G的SWAP,数据文件大小约550G 触发OO ...
随机推荐
- tomcat总体架构
Tomcat 总体结构图 从上图中可以看出Tomcat的心脏是两个组件:Connector 和 Container,关于这两个组件将在后面详细介绍.Connector 组件是可以被替换,这样可以提供给 ...
- IQueryFielter接口
IQueryFilter基于属性查询过滤数据.需要定义一个where子句.可以指定要返回值的字段列表.如果没有指定列,将返回所有值.当需要根据属性值和属性的关系过滤数据时,使用该接口. 成员 AddF ...
- 是男人就下100层【第四层】——Crazy贪吃蛇(3)
上一篇<是男人就下100层[第四层]--Crazy贪吃蛇(2)>实现了贪吃蛇绕着屏幕四周移动,这一篇我们来完成贪吃蛇的所有功能. 一.随机产生苹果 private void addAppl ...
- 提高编程能力的7条建议 分类: T_TALENT 2014-04-12 10:41 294人阅读 评论(0) 收藏
编程是非常酷的一件事情,但是在酷炫的背后它对很多人来说还是挺难的.很多人在学习编程之初就被困难击败了. 当你不熟悉编程的时候,你可能会觉得无从下手,并且不知道如何运用学到的知识.只要你通过了这一困难的 ...
- sql server操作远程数据库
--连接远程数据库 EXEC sp_addlinkedserver '服务器ip',N'SQL Server' --登录远程服务器 EXEC sp_addlinkedsrvlogin '服务器ip', ...
- Xshell Update
http://blog.netsarang.com/1629/xshell-update-5-0-1332/ Xshell Update (5.0.1332) By Alan Kim Thursday ...
- Java8获取参数名及Idea/Eclipse/Maven配置
在Java8之前,代码编译为class文件后,方法参数的类型固定,但是方法名称会丢失,方法名称会变成arg0.arg1.....而现在,在Java8开始可以在class文件中保留参数名,这就给反射带来 ...
- [CSS] Get up and running with CSS Grid Layout
We’ll discuss the display values pertinent to CSS Grid Layout – grid, inline-grid, and subgrid. Then ...
- Qt 打开安卓相冊选择图片并获取图片的本地路径
Qt 打开安卓相冊选择图片并获取图片的本地路径 过程例如以下: 通过 Intent 打开安卓的系统相冊. 推荐使用 QAndroidJniObject::getStaticObjectField 获取 ...
- JM-2 jQuery Mobile的使用(多看学习视频)
JM-2 jQuery Mobile的使用(多看学习视频) 一.总结 一句话总结:前端框架的使用全都一个样,本质都是css和js,引入文件也是这些.使用都是看手册,超简单. 1.jQuery Mobi ...