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

今天早上在正式服部署了新代码,过了一段时间,服务器的负载告警,cpu使用率告警,登录服务器查询,发现是mysql导致cpu的使用率过高,于是show processlist查询了一下,看到有很多线程处于sending data和lock的状态中,都是select某个数据库的某张表的操作。

于是将sending data的那些sql语句复制执行了一遍,发现执行它们的时间太长,然后又explain分析了一下。

有条select的条件中没有主键和索引,由于查询条件中那个字段具有唯一性,所以和开发商量将这个字段加入索引,果然根据这个字段select的sql都不会处于sending data的状态了;

有条select的条件中是有根据主键查询的,但是也是处于sending data状态,不过这张表用的是复合主键,但是复合主键中有索引的只是第一个字段,第二个字段是无索引的,所以查询速度慢了很多。

根据主键第一字段和第二字段测试查询的结果如下:

所以需要另外为第二字段增加一个索引。

关于复合主键的索引问题可以参考下面这篇文章

http://www.oschina.net/question/12_38140

增加索引后,cpu的使用率下降了许多,但是还是存在问题的。所以我们先回退了版本,在测试服再做下并发测试,将问题完全解决再部署到正式服。在测试服开启慢查询日志,将所有执行效率低的sql优化下。

慢查询日志开启的文章

http://www.cnblogs.com/echo-something/archive/2012/07/25/2607771.html

mysql5.1以上版本才支持方法2,动态开启或关闭日志功能。

时间: 2024-11-07 10:49:42

一次mysql占用cpu高的处理过程的相关文章

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

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

关于mysql占用CPU过高,问题解决

使用SHOW PROCESSLIST 查看 原因: 使用了 一个触发器 不断的去删除日志,保证每个用户的日志只有10条 去掉之后,CPU使用率从97% 降到了 17%. 利用show columns from 表名 查看 和 SQL 对比 查出 根本原因 : 删除条件里面 有一个 没有加索引,添加了索引后CPU在6%到40%波动,由于CPU单核,又加了很多触发器,所以去掉了这个 会频繁被触发的触发器. lower_case_table_names=1可以忽略表名大小写 SHOW VARIABLE

【经验之谈】mysql占用CPU利用率过高的问题

前段时间Zabbix上出现自告警,报Escalators进程压力过大,增大Escalators参数,等改到80-90才不告警了,就觉得不对劲. 到设备上top一下发现mysql把95%上的CPU都吃掉了 上mysql去show processlist; 发现有大量sleep进程,show status like 'Thread%':看到连接数只有138. 修改my.cnf文件,将max_connections降低到300, 发现没有改善,百度到可能是全局读写timeout时间没有优化的问题 修改

关于csrss.exe和winlogon.exe进程多、占用CPU高的解决办法

原地址 http://blog.sina.com.cn/s/blog_912e77480101nuif.html 最近VPS的CPU一直处在100%左右,后台管理上去经常打不开,后来发现上远程都要好半天才反映过来,看到任务管理器有多个winlogon.exe进程和占用CPU高,百度查了下,说是有人在破解远程,最后按教程修改3389端口和改密码,重启后CPU直接降下来了,winlogon.exe进程也只有一个,一切恢复正常. 我太懒了,之前知道winlogon.exe进程多,但没这几天严重,今天查

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

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

查看JAVA占用CPU高的线程日志

# 1. 查看主进程占用cpu高 top # 1647 java # 2. 按照线程占用cpu由高到低进行排查: ps -mp 1647 -o THREAD,tid,time | sort -rn |head -6 # USER %CPU PRI SCNT WCHAN USER SYSTEM TID TIME # root 1.6 - - - - - - 00:02:07 # root 0.1 19 - futex_ - - 1767 00:00:11 # root 0.1 19 - futex

解决Mysql占用cpu,内存高故障案例

故障: 晚上大概7点钟左右,收到播放中心投诉,说视频播放很慢,加载很久不出来.一开始,哥以为是tomcat服务又挂了.所以到tomcat服务器上查看下catalina.out输出日志.却没发现任务错误信息. 分析: 想了想,视频加载慢,会不会是数据库问题呢?果断上mysql数据库(从库)看下top如下:   PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND    37258 mysql    20   0 17.

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

MySQL服务性能监控分析与优化是永恒的主题,做为性能测试人员有时也要站在DBA角度出发进行适当分析与优化,这也是性能测试人员能长期生存发展之路.而资源的使用监控分析才是性能故障分析的根本首要任务.在数据库服务器内部,如果执行的操作会严重受到内存.CPU或磁盘吞吐量中任何一个的影响,则可以将它视为瓶颈. 因此理解服务器如何运行,资源损耗在哪些方面对问题进行故障诊断是非常有价值有意义的活动,具体案例如下. 这些监控分析优化方法等细节我们在品课学院性能实战课堂中都会以实战方式进行实操性测试监控分析实

记一次mogodb占用cpu高问题

公司服务器上安装了contly,是一个开源的node.js项目,用于统计手机app使用情况,后端数据储存使用的mongodb,使用的时候经常发现mongodb占用cpu非常高,打到了210%的爆表值 top - 13:42:39 up 308 days, 23:01, 2 users, load average: 2.84, 2.96, 2.93 Tasks: 209 total, 1 running, 208 sleeping, 0 stopped, 0 zombie %Cpu(s): 59.