一目了然 | 数据库实例性能调优利器:Performance Insights

Posted 阿里云数据库

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一目了然 | 数据库实例性能调优利器:Performance Insights相关的知识,希望对你有一定的参考价值。

1

Performance Insights是什么

一目了然 | 数据库实例性能调优利器:Performance Insights
阿里云RDS Performance Insights 是RDS CloudDBA产品一项专注于用户数据库实例性能调优、负载监控和关联分析的利器,以简单直观的方式帮助用户迅速评估数据库负载,资源等待的源头和对应SQL查询语句,以此来指导用户在何时、何处、采取何种行动进行数据性能优化。
几个名词解释
Performance Insights: 中文翻译过来叫性能洞察。
Active Session (AS) RDS数据库系统中,活跃的会话数量。
Average Active Session (AAS) :一段时间内,RDS数据库中平均活跃会话数量。
Max Vcores: RDS数据库实例最大可以使用到的CPU Cores数量。


AAS MaxVcores 来量化系统瓶颈

在文章开始,我们希望能够把一个非常重要的问题解释清楚:为什么可以使用AAS (平均活跃会话数)与RDS数据库实例MaxVcores量化对比来作为系统瓶颈的判断依据?

我们的理由是:

首先,RDS数据库系统中,我们认为最为重要的资源是CPU资源,因为其他所有资源都需要CPU来调度。

其次,CPU的并发处理能力,与CPU Cores的数量相关。假设在相当小的一个时间切片上,CPU对活跃会话(AS)处理能力瓶颈就是CPU Cores数量。即:CPU最多同时能够处理与Cores数量均等的活跃会话数。

因此,我们可以用RDS数据库系统中,平均活跃会话(AAS)数与MaxVcores数的量化对比,做为判定系统是否存在瓶颈的重要依据。

2

Performance Insights能做什么
阿里云RDS Performance Insights能够帮助我们的用户快速方便、直接了当的发现数据库实例负载,以及导致性能问题的SQL语句。 目前Performance Insights页面以三个方面承载我们的产品思路:
关键性能指标趋势图 关键资源利用率变化趋势图。
实时AAS变化趋势图: 数据库实例中平均活跃会话(Average Active Sessions)实时变化趋势。
多维负载信息 展示多维度实例负载信息。


关键资源利用率趋势图
阿里云RDS Performance Insights关键性能指标的趋势图,可以从宏观的角度帮助客户发现实例负载的来源,比如: 到底是CPU资源吃紧,IOPS过高? 还是网络开销过大,又或是活跃连接数打满?
一目了然 | 数据库实例性能调优利器:Performance Insights
实时AAS变化趋势图
从关键资源利用率趋势图部分,我们已经大致清楚了实例负载的来源。 接下来,带着这个问题,我们去看看目前实例中活跃会话的资源等待情况。 那么,此时我们可以来到页面的第二个部分: 实时AAS变化趋势图。
一目了然 | 数据库实例性能调优利器:Performance Insights
从Performance Insights中的实时AAS变化趋势图中,我们可以非常清晰的发现RDS实例中的资源等待情况。 比如上图,我们可以分析出以下重要信息:
时间10:25 - 10:57之间,平均活跃会话远远大于实例CPU Cores数量24(几个点低于CPU Cores),说明数据库已经面临比较大的系统瓶颈。
从AAS变化趋势图来看,几乎是在等待蓝色标示的资源,即CPU资源。
由此可见,我们使用Performance Insights中的实时AAS变化趋势图,可以非常清晰简单,直接了当的找到用户RDS实例负载来源,资源等待于何时、何处,以及变化规律。
多维度负载详情

从Performance Insights中的实时AAS变化趋势图,掌握了实例负载来源,资源等待及变化规律,接下来用户理所应当最关心的一个问题便是:到底导致这些实例负载的具体查询语句是什么?哪个用户导致的?哪个连接主机客户端?哪个应用数据库?这一系列的问题我们可以使用多维负载信息部分来解答。

一目了然 | 数据库实例性能调优利器:Performance Insights
从以上截图的下半部分,我们可以方便的找出与AAS变化趋势关联的负载对应的SQL查询语句,以及每个语句对AAS的贡献的对比情况。 当然,您也可以根据自己的需要切换为Waits,Users,Hosts,Commands,Databases和Status,分别表示资源等待,用户,客户端主机,命令类型,数据库,进程状态等维度查看。

3

Performance Insights架构

了解阿里云RDS Performance Insights能够做什么以后,让我们来看Performance Insights的设计架构图,简要概括为五个字:四层两链路。

一目了然 | 数据库实例性能调优利器:Performance Insights

四层架构
RDS Performance Insights四层架构从上往下,依次为:
❗应用层: 前端用户可见,承载着我们产品的思路和逻辑,是终端用户可见的产品呈现。
❗服务层: 各系统API协调工作,为应用层提供应用数据服务,我们产品主要的业务逻辑处理层。
❗数据层: 数据实时处理平台,统计汇总,数据扁平化,实时计算,最终持久化到元数据库中,为服务层提供数据。
❗采集层: RDS实例中,采集有价值的基础数据,为数据层输入数据。
两条链路
从数据链路来看Performance Insights,有两条链路:
❗访问链路:数据至上而下请求访问,至下而上的数据返回。
❗采集链路:数据从生产到消费,从统计汇总到最终落库整个生命过程。

4

典型案例
以下两个典型案例,来看看Performance Insights如何一目了然,一针见血的帮助我们诊断分析数据库系统瓶颈,资源等待和SQL查询语句。
❗为什么CPU 100%
❗XXX时间点SQL查询变慢了
为什么CPU 100%了?
在我们多年的专家服务过程中,遇到最多的用户问题便是“为什么我的CPU 100%了”,来看看Performance Insights是如何庖丁解牛这个问题。
Performance Insights截图
以下是该RDS实例,Performance Insights页面截图。
一目了然 | 数据库实例性能调优利器:Performance Insights
分析
我们从Performance Insights页面截图分析出以下几个问题:

以上是关于一目了然 | 数据库实例性能调优利器:Performance Insights的主要内容,如果未能解决你的问题,请参考以下文章

SQL调优和性能监控利器SQL Monitor

MySQL 安装利器---Sandbox

超牛逼的性能调优利器 — 火焰图

Java 性能调优必备利器——JMH

超牛逼的性能调优利器 — 火焰图

块存储监控与服务压测调优利器-EBS Lens发布