背景知识
RDS Serverless
RDS MySQL Serverless实例是阿里云针对中小型企业或个人开发者推出的一款数据库。提供了CPU、内存的实时弹性能力,构建云盘架构下的RDS MySQL产品新形态。实例不仅提供网络资源、命名空间、存储空间的垂直资源隔离能力,还提供计算资源按需计费的能力,具有资源用量低、简单易用、弹性灵活和价格低廉等优点,赋能用户面向业务峰谷时对计算能力进行快速且独立的扩缩要求,做到快速响应业务变化的同时,合理优化使用成本,进一步助力企业降本增效。 相比弹性扩容,Serverless实例具有以下优点:
打破固定资源付费的模式,做到真正负载与资源动态匹配的按量付费,可节省大量成本。
对高吞吐写入场景和高并发业务进行了设计优化,同时提供了弹性伸缩能力,适合业务数据量大、并具有典型的业务访问波峰波谷场景。
RDS MySQL Serverless资源与负载自适应
在Chromium网页浏览器打开新页签,粘贴并访问云数据库RDS控制台。
https://rdsnext.console.aliyun.com/
在左侧导航栏中,单击实例列表。在顶部菜单栏,选择资源所在地域。例如下图中,地域切换为华东1(杭州)。
在实例列表页面,单击实例ID,进入实例基本信息页面,在左侧导航栏单击数据库管理,可以创建数据库。
在左侧导航栏单击账号管理,可以创建数据库帐号,并完成授权。
为确保数据安全,云数据库RDS默认采用白名单策略,仅支持白名单内的客户端访问。您可以通过实验室云产品资源查看已经预创建用于访问测试的ECS实例内网IP地址信息,并将服务器IP添加至RDS白名单分组内,手动操作如下截图。
本实验使用ECS服务器通过RDS Serverless内网地址访问数据库,可以通过RDS实例的数据库连接页面,查看数据库的内网地址。
切换至Web Terminal。Web Terminal,即ECS终端,开始进行压力测试。
参考说明在本地修改如下命令中的部分参数取值(确保实例连接地址、数据库帐号、密码信息准确),将正确的命令字符串复制到ECS终端内执行,向数据库中插入数据
sysbench --threads=128 --time=240 --mysql_host=rm-xxxxxxx.rwlb.rds.aliyuncs.com --mysql-port=3306 --mysql-db=serverless --mysql-user=test_user --mysql-password=Password123 /usr/share/sysbench/oltp_read_write.lua --tables=10 --table_size=10000 --report-interval=1 prepare
其中:
sysbench:是 Sysbench 工具的命令行程序,用于进行性能测试。
--threads=128:表示要使用 128 个线程并发访问数据库。
--time=240:表示测试时间为 240 秒。
mysql_host:RDS Serverless版实例的内网地址。
mysql-port:RDS Serverless版实例的内网端口,默认为3306。
mysql-db:为RDS Serverless版实例创建的数据库名称。
mysql-user:为RDS Serverless版实例创建的账号。
mysql-password:为RDS Serverless版实例创建的账号的密码。
/usr/share/sysbench/oltp_read_write.lua:表示要执行的测试脚本路径。
--tables=10 --table-size=10000:表示要创建 10 个包含 10000 行数据的表。
--report-interval=1:表示每秒汇报一次测试结果。
prepare:表示准备阶段,也就是在测试之前进行数据的初始化和预热。
开始进行数据库压测。
sysbench --threads=128 --time=240 --histogram=on --mysql_host=rm-xxxxxxx.rwlb.rds.aliyuncs.com --mysql-port=3306 --mysql-db=serverless --mysql-user=test_user --mysql-password=Password123 /usr/share/sysbench/oltp_read_write.lua --report-interval=1 --tables=10 --table_size=10000 run
其中:
--histogram=on:表示生成直方图,用于统计结果的分布情况。
run:表示运行测试阶段,即执行读写操作。
可以看到过程如下
返回结果如下,表示压测已完成。
压测开始前,RCU保持在0.5。该阶段实例按照0.5 RCU进行收费。
开始压测后,RCU从0.5快速上升至1.3,该阶段实例按照0.5至1.3 RCU的变化进行动态收费。
压测结束后,RCU从1.3降回0.5。降回0.5后,实例又按照0.5 RCU进行收费。
调整RCU扩缩范围,观察RCU变化趋势。在基本信息页面的配置信息区域,单击调整弹性设置。
在调整弹性设置面板,可以将资源扩缩范围(RCU)的最小值从0.5改为1,上限调整为8,单击确定。
返回如下页面,等待运行状态变为运行中(多刷新几次),表示RCU扩缩完成。您可以继续观察在压测情况下,RCU变化。
返回命令行界面,再执行一次压力测试。