记一次mysql 导致的CPU使用率过高问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了记一次mysql 导致的CPU使用率过高问题相关的知识,希望对你有一定的参考价值。
前几天更新完程序,测试功能时,发现应用登录非常慢,以为是应用有问题,但是等待较长一段时间后发现应用登录是ok的。检查应用日志,发现提示数据池已满,无法创建更多的连接。然后赶紧登录数据库检查,
1、top查看发现mysql进程cpu使用率竟然高达1300%多,我勒个去,这是什么鬼!
2、登录mysql查看线程
# show processlist
发现大量的从应用服务器过来的连接,而且全部是Query状态。想着看看慢查询日志有哪些SQL运行时间较长,导致连接一直保持Query状态。
3、开启慢查询日志
# show variables like "%slow%"; --查看慢查询日志是否开启
# set global slow_query_log=on; --开启慢查询日志
4、开启慢查询日志一段时间后查看慢查询日志
妈呀,sql运行时间基本上都是在150s左右,这应用能快起来才真是神了。这SQL也是没谁了~
那现在咋办呢?建索引?优化sql语句?
想想优化sql语句也是远水救不了近火了,后续再对sql语句优化吧。先试试创建索引看看吧,创建索引之后发现cpu使用率降下来了,应用登录也正常了。
5、用mysql自带慢查询日志分析工具mysqldumpslow看看有哪些语句较为严重
以上是关于记一次mysql 导致的CPU使用率过高问题的主要内容,如果未能解决你的问题,请参考以下文章
记一次线上Java程序导致服务器CPU占用率过高的问题排除过程
记一次线上Java程序导致服务器CPU占用率过高的问题排除过程