RDS实例的性能测试报告----基础总结篇

1、  首先登录DT,云数据库,通过bic子系统定位到生产上RDS的主实例ID,复制主实例的id到杜康上具体查看RDS的性能问题

2、  杜康点击实例诊断,实例性能信息,筛选时间12-13 16:30-17:30 的性能信息

a)        
磁盘空间、磁盘空间详情:这段时间的数据是一条直线,空间状态都很稳定,没有性能问题。

MySQL RDS磁盘占用包括日志文件(binlog文件、错误日志等),数据文件(数据、索引文件),和一些其他文件(ibdata,logfile_0,临时文件等)

造成 MySQL 实例空间使用率过高,主要有如下四种原因:

Binlog 文件占用高。

数据文件占用高。

临时文件占用高。

系统文件占用高。

                   对应解决方法:

1、定期删除binlog,假如当前dml造成大量的binlog,可以通过RDS控制台即使清理binlog

2、通过truncate或者drop及时清除不需要的表

3、终止对应的回话

4、ibdata中undo占用高可以进行undo分离,或者进行数据转移;增加redo log file的大小和组数

b)        
IOPS:每秒读写的次数。现在是比较小的。在0-0.2之间。

如果IOPS比较高的话,有可能是以下原因:

1、实例内存满足不了缓存数据或排序等需要,导致产生大量的物理 IO。

2、查询执行效率低,扫描过多数据行。

解决方法:

1、查询是否有慢SQL,优化慢SQL,可以参考杜康的实例卡慢诊断的优化建议,或者登录DMS,通过诊断报告、优化来进行SQL优化

2、终止查询语句

3、通过show
processlist,或者DMS控制台、杜康等来kill查询回话id

c)        
MySQL内存使用率:基本上是一条直线,没有变化。因为MySQL有innodb_buffer_pool,大约为物理内存的50%-80%,内存使用率高一些,相对的性能也会提高

d)        
物理内存:直线保持基本无变化,物理内存就是实际的内存条的内存大小

e)        
连接数:当前连接数在1500左右,后来增高至6000左右。但是活跃连接数一直在个位数,说明现在的空闲连接数过多。总连接数超过参考值2000。出现严重问题。

数据库的连接一般是使用长连接,可能是应用侧的连接池初始连接数设置过高,应用启动后建立多个到RDS的空闲连接

解决方法:
1、长连接建议启用连接池的复用连接功能。

2、对于交互式连接和非交互式连接,建议修改相应的wait_timeout和interactive_timeout参数。(空闲时间超过指定的时间后,RDS的连接会主动关闭)。通过DT,RDS控制台,性能优化,参数设置中修改。

3、kill当前的空闲会话。

f)       线程状态:线程数跟连接数是对应的。此时也是连接的总线程数远大于活跃的线程数。

g)      备库延迟:目前主备延迟(slave-lag)为0.

         主备延迟产生的原因:

1、  主库产生非常大的binlog

a)      
主库上执行大量的dml语句

b)      
主库上执行大事务

c)      
主库上没有主键的全表扫描

2、  主库上执行ddl语句,时间过长

3、  备库上对myisam表长时间查询,阻塞主库的binlog同步语句

4、  备库实例的规格配置低,磁盘IO比较低

查看方法:

1、  首先查看备库的IOPS是否存在瓶颈

2、  备库show
processlist查看是否存在大事务

3、  主库的写入压力是否过高,dml语句是否过多

4、  只读节点执行 show
slave status \G,判断是否有 Waiting for table metadata lock;同时在主库排查下是否有DDL 操作

5、  只读节点执行 show
slave status \G,判断是否有 Waiting for table level lock; 同时通过 show full
processlist; 同时在主库检查下是否有长时间对 MyISAM 引擎表的查询

 

h)      QPS/TPS:QPS比较高,在90000左右,最高到达110000
。每秒的事务数在10000以上。正常,业务量比较高

         原因分析:

QPS比较高,每秒SQL的语句执行次数高,业务量上来,处于业务的高峰期,用户连接数增加,访问量增加。

如果QPS比较高,逻辑读不高,慢SQL也不是系统的瓶颈,QPS和cpu使用率的变化曲线吻合,这时候优化的余地就不高了,可以从实例规格、应用架构方面进行考虑。

如果QPS不高,查询执行效率低、执行时需要扫描大量表中数据、优化余地大,并且出现慢查询问题,QPS和CPU的变化曲线不吻合

如果QPS比较高,并且逻辑读也比较高,CPU的使用率增加,这时候可以优化优化相应的慢SQL,添加主实例的只读实例来缓解压力。

 

I )   cpu/mem的使用率:现在cpu的使用率在30%左右,不算高。内存的使用率基本平稳在30%左右,正常

         CPU的使用率高的原因:

系统执行应用提交查询(包括数据修改操作)时需要大量的逻 辑读,(逻辑 IO,执行查询所需访问的表的数据行数),需要消耗大量的 CPU 资源以维护从存储系统读取到内存中的数据一致性。造成逻辑读高的原因,很可能是异常SQL,扫描的数据行数过多导致。

                  

j)       慢SQL:慢SQL数量的变化曲线跟CPU的使用率的变化曲线吻合,在CPU使用率高的时候,慢SQL也跟着增加。可以通过杜康对产生的慢SQL进行优化。

                  

K)      全表扫描次数:随着业务量的增加,全表扫描的次数也随之增加。Sql要尽量避免全表扫描

主实例问题与建议:

QPS升高,业务量高的情况下,产生一些慢查询SQL,并且空闲连接数太多

    1、  连接数:连接数严重超过参考值,并且有过多的空闲线程。首先检查应用是否使用连接池,如果使用连接池,检查连接池的配置是否合理

    2、  优化慢SQL

a)

select id , inst_id , code , name_cn , aic_register_name ,
postcode , administrative_division , province_code , city_code , status ,
business_unit , org_level , org_category , manage_level , parent_org_code ,
distribution_org_flag , legal_entity_flag , address , approve_create_date ,
source_org_create_date , major , org_phase , main_category , detail_category ,
business_function , core , corporation_flag , department_flag , company_code ,
company_name , common_service , branch_emp_relationship , branch_urban_type ,
branch_func_type , branch_invest_type , create_date , modify_date ,
create_user_id , gmt_created , modify_user_id , gmt_modified , is_deleted from
bic_base_org

        

优化建议:此类SQL没有where条件,一定要添加where条件并且有合适的索引。这样会造成全表扫描影响系统性能。如果一定要执行建议在业务低峰期执行

b)

select count ( *
) as cnt from ( select id , jdpt_employee_code , td_employee_code ,
td_employee_name , td_org_code , td_org_name , td_phone_number , td_id_number ,
td_employee_status , td_employee_role , create_user_id , gmt_created ,
modify_user_id , gmt_modified , is_deleted from bic_td_jdpt_employee_relation
where :1 = :2 and is_deleted = :3 )

 

优化建议:此类SQL扫描行与发送行的比666184,并且查询使用了聚合函数,没有使用where条件。影响服务器性能,SQL锁行过多,可能影响其他更新语句。关联列上添加索引,子查询返回的行数尽量少

个人总结:

针对RDS的问题:CPU占有率持续高、QPS持续高、逻辑读一直高,用户连接线程增加,活跃线程数增加。

一般情况下:有慢SQL的情况,首先优化慢SQL,针对慢SQL主要注意查询多少数据和返回多少数据,如果查询的数据跟反回的数据都比较大,而且执行时间秒级别特别长,很有可能是慢SQL;没有慢SQL,或者慢SQL不是性能主导原因的话,可以考虑实例的规格配置和实例的架构,比如增加主实例的规格配置,增加只读实例缓解主实例的压力等。

时间: 2024-10-31 21:22:42

RDS实例的性能测试报告----基础总结篇的相关文章

性能测试报告(实例)

 上一篇博文主要通过两个例子让测试新手了解一下测试思想,和在做测试之前应该了解人几点,那么我们在如何完成一次完整的性能测试呢?        测试报告是一次完整性能测试的体现,所以,这里我给出一个完整的性能测试报告,相信通过这个报告,我们会整性能测试有个整体的了解,知道我们在以后做性能测试时需要做哪些工作.       注明:1.性能测试报告模板很多,这不是一个空洞的模板,是一个完整的测试报告.               2.由于商业原因,关于项目明,用XXX代替              

学习动态性能表 第五篇--V$SESSION

  学习动态性能表 第五篇--V$SESSION  在本视图中,每一个连接到数据库实例中的session都拥有一条记录.包括用户session及后台进程如DBWR,LGWR,arcchiver等等. V$SESSION中的常用列   V$SESSION是基础信息视图,用于找寻用户SID或SADDR.不过,它也有一些列会动态的变化,可用于检查用户.如例: SQL_HASH_VALUE,SQL_ADDRESS:这两列用于鉴别默认被session执行的SQL语句.如果为null或0,那就说明这个ses

性能优化系列总篇

本文为性能优化系列的总纲,主要介绍性能调优专题计划.何为性能问题.性能调优方式及前面介绍的数据库优化.布局优化.Java(Android)代码优化.网络优化具体对应的调优方式. 1.调优专题博客计划 目前性能优化专题已完成以下部分: 性能优化总纲--性能问题及性能调优方式 性能优化第四篇--移动网络优化 性能优化第三篇--Java(Android)代码优化性能优化第二篇--布局优化性能优化第一篇--数据库性能优化 性能优化实例   后续计划性能优化--诊断及工具(目前只有关于TraceView的

关于RDS实例CPU超过100%的分析

经常听见用户说自己的rds实例cpu超过100%,通常这种情况都是由于sql性能问题导致的,下面我用一则案例来分析: 用户实例zuowenwang反映cpu超过100%,实例偶尔出现卡住的现象: 1.原理:cpu消耗过大通常情况下都是有慢sql造成的,这里的慢sql包括全表扫描,扫描数据量过大,内存排序,磁盘排序,锁争用等待等: 2.表现现象sql执行状态为:sending data,Copying to tmp table,Copying to tmp table on disk,Sortin

《鸟哥的Linux 私房菜 基础学习篇(第三版)》——导读

前言 本书是最具知名度的Linux入门书<鸟哥的Linux私房菜基础学习篇>的最新版,全面而详细地介绍了Linux操作系统.全书分为5个部分:第一部分着重说明Linux的起源及功能,如何规划和安装Linux主机:第二部分介绍Linux的文件系统.文件.目录与磁盘的管理:第三部分介绍文字模式接口shell和管理系统的好帮手shell脚本,另外还介绍了文字编辑器vi和vim的使用方法:第四部分介绍了对于系统安全非常重要的Linux账号的管理,以及主机系统与程序的管理,如查看进程.任务分配和作业管理

《鸟哥的Linux 私房菜 基础学习篇(第三版)》——0.5 重点回顾

0.5 重点回顾 鸟哥的Linux 私房菜 基础学习篇(第三版) ◆ 计算机的定义为:"接受用户输入指令与数据,经由中央处理器的数据与逻辑单元运算处理后,以产生或存储成有用的信息". ◆ 计算机的五大单元包括输入单元.输出单元.CPU内部的控制单元.算术逻辑单元与内存五大部分. ◆ 数据会流进/流出内存是CPU所发布的控制命令,而CPU实际要处理的数据则完全来自于内存. ◆ CPU依设计理念主要分为精简指令集(RISC)与复杂指令集(CISC)系统. ◆ 关于CPU的频率部分,外频指的

《鸟哥的Linux 私房菜 基础学习篇(第三版)》——1.2 Torvalds的Linux开发

1.2 Torvalds的Linux开发 鸟哥的Linux 私房菜 基础学习篇(第三版) 我们前面一节当中,提到了UNIX的历史,也提到了Linux是由芬兰人Torvalds所开发的.那么为何托瓦兹可以开发Linux呢?凭空想象而来的,还是有什么渊源?这里我们就来谈一谈! 1.2.1 Minix Linus Torvalds(托瓦兹, 1969年出生)的外祖父是赫尔辛基大学的统计学家,他的外祖父为了让自己的小孙子能够学点东西,所以从小就将托瓦兹带到身边来管理一些微计算机.在这个时期,托瓦兹接触了

基础总结篇之一:Activity生命周期[转]

from:http://blog.csdn.net/liuhe688/article/details/6733407 基础总结篇之一:Activity生命周期 子曰:溫故而知新,可以為師矣.<論語> 学习技术也一样,对于技术文档或者经典的技术书籍来说,指望看一遍就完全掌握,那基本不大可能,所以我们需要经常回过头再仔细研读几遍,以领悟到作者的思想精髓. 近来回顾了一下关于Activity的生命周期,参看了相关书籍和官方文档,也有了不小的收获,对于以前的认知有了很大程度上的改善,在这里和大家分享一

《鸟哥的Linux 私房菜 基础学习篇(第三版)》——0.2 个人计算机架构与接口设备

0.2 个人计算机架构与接口设备 鸟哥的Linux 私房菜 基础学习篇(第三版) 一般消费者常说的计算机通常指的就是x86的个人计算机架构,因此我们有必要来了解一下这个架构的各个组件.事实上,Linux最早在发展的时候,就是依据个人计算机的架构来发展的,所以,真的需要了解一下.另外,因为两大主流x86开发商(Intel, AMD)的CPU架构并不兼容,而且设计理念也有所区别,所以两大主流CPU所需要的主板芯片组设计也就不太相同.目前最新的主板架构主要如图0-4所示. 就如同前一节提到的,整个主板