一. 简介
通过该性能测试报告,让用户了解到在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密切相关。
没有评论:
发表评论