排查过程:
1.使用top命令观察,确定是mysqld导致还是其他原因
1.top
2.o
3.COMMAND=<service_name>
2.如果是mysqld导致,进入mysql,show processlist;查看session情况,确定是不是有消耗资源的sql在运行
3.找出消耗资源的sql,看看执行计划是否准确,索引是否缺失,数据量是否太大
+----+------+-----------+----+---------+------+----------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+------+-----------+----+---------+------+----------+------------------+
| 4 | root | localhost | db1| Query | 0 | executing| SELECT * FROM tbl|
| 5 | app | localhost | db2| Sleep | 2 | | NULL |
+----+------+-----------+----+---------+------+----------+------------------+
4.kill掉线程,同时观察是否cpu使用率下降
5.进行相应的调整(加索引、改sql等)
6.重新跑这些sql
7.也有可能是突然有大量session连接导致cpu飙升,具体情况分析连接数为何激增,在做出相应的调整,比如限制连接数