项目迁移后发生数据库拥堵的问题定位

项目12月14日凌晨从AWS迁移到了阿里云,15号下午13:58分开始报首页没有内容的问题。

查看项目网元内存占用在40%左右,CPU更低,整体正常。

查看项目网元日志,有如下报错:

通常这种错误是网元处理超时,网关主动断开,或用户主动放弃。

也就是说从网元看,并没有发现数据库连接的问题,但是存在大量响应时间超过1秒的请求:

 从阿里云数据库监控平台看,存在慢查询,并且CPU达到了100%:

分析慢查询问题的同时,继续根据网关日志分析是否是由于请求暴增导致。

 出现问题前的1个小时内的请求数量跟前一天同时段的相比并没有太大的变化。

接近20分钟后,数据库并没有自动恢复,因此重启数据库,但是重启后CPU很快就又达到了100%。

运维查看show processlist结果,发现80%以上都是上面的第一个SQL语句处于Copying to tmp table on disk状态,尝试修改tmp_table_size(从2M调整到16M)后问题解决。

数据库恢复后执行上述慢查询语句,实际并不慢,不到1秒。

综合上述过程分析,不是请求暴增导致,而应该不是慢查询导致,后来调整思路,由于mysql CPU是突然飙升到100%,而不是慢慢累积,因此联系数据库专家进一步分析。

最后得出结论,CPU飙升是因为部分查询返回数据量大于tmp_table_size,导致数据库操作在磁盘进行,大大降低了处理速度,数据库进入低速模式(但是并没有死)。

将AWS数据库参数跟阿里云参数做了全面对比排查,没有发现其他参数存在不一致。

总结:

1、如果发现数据库CPU很快飙升到100%就马上联系数据库专家进行分析,不要紧盯着业务进行分析。

2、服务器迁移后,服务器配置都需要保持一致,甚至要留有冗余,包括网元分配的实例树、网元CPU、内存配置,数据库内存,数据库重要参数(如tmp_table_size)等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值