2014年9月26日星期五

RDS for MySQL各规格性能测试报告

一. 简介
 
通过该性能测试报告,让用户了解到在sysbench标准测试模型下,每种规格的RDS的性能表现,供用户做容量选型参考。
 
 
二. 名词解释
 
1. 规格:RDS为用户提供的不同性能的套餐,以内存大小为衡量标准,比如240M内存的RDS实例。
2. 工作集数据:测试的数据量大小,并且在测试中这些数据都会频繁被使用。
3. 并发数:测试线程的数量
4. 行数:测试模型下,该实例所拥有的所有表格的总行数。
5. 表数量:该测试模型下表的总数,每表行数=行数/表数
6. QPS:  表示每秒执行的SQL语句的次数包括select,insert,delete等。 
7. async(Asynchronous Replication,异步):MySQL复制中传输日志的一种模式,MySQL默认支持的就是这种模式,最为通用,在不影响主库性能的前提下尽可能地保证数据的安全。
8. semi-sync(Semisynchronous Replication,半同步): 跟async一样,是MySQL复制中传输日志的另外一种模式,叫半同步复制,在RDS (MySQL5.5)中引入并支持。在这种模式下数据的安全性得到了最大保障,但会损失一定的写入性能。
 
 
三. 测试模型
 
测试工具:sysbench 0.5
测试流程:通过对每种规格的实例进行压测,得出每种规格的RDS实例的性能表现
测试模型:采用OLTP模型(读写比例为7:3)和InnoDB引擎。大致命令如下:
 
常用命令参数:
/usr/local/sysbench-0.5/bin/sysbench 
     --mysql-host=test.mysql.rds.aliyuncs.com           #数据库host
     --mysql-port=3306                                              #数据库端口
     --mysql-user=your_username                             #数据库用户名
     --mysql-password=your_password                      #数据库密码
     --mysql-db=your_db_for_test                              #数据库名
     --oltp-tables-count=10                        #模拟的表的个数,规格越高该值越大
     --oltp-table-size=6000000                  #模拟的每张表的行数,规格越高该值越大
     --num-threads=50                              #模拟的并发数量,规格越高该值越大
     --max-requests=100000000               #最大请求次数
     --max-time=20                           #最大测试时间(与--max-requests只要有一个超过,则退出)
     --report-interval=1                     #每1秒打印一次当前的QPS等值
     --test=/tmp/sysbench-0.5/sysbench/tests/db/oltp.lua    #选用的测试脚本(lua),此脚本可以从sysbench-0.5源代码文件目录下找
     [prepare | run | cleanup]           #prepare准备数据,run执行测试,cleanup清理数据
 
 
四. 每种RDS for MySQL规格的资源配额
 
 
 
五. 每种规格的测试数据
 
 
注: 24000M规格由于数据库性能容量非常高,一个sysbench客户无法压满RDS实例,因此我们采用了两个sysbench客户端来同时进行压测,并且两个sysbench对不同的数据库和表格进行压测。
 
 
六. QPS测试结果
 
 
具体每种规格的RDS for MySQL的QPS性能曲线如下图:
 
 
 
 
 
 
 
 
七. MySQL 5.5半同步与异步性能对比
 
从理论上分析MySQL 5.5的半同步的写性能会比异步的写性能差不少。但是为什么从上面的测试结果来看相差并不大呢? 那是因为上面的测试模型是读写比例为7:3,写入不大的情况下,半同步的影响较小。 为此我们将进行纯insert压测来比较半同步和异步的性能。
测试模型与上面7:3的读写测试模型类似,只是把oltp.lua脚本换成insert.lua脚本。也就是把“--test=/tmp/sysbench-0.5/sysbench/tests/db/oltp.lua“参数换成“—test=/tmp/sysbench-0.5/sysbench/tests/db/insert.lua”。
 
下面这张图是纯insert压测,半同步和异步的性能曲线,从中可以看出:
1) 使用半同步模式,每秒插入的记录数变化不大,稳定在5300条左右。主要是因为半同步的数据同步出现瓶颈。
2) 使用异步模式,随着规格的增加,性能越来越好,每秒插入的记录数跟实例的IOPS密切相关。
 
 

没有评论:

发表评论