MySQL 服务器 sys CPU usage高 问题分析
最近碰到一个MySQL服务器操作系统内核有关的问题,作为DBA,不光要具备数据库方面的知识,还需要了解运行环境下的排查的一些方式和手段。
高配物理服务器,MySQL日常运行并发也在20以内。但发现cpu的sys使用比较高,并发上升的时候sys值不断上升,最后导致qps,tps下降。严重的时候存在穷住情况发生。
分析思路
需要先了解cpu的sys是什么?什么情况下MySQL会影响cpu?按照这个思路进行排查。
- %sy(sys)
表示CPU 在内核态运行的时间百分比(不包括中断),就是说系统进程消耗CPU 时间,通常内核态 CPU 越低越好,否则表示系统存在某些瓶颈。比如:I/O频繁操作,网络包大量传输,core输出 等情况下。 - mysql对于cpu的影响:
并发太高,连接数满很多线程需要等待,mysql参数控制并发度,大事务 等。
问题分析
指标分析
1.监控sys CPU情况: 日常维持在10%~20%,最高能到到50%
3.MySQL运行情况当时运行并发数: 3个线程并行运行
5.MySQL限制并发: 无限制
6.错误日志,系统日志: 无异常信息
从上面整个mysql的运行情况来说,比较耐人寻味。因为除了反馈sys高,其他指标属于正常范围。
7.使用perf top 和 sar 分析
发现SYS CPU利用率到达79%时,后台运行_reset_isolation_suitable 突然达到98%
- mov rdi,rax说明:
将rax寄存器的的数据传送到rdi寄存器,但是rax寄存器的数据本身不破坏 - reset_isolation_suitable:
内存碎片管理
搜索相关知识点,大部分都指向内核内存管理有关系。基本肯定是内存的碎片管理导致sys高。
原理分析
1.知识点
CPU指中央处理器,中央处理器的功效主要为处理指令、执行操作、控制时间、处理数据。CPU和内存之间的架构分为两种:
2.内存架构
物理内存由node,zone,page三级结构来构成。