此服务器为一个从库,用于数据的导出业务,服务器配置较低,日常的慢sql也比较多。
上午11点左右cpu异常告警,如下图所示,
cpu使用率突增到50%,下午2点左右突增到100% ,登录服务器top命令查看cpu升高的服务为mysql,如下图
首先怀疑是慢sql造成的cpu升高,登录mysql,
SELECT * FROM information_schema.processlist
WHERE COMMAND<>'Sleep' AND TIME >5 AND info IS NOT NULL;
多次捕捉进程信息,没有内容,
查看慢sql监控,慢sql没有告警,慢sql的阈值为2s,慢sql数量与日常无异,查看slow.log中的慢sql,为日常业务统计sql,执行时间都在5s以内,没有新增的慢sql,
慢sql统计
又查看连接数、QPS均无异常,
连接数
QPS
排查陷入僵局,查看sniffer-agent的审计内容,
发现有个sql在2分钟内执行了7000+次,每次执行时间300ms,至此找到原因,联系对应开发人员确认,他在开多线程下载数据,cpu为8核,他开了8线程,导致cpu 100%。
没有安装审计功能,无法查看具体sql的可以在cpu升高时打开general_log,
set global general log=on;
分析具体sql,
QPS没有异常升高,怀疑是因为mysql.statsvp.Questions监控获j取时间为1m,被稀释了,待研究。