Linux环境mysql cpu过高问题排查

Linux环境mysql cpu过高问题排查

今早同事说系统很卡,自己操作了一下,确实变的很慢,登录mysql客户端,统计了一下客户调用返回速度,比预期慢了三倍,于是排查开始:

思路

首先登录服务器,top命令查看系统资源使用情况,内存是够的,但是mysql的cpu使用率已经飚到了700%+,问了下客户,他们有一批存量数据,开启了多线程跑我们系统的接口,此时系统是不能停止的。

此时排查具体问题。

进入mysql,开启慢日志set global slow_query_log=’ON’;在慢日志里面查看具体的sql,发现基本都是t_xxx_data_detail这个表的操作。在mysql下持续刷了一会show processlist;发现很多send data也都是t_xxx_data_detail这个表的操作,把sql拷贝到navicat上,用explain执行,发现没有索引,建立联合索引,再执行explain跑一遍发现走索引了。

其他执行慢的sql能加索引的也执行相同操作。

登录服务器,top查看mysql的cpu使用率在慢慢降低,登录系统,发现页面的打开速度快了不少,统计客户调用返回时间,从3秒+降到1.8秒左右了,勉强可以用了。

后期优化

加索引解决了一部分问题,还有的sql没法加索引,在慢日志里面找出来,该优化的优化下,优化不了的,能异步的都扔到消息队列里面去操作,同时看能不能把数据放到缓存里面。花了一周的时间把某些业务的逻辑重新理了一遍,有冗余保存及当初设计不合理的数据库操作全给去掉了,某些不算重要的记录表的引擎改为myisam,提高该表的读写速度。改好之后发布到测试环境,开启50个线程同时调用接口,反复测试返回速度无太大影响。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值