使用AmazonPerformance Insights分析RDS性能问题

由于没有类似oracle AWR等诊断报告和工具,Mysql性能调优一直是很头疼的问题,尤其是历史性能问题。有一个好的诊断工具,会在问题分析上,事半功倍。
本文介绍一下AWS RDS的辅助工具Performance Insight。当然,PI只是针对AWS RDS服务有效。

 Performance Insight官方文档链接:
https://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/USER_PerfInsights.html

如何启用PI:
https://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/USER_PerfInsights.Enabling.html

1. 启用Perf Insights

PI并不是一个独立存在的功能,是内嵌到RDS的一个功能,需要仔细寻找,才能发现。尤其是在中文console的模式下。注意:很多db.t2,db.t3 实例类型是不支持PI的,测试目的使用,也建议使用飞T系列机型

使用AmazonPerformance Insights分析RDS性能问题                                      

2. 往下翻,翻到这里


 使用AmazonPerformance Insights分析RDS性能问题

3. 中文版界面:

使用AmazonPerformance Insights分析RDS性能问题


4. 在导航窗格中,选择 Performance Insights

选择一个数据库实例。将为该数据库实例显示 Performance Insights 控制面板

 使用AmazonPerformance Insights分析RDS性能问题

5. Client正通过sysbench,插入测试数据。可以看到PI正在记录性能数据

使用AmazonPerformance Insights分析RDS性能问题

使用AmazonPerformance Insights分析RDS性能问题

6. 每一条SQL都可以点开,查看细节

使用AmazonPerformance Insights分析RDS性能问题

7. PI等待事件列表:
https://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Reference.html#AuroraMySQL.Reference.Waitevents

 

8. 其他类型数据库等待事件

·        有关所有 MariaDB 和 MySQL 等待事件的信息,请参阅 MySQL 文档中的等待事件摘要表

·        有关所有 PostgreSQL 等待事件的信息,请参阅 PostgreSQL 文档中的 PostgreSQL 等待事件

·        有关所有 Oracle 等待事件的信息,请参阅 Oracle 文档中的等待事件说明

·        有关所有 SQL Server 等待事件的信息,请参阅 SQL Server 文档中的等待类型

 

9. 如何使用PI进行性能分析,官方blog案例:
https://aws.amazon.com/cn/blogs/china/tuning-amazon-rds-for-mysql-with-performance-insights/

10. PI定价,如果按默认方式使用,不延长性能数据的存储,可以理解为免费使用。具体价格信息如下:
https://aws.amazon.com/cn/rds/performance-insights/pricing/

11. 下面是简单压测的情况下,收集的一部分信息:
可以看到,主要压力在binlog写入比较慢。

使用AmazonPerformance Insights分析RDS性能问题

使用AmazonPerformance Insights分析RDS性能问题

12. 针对上面的信息,简单调整下面参数,最大化降低IO写入的强度。

innodb_flush_log_at_trx_commit=0

innodb_flush_neighbors=0

innodb_flush_sync=0

sync_binlog=0

13. 调完之后,可以看到,再次测试,差别不大?为啥呢?因为我测试基本是接近90%的查询。实际写入压力不大。

使用AmazonPerformance Insights分析RDS性能问题使用AmazonPerformance Insights分析RDS性能问题

14. 更多Mysql性能指标,到官网查看
https://dev.mysql.com/doc/refman/5.6/en/performance-schema.html

总结,AWR也好,Performance Insight也罢,都是信息的收集器/工具。都需要深入理解数据库的运行机制和原理。才能在众多日志中,找到你需要关注的点,来辅助性能诊断分析。


此外,对于数据库的运行,还有以下几点经验总结,供参考: 

数据库负载监控

在日常数据库运行中,设定一个性能baseline,在超过baseline的情况下,根据负载情况,结合cloudwatch alarm,做进一步的告警设置

 

数据库性能分析

在新业务上线,数据库变更,或者业务高峰期等情况下。通过PI提供的wait event/Top SQL等信息,进一步分析,调优SQL以及相关数据库性能参数。提升数据库性能。

 

不规范SQL审计

一些开发人员,写的某些不规范的SQL,(没有where条件,select *),会严重消耗数据库资源。类似情况,通过PI的Top SQL/host/user等指标,分析出不规范SQL的来源,并通知相关责任人员。当然也可以将性能数据发送给cloudwatch,结合kinesis stream根据一定的规则,过滤出不规范的SQL,并自动通知相关责任人

 

 

 


上一篇:Amazon EC2 密钥对


下一篇:HTML5与移动端Web