一个什么都学的老程序员  
C#和PHP学习历程

今天使用 MobaXterml 连接上一台物联网的Linux服务器的使用,发现该服务器的CPU使用率一直在100%左右。

使用 top 命令发现Mysql占用了大量的CPU

用数据库工具 Navicat premiumroot 的身份连接数据库,执行查询语句:

show PROCESSLIST;

发现主要是这条查询语句导致Mysql占用CPU的资源:

 

于是采取以下步骤进行优化:

1.使用字段`contect_id`, `come_from`建立组合索引;

2.暂停物联网服务,使用查询语句:TRUNCATE  Table c_clients ,重置了这张表。(这个命名不要随便执行,会删除所有数据,并重置表,ID会从1重新开始,我这张表只保存当前在线的客户端数据,所以无所谓)。

这使用重新查看CPU占用情况,发现已经下降到了60%左右的占用率。

 

 继续深入优化:

1.使用查询语句:show variables like 'slow_query%',查看Mysql是否开启了慢日志,以及慢日志的存储位置;

 

2.得到慢日志存储位置后,在 中使用Linux命令: cat -n  /usr/local/mysql/data/slow_1.log | tail -n 100,查看慢日志的最后100行记录(由于日志太大,最好不要一次性全部打开,否有有可能占满CPU和内存导致服务器死机)

 

 

 利用Mysql慢日志分析,如果是select语句比较慢,那需要针对性的建立索引。如果是insert慢,可以适当的删除索引。如果是update慢,可以根据实际情况,删除或添加索引。

最后优化完,CPU回归了平静。

 

posted on 2020-10-28 17:58  剑落飘香  阅读(2562)  评论(0编辑  收藏  举报