mysql占用服务器cpu过高的原因以及解决办法
登陆Mysql:
mysql -p<port> -u<user> -p<pwd>
mysql> show processlist;
show processlist 命令详解:
processlist命令的输出结果显示了有哪些线程在运行,可以帮助识别出有问题的查询语句。
下面是MYSQL占用CPU高处理的一个例子,希望对遇到类似问题的朋友们有点启发。一般来说MYQL占用CPU高,多半是数据库查询代码问题,查询数据库过多。所以一方面要精简代码,另一方面最好对频繁使用的代码设置索引。
今天早上起来 机器报警 一查负载一直都在4以上
top了一下 发现 mysql 稳居 第一 而且相当稳定 我擦 重启一下mysql不行 mysql> show processlist;一下 发现xxx网站有两条 查询语句 一直 在列,我擦 该站 也就30多万条记录 量也不大 不可能是机器性能问题
忽然 记得以前在网上看过说是 tmp_table_size值太小会造成这种情况; 于是mysql -pxxx -e "show variables;" >tmp 一看是默认的32M(显示出来的是字节数) 于是翁就开心的改了起来 增加到256 重启 mysql 。。结果很失望
于是 从索引入手:
增加两条索引
mysql> alter table bbs_message add index parentid(parent_id);
alter table bbs_message add index chaxunid(board_id,parent_id);
最后查看一下索引结果:
详细出处参考:http://www.jb51.net/article/34862.htm