MySQL占用CPU过高处理
MySQL 突然 CPU 飙满,先别急着重启,按顺序查一遍。
登进去看谁在干活:
SHOW FULL PROCESSLIST;
-- State 是 Sending data、Copying to tmp table 的
-- 基本就是慢查询,记下 Id 干掉
KILL 12345;
没抓到就开慢查询日志:
SET GLOBAL slow_query_log = ON;
SET GLOBAL long_query_time = 2; -- 超过2秒就记下来
SET GLOBAL log_queries_not_using_indexes = ON;
日志一般在 data 目录下的 slow.log,翻出来看是哪条语句在拖后腿。
拿到语句用 EXPLAIN 过一遍,type 显示 ALL 就是全表扫描,加对应索引基本能压下去:
EXPLAIN SELECT * FROM user WHERE name = 'abc';
配置上也有坑,小皮面板里改 my.ini,innodb_buffer_pool_size 给太小,数据全走磁盘,CPU 跟着一起高。机器内存的六成左右比较合适,改完重启 MySQL 生效。
说点什么 0