mysql数据库cpu占比过高原因,解决方案与排查记录

mysql数据库cpu占比过高原因与解决方案

服务环境:

服务器8c16g,部署单体服务,mysql,redis等

问题描述

因商务推广,软件使用人数激增,服务器cpu占比100%,导致服务崩溃。

问题原因

因原程序数据库连接数远小于并发量,导致大量活跃连接连接到数据库中,致使数据库cpu占比过高。

排查记录

1.在发现服务器cpu爆掉后,先针对服务器进行排查,发现服务器连接数超标,远超预期值,带宽使用过高。

此时怀疑遭受攻击,咨询阿里云工程师后,回复服务器无植入木马,无后台程序。

2.通过对服务器中运行线程进行排查后,锁定数据库占用资源过高,此时将数据库迁入阿里云RDS4c8g,完成迁入后,RDScpu占用与活跃连接数过高。

3.此时排查到,某接口大量非正常调用,该接口调用后台查询功能

此时针对该接口进行限制,通过ng对该接口进行封禁,禁止其调用至后台。完成封禁后,RDScpu占用依旧100%。

4.与客户沟通时发现,客户进行了商务推广,通过oss后台探查到,生产apk包当日下载量过万,明确高并发实时,结束对服务器遭受攻击怀疑。

5.提交RDS工单,经工程师反馈,RDS活跃连接过高,正常活跃连接应为核心数*3(4c8gRDS正常活跃连接应为12)

此时发现,RDS的内存等占比并不高,只有cpu占比100%

6.明确RDScpu问题,查看程序当前连接数,发现当前服务连接上限为1000,此时将连接数增加至5000。

但cpu占比依旧100%。

7.将RDS检索出的慢查询与原数据库进行对比,原数据库1s出结果,RDS需要几十秒,依旧怀疑数据库连接问题

此时缩短超时时长至3s。此时业务可以正常运行,RDScpu压力明显下降,但导致有部分的sql超时

8.此时重新查询慢sql,针对性改进了几个异常sql,并逐渐调试连接超时时长至6s

此时业务正常运行,RDS慢sql查询清零。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值