一目了然 | 数据库实例性能调优利器:Performance Insights Posted 2021-04-05 阿里云数据库
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一目了然 | 数据库实例性能调优利器: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 (平均活跃会话数)与RDS数据库实例MaxVcores量化对比来作为系统瓶颈的判断依据?
我们的理由是:
首先,RDS数据库系统中,我们认为最为重要的资源是CPU资源,因为其他所有资源都需要CPU来调度。
其次,CPU的并发处理能力,与CPU Cores的数量相关。 假设在相当小的一个时间切片上,CPU对活跃会话(AS)处理能力瓶颈就是CPU Cores数量。 即: CPU最多同时能够处理与Cores数量均等的活跃会话数。
因此,我们可以用RDS数据库系统中,平均活跃会话(AAS)数与MaxVcores数的量化对比,做为判定系统是否存在瓶颈的重要依据。
阿里云RDS Performance Insights能够帮助我们的用户快速方便、直接了当的发现数据库实例负载,以及导致性能问题的SQL语句。
目前Performance Insights页面以三个方面承载我们的产品思路:
实时AAS变化趋势图:
数据库实例中平均活跃会话(Average Active Sessions)实时变化趋势。
阿里云RDS Performance Insights关键性能指标的趋势图,可以从宏观的角度帮助客户发现实例负载的来源,比如:
到底是CPU资源吃紧,IOPS过高?
还是网络开销过大,又或是活跃连接数打满?
从关键资源利用率趋势图部分,我们已经大致清楚了实例负载的来源。
接下来,带着这个问题,我们去看看目前实例中活跃会话的资源等待情况。
那么,此时我们可以来到页面的第二个部分:
实时AAS变化趋势图。
从Performance Insights中的实时AAS变化趋势图中,我们可以非常清晰的发现RDS实例中的资源等待情况。
比如上图,我们可以分析出以下重要信息:
❗
时间10:25 - 10:57之间,平均活跃会话远远大于实例CPU Cores数量24(几个点低于CPU Cores),说明数据库已经面临比较大的系统瓶颈。
❗
从AAS变化趋势图来看,几乎是在等待蓝色标示的资源,即CPU资源。
由此可见,我们使用Performance Insights中的实时AAS变化趋势图,可以非常清晰简单,直接了当的找到用户RDS实例负载来源,资源等待于何时、何处,以及变化规律。
从Performance Insights中的实时AAS变化趋势图,掌握了实例负载来源,资源等待及变化规律,接下来用户理所应当最关心的一个问题便是: 到底导致这些实例负载的具体查询语句是什么? 哪个用户导致的? 哪个连接主机客户端? 哪个应用数据库? 这一系列的问题我们可以使用多维负载信息部分来解答。
从以上截图的下半部分,我们可以方便的找出与AAS变化趋势关联的负载对应的SQL查询语句,以及每个语句对AAS的贡献的对比情况。
当然,您也可以根据自己的需要切换为Waits,Users,Hosts,Commands,Databases和Status,分别表示资源等待,用户,客户端主机,命令类型,数据库,进程状态等维度查看。
了解阿里云RDS Performance Insights能够做什么以后,让我们来看Performance Insights的设计架构图,简要概括为五个字: 四层两链路。
RDS Performance Insights四层架构从上往下,依次为:
❗应用层:
前端用户可见,承载着我们产品的思路和逻辑,是终端用户可见的产品呈现。
❗服务层:
各系统 API 协调工作,为应用层提供应用数据服务,我们产品主要的业务逻辑处理层。
❗数据层:
数据实时处理平台,统计汇总,数据扁平化,实时计算,最终持久化到元数据库中,为服务层提供数据。
❗采集层:
从 RDS 实例中,采集有价值的基础数据,为数据层输入数据。
从数据链路来看Performance Insights,有两条链路:
❗访问链路:数据至上而下请求访问,至下而上的数据返回。
❗采集链路:数据从生产到消费,从统计汇总到最终落库整个生命过程。
以下两个典型案例,来看看Performance Insights如何一目了然,一针见血的帮助我们诊断分析数据库系统瓶颈,资源等待和SQL查询语句。
在我们多年的专家服务过程中,遇到最多的用户问题便是“为什么我的CPU 100%了”,来看看Performance Insights是如何庖丁解牛这个问题。
以下是该 RDS 实例, Performance Insights 页面截图。
我们从 Performance Insights 页面截图分析出以下几个问题: