Mariadb cpu 93% 问题
最近项目遇到cpu平均使用率93%
一、登录数据库服务查看具体情况
可以看到服务器负载很高,,mariadb CPU使用已达到接近380.4% (因为是8核,所以会有超过100%的情况)。如下图:
二、排查是否有耗时较长sql
在服务器上执行mysql -u root -p之后,输入show full processlist; 可以看到正在执行的语句
或
登录数据库,我这里用的是dbeaver,执行show full processlist;
发现确实有条慢sql:select *from pump_event_his where msg_id='';
分析:这张表有500万+数据,且走全表扫描,要3.84s
通过EXPLAIN分析SQL语句
explain
select *from pump_event_his where msg_id='';
解决方法:给msg_id加个索引,再次查询后16ms
验证效果:
a.查询时间大幅度缩短(再次执行查询语句)
b.CPU负载很轻(执行top脚本)
三、如果排查不出问题,再看看下面的情况
1.查看磁盘空间
df -h
2.查看linux服务器查看CPU逻辑个数(查出来是8)
cat /proc/cpuinfo
或
cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
或
cat /proc/cpuinfo |grep "processor"|wc -l
2.1查看每个CPU核心数
cat /proc/cpuinfo |grep "cores"
3.查看cpu使用率,按照CPU使用率倒序
top
4.查看该进程下所有线程,按大写P按cpu排序
top -Hp 337499
5.具体到某个线/进程的stack信息
pstack 337499
6.
跟踪某个pid的starce信息
strace -o output.txt -T -tt -e trace=all -p 337499