@auther 张念磊
@date 2021-10-01
今天闲来无事,写篇文章记录下本周遇到的一个生产问题。
一、现象
有一个服务每三十秒跑批一次来统计数据,按理说数据应该是每30秒刷新一次,但用户反馈数据10多分钟才能改变一次。
登录到生产的服务器,数据库服务单个线程的CPU占用率为 400%左右,这肯定是不健康的。
且该线程为mysql,基本可以断定:出现了慢查询。
二、定位慢查询
找来我们的运维工程师,打开数据库的慢查询
打开数据库慢查询三步:
-- 0. 进入mysql
mysql -uroot -pxxxx
-- 1. 将slow_query_log全局变量设为on
set global slow_query_log='ON';
-- 2. 设置慢查询日志存放的路径
set global slow_log_file='/usr/local/mysql/data/show.log';
-- 3. 查询超过n秒就记录
set global long_query_time=3;
设置的是3s,出来一堆慢查询,运维老师随便截了几个丢到群里。