从CPU占用98%悬崖边缘拉回服务器:SQL优化生存指南

最近用5台服务器部署一个在很多地方用过的项目,项目正式上线,一开始因为数据库某张表数据因为数据量少并没有发现服务器A的CPU持续飙高的问题,这时候五台服务器的CPU仍然很低,但最近两天的时间,数据量就达到了50万左右,在时候发现其中一个服务器A的CPU持续飙高在98%,其它服务器的CPU仍然处于5%左右,这时候就开始了排查问题。这里使用张三代表我。

步骤一

当发现服务器内存或CPU(这里二者简称它)飙高的时候,首先使用top命令,查看哪些进程出现大量占用它,就比如张三发现它占用很高,使用top命令,发现emqx和mysqlId进程占用它很高,又因为emqx是需要长连接而且服务器为多核,排除emqx问题。其次发现mysqlId进程占用CPU已经超过100%,又因为该项目使用的是rancher部署。【ps:这里我首先第一步怀疑的是自己写的代码有问题,但是看了一圈发现已经用redis减少二次对数据库的访问,所以排除代码问题】

步骤二

张三这时候进入到rancher界面,进入mysql容器执行命令【show full processlist;】,这条命令可以查看哪些mysql语句出现问题,这时候张三发现有一条语句重复出现,简单举例为【select 某些字段 from t_terminal where 某个字段='xxx'】,这时候张三是有疑惑的,因为在同样项目里在其他地方都是有对这个字段做索引的。

步骤三

尽管张三很疑惑,但还是不想猜测是不是没有索引的问题,直接找到对应表,打开设计表查看索引,果然没有对这个字段添加索引,后面加上执行添加索引,等了快1分钟完成添加索引,这时候重新看服务器A,等待约5分钟后,果然这次服务器A的CPU占用缓慢的从98%降到18%。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值