MYSQL数据库服务CPU高问题分析与优化

MySQL服务性能监控分析与优化是永恒的主题,做为性能测试人员有时也要站在DBA角度出发进行适当分析与优化,这也是性能测试人员能长期生存发展之路。而资源的使用监控分析才是性能故障分析的根本首要任务。在数据库服务器内部,如果执行的操作会严重受到内存、CPU或磁盘吞吐量中任何一个的影响,则可以将它视为瓶颈。

因此理解服务器如何运行,资源损耗在哪些方面对问题进行故障诊断是非常有价值有意义的活动,具体案例如下。

这些监控分析优化方法等细节我们在品课学院性能实战课堂中都会以实战方式进行实操性测试监控分析实践理解学习,特别是资源利用问题花费在什么地方,课堂中都会操作项目案例模拟讲解,来提高学员对性能监控分析的认知。

1、  识别瓶颈

在分析性能问题时,首先需要识别瓶颈,然后将该瓶颈解决。产生瓶颈的原因通常有两类,一类是由于错误的配置,另一类是达到了软件或硬件的性能或可伸缩性的限制,例如SQL语法问题。

2、  识别CPU瓶颈

前面章节我们有讲到《MYSQL数据库服务磁盘IO高问题分析与优化》有提到IO 问题故障分析与解决方案,而本章主要是讲解CPU 问题定位分析与解决方案。

CPU时间开销是最昂贵、最宝贵的服务器资源,并且系统总体性能往往对CPU使用率非常敏感。例如,用户经常可以察觉到高CPU使用率的状况,就是响应时间慢,超时现象等。

3、瓶颈根源分析

MYSQL自身经常会导致高CPU使用率的情形,包括执行差效率的查询、哈希连接或多表合并连接、参数设置不合理等。

4、  案例说明如下

测试场景,在压力测试某银行系统登录退出时,因用户登录需要查询对应的客户相关交易信息等,而需要涉及SQL查询,这时LR 并发100用户时,响应时间5秒多,人工登录发现出现超时错误信息,这时通过top命令监控到CPU使用率超过90%,如下图:

4.1 前端页面响应超时:

4.2 数据库服务器资源使用率

4.3 LR响应时间指标分析

4.4 MYSQL 语法分析

在监控过程中发现若干SQL语法都是走全表扫描方式,导致响应时间和CPU使用率偏高,其中一个SQL如下

4.6、  优化方法

这时对表的需要检索字段建立索引后各项性能指标如下图

这时 同样是100用户并发,如下图建立索引前后响应时间走势图:

SQL 检索数据路径:

发现虽然建立索引,响应时间降低到2秒以下,但是数据库服务器cpu资源使用率仍然70%以上,偏高,这时发现缓存命中率不高,针对query_cache适当调整大小后,mysql数据库cpu使用率讲到30%以下和响应时间1秒以下,如下图。

响应时间指标如下:

原文地址:http://blog.51cto.com/372550/2089965

时间: 2024-08-04 02:33:15

MYSQL数据库服务CPU高问题分析与优化的相关文章

MySQL SYS CPU高的案例分析(一)

原文:MySQL SYS CPU高的案例分析(一) [现象] 最近关注MySQL CPU告警的问题时,发现有一种场景,有一些服务器最近都较频繁的出现CPU告警,其中的现象是 SYS CPU占比较高. 下面的截图来源于“MySQL CPU报警”采集的文件 [问题分析] 可以分析出这服务器CPU升高的原因是由于表的高并发写入引起.优化方案通常是通知开发停止写入或降低写入频率. 究竟是什么原因导致高并发写入时CPU sys的占比这么高. 从采集的[Perf Stat]指标看到CPU有大量消耗是集中ke

一次mysql占用cpu高的处理过程

今天早上在正式服部署了新代码,过了一段时间,服务器的负载告警,cpu使用率告警,登录服务器查询,发现是mysql导致cpu的使用率过高,于是show processlist查询了一下,看到有很多线程处于sending data和lock的状态中,都是select某个数据库的某张表的操作. 于是将sending data的那些sql语句复制执行了一遍,发现执行它们的时间太长,然后又explain分析了一下. 有条select的条件中没有主键和索引,由于查询条件中那个字段具有唯一性,所以和开发商量将

MYSQL数据库服务磁盘IO高问题分析与优化

压力测试过程中,如果因为资源使用瓶颈等问题引发最直接性能问题是业务交易响应时间偏大,TPS逐渐降低等.而问题定位分析通常情况下,最优先排查的是监控服务器资源利用率,例如先用TOP 或者nmon等查看CPU.内存使用情况,然后在排查IO问题,例如网络IO.磁盘IO的问题. 如果是磁盘IO问题,一般问题是SQL语法问题.MYSQL参数配置问题.服务器自身硬件瓶颈导致IOPS吞吐率问题. 今天主要是讲解MYSQL 参数配置不合理导致在高并发下磁盘IO问题,而MYSQL整体监控优化方案后面会整理<如何轻

生产环境服务CPU高问题分析

问题描述: 现网个别时候会出现CPU突然飙高的现象,飙高后不能恢复正常. 分析过程: CPU飙高后抓dump,最好本机看,其它机器看dump可能需要下载服务运行机器的sos,clr ? ? 0:000> !threadpool The version of SOS does not match the version of CLR you are debugging.??Please load the matching version of SOS for the version of CLR

高规格虚机 sys cpu高现场分析工具箱

导言 线上运行环境有时候会遇到cpu 飙升的场景,一般来讲对于多核的虚机,一个常见猝发场景就是高并发导致,核多并发高时,syscall会在锁这块 sys 消耗高,当然只有猜测不行,下面就列出了几个常见捉鬼工具 ,后半部分会拿一个示例. 工具箱 1.nmon promes 分析 尤其是promes ,比较推荐用起来,提供比较立体的系统级别监控 2.perf 分析 perf top -a -G perf top -a -e cs -G perf record -g -p 14778 -e cycle

mysql负载飙高原因分析

某些进程/服务消耗更多CPU资源(服务响应更多请求或存在某些应用瓶颈):发生比较严重的swap(可用物理内存不足):发生比较严重的中断(因为SSD或网络的原因发生中断):磁盘I/O比较慢(会导致CPU一直等待磁盘I/O请求): 绝对不要因表数据量小,sql语句随便写都行,随便join都不会出现性能瓶颈,决不能有这种思想.尽量避免join表 join表笛卡尔积如果要join表一定要把where条件写全,安全起见最好加个limit.一次请求读写的数据量太大,导致磁盘I/O读写值较大,例如一个SQL里

Mysql占用过高CPU时的优化手段

Mysql占用CPU过高的时候,该从哪些方面下手进行优化?占用CPU过高,可以做如下考虑:1)一般来讲,排除高并发的因素,还是要找到导致你CPU过高的哪几条在执行的SQL,show processlist语句,查找负荷最重的SQL语句,优化该SQL,比如适当建立某字段的索引:2)打开慢查询日志,将那些执行时间过长且占用资源过多的SQL拿来进行explain分析,导致CPU过高,多数是GroupBy.OrderBy排序问题所导致,然后慢慢进行优化改进.比如优化insert语句.优化group by

sqlserver 索引优化 CPU占用过高 执行分析 服务器检查

原文:sqlserver 索引优化 CPU占用过高 执行分析 服务器检查 1. 管理公司一台服务器,上面放的东西挺多的.有一天有个哥们告诉我现在程序卡的厉害.我给他说,是时候读点优化的书了.别一天到晚没个正形,现在写的程序卡的跑不动.他说我本地 是好好的,跑的很快.我说别扯那么多没用的,服务器不比你的本子强得多.待洒家上去看看.不看不知道一看吓一跳,CPU占用在95上下.开个程序是不卡,可整点有些时间是卡的一匹.这就令人很难受了. 本来服务器上也没有什么,就一个网站和几个数据库.那一个个分析吧,

一:MySQL数据库的性能的影响分析及其优化

MySQL数据库的性能的影响分析及其优化 MySQL数据库的性能的影响 一. 服务器的硬件的限制 二. 服务器所使用的操作系统 三. 服务器的所配置的参数设置不同 四. 数据库存储引擎的选择 五. 数据库的参数配置的不同 六. (重点)数据库的结构的设计和SQL语句 1). 服务器的配置和设置(cpu和可用的内存的大小) 1.网络和I/O资源 2.cpu的主频和核心的数量的选择 (对于密集型的应用应该优先考虑主频高的cpu) (对于并发量大的应用优先考虑的多核的cpu) 3.磁盘的配置和选择 (