系统RDSCPU打满问题分析报告

琉璃2年前技术文章647

1. 问题概述

2023年9月01日09点13分,玳数运维组侧接收到业务侧反馈系统响应缓慢,与此同时运维群内新系统RDS 发出CPU打满的告警,告警通知如下:

image.png 

2. 问题分析

a. 数据库会话管理核查

玳数运维组侧登录阿里云控制台查看数据库会话管理,通过数据库自治服务的一键诊断功能,核实到活跃会话较多,现象为CPU使用率打满。

b. kill查询会话

玳数运维组侧接收业务反馈,拍地业务比较紧急,可以迅速kill查询会话,保障数据库系统稳定运行。从9:00-9:30时间段内连接数迅速上升,波动较高至730左右

image.png 

SQL该时间段内迅速增长,单SQL执行次数较多,如下图:

image.png 


该慢
SQL单次执行耗时在1.233秒左右,主要为执行次数影响。

image.png 

同业务侧拿到数据库账号信息,Kill查询会话后,CPU使用率逐步下降,拍地之前恢复至正常水位。

image.png 

c. 核查会话增长原因

玳数运维组侧进一步核实程序侧是否有异常调用,导致数据库侧访问频次增加。程序访问通过WAF接入,再到后端SLB,由于WAF侧未开启访问日志,查看SLB访问日志,业务侧反馈对应SQL的业务访问接口:查询异常时间段内该接口的日志条数,30分钟内该接口个接口被调用了2970次

 

对比昨天同时间段内该接口的调用频次,昨天同时间段30min内日志是1,397条,如下图: 

可以看到今天异常时间段内调用次数明显增多。导出该时间段内日志明细,查看访问来源IP,统计访问最多的来源ip,访问次数:102次,该来源地址在上城区,计算访问频次:一分钟内调用在三次左右。与此同时其他来源IP也在发起调用,导致总体并发量比较高,业务接口调用频繁。

 

来源IP查询如下图所示:

image.png 

image.png 

3. 问题总结

结合RDS慢SQL日志、程序侧服务日志及业务侧反馈情况定位问题的根本原因在于单位时间内相应接口调用频次较高,数据库CPU打满。

a. 改进措施

为了防止类似问题再次发生,玳数科技运维组提出了以下改进措施:

建议

1、程序侧做好对接口访问的相关限制,单位时间内限制对接口的访问频次,避免大并发下CPU资源使用完毕,导致数据库服务异常。

2、对数据库进行读写业务分离,实现读取能力的弹性扩展,分担数据库压力。

3、新系统RDS开启SQL洞察和审计,更好地获取SQL语句的具体信息、排查性能问题、识别高危风险来。

4、WAF侧开启日志功能,方便业务异常时刻能快速对采集到的日志数据进行查询与分析,定位问题原因。


相关文章

 MySQL优化器特性(九)行数评估

MySQL优化器特性(九)行数评估

查询的行数在成本计算中起了很重要的作用:1、row_evaluate_cost和行数直接相关2、需要访问多少索引页面,和行数直接相关。根据页面大小和平均索引条目长度计算每个索引页面的记录数,根据记录数...

Redis 主从同步

Redis 主从同步

前言在分布式系统中为了解决单点问题,通常会把数据复制到多个副本部署到其它机器,满足故障恢复和负载均衡需求。Redis 也提供了复制功能,实现相同数据多个 Redis 副本。本篇文章介绍如何配置 Red...

MySQL 二进制安装

MySQL 二进制安装

一、前言● 介绍:业务环境安装 MySQL 一般都会通过二进制来安装,今天就记录一下业务环境二进制安装 MySQL 过程。● 环境:CentOS 7 安装:MySQL 5.7+二、安装 MySQL1....

企业级大数据安全架构(十)

企业级大数据安全架构(十)

一、DBeaver连接Kerberos认证下的hive1.配置本地hosts因为Kerberos认证过程及集群服务中,很多是以主机名的形式进行访问的,所以工作机要设置hosts. 域名映射,我们通过部...

MySQL运维实战之ProxySQL(9.10)proxysql监控

MySQL运维实战之ProxySQL(9.10)proxysql监控

stats数据库从stats数据库中可以查到proxysql一些内部组件的状态,如内存使用情况、连接池信息、会话信息、SQL执行状态等。mysql> show tables&...

PG的统计信息(三)

1.3 数据分布类统计信息1.3.1 pg_stats通过对pg_stats的查询,可以查看每个字段的数据分析统计信息,类似SQL Server的直方图,为优化器选择最佳执行计划提供依据,pg_sta...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。