使用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系列机型
2. 往下翻,翻到这里
3. 中文版界面:
4. 在导航窗格中,选择 Performance Insights。
选择一个数据库实例。将为该数据库实例显示 Performance Insights 控制面板
5. Client正通过sysbench,插入测试数据。可以看到PI正在记录性能数据
6. 每一条SQL都可以点开,查看细节
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写入比较慢。
12. 针对上面的信息,简单调整下面参数,最大化降低IO写入的强度。
innodb_flush_log_at_trx_commit=0
innodb_flush_neighbors=0
innodb_flush_sync=0
sync_binlog=0
13. 调完之后,可以看到,再次测试,差别不大?为啥呢?因为我测试基本是接近90%的查询。实际写入压力不大。
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,并自动通知相关责任人
标签:RDS,数据库,AmazonPerformance,amazon,https,SQL,PI,com,Insights 来源: https://blog.51cto.com/hsbxxl/2784366