发布于: Aug 19, 2022

性能测试指标是衡量我们设置参数优越性的重要参考。在确定了适用当前需求的参数之后,大家还需要选择最适合的缓存节点与集群拓扑。使用两个 large 缓存节点在性能方面是否一定优于单一 xlarge 缓存节点,有时候测试结截然相反。我们需要在生产环境中根据工作负载特性进行客户端应用程序配置,并运行基准性能测试。在基准测试当中应使用与生产场景一致的数据与流量模式,且运行周期不少于 14 天,以获取良好的基准测试结果。在获得初始基准测试结果之后,即可在工作负载测试当中引入节假日以及双十一等周期性因素,进一步完善基准性能测试结果的准确度,更紧密地反映工作负载的实际运作模式。根据测试结果,我们即可为 Redis 工作负载选择正确的节点大小与集群配置。

ElastiCache 已经使用开源的基准性能测试工具 rpc-perf 与 redis-benchmark 发布了测试结果的两篇博客。第一项基准测试比较了 R4 与优化型 R5 缓存节点之间的性能差异,我们将在后文中做出具体说明。若需了解更多详细信息,请参阅使用 Amazon EC2 M5 与 R5 实例增强 Amazon ELastiCache 性能。第二项基准测试在 R5 节点家族中进行,将带有 I/O 增强的 Redis 5.0.3 版本与不提供 I/O 增强的 Redis 5.0.0 版本进行比较。关于更多详细信息,请参阅使用 Amazon ElastiCache for Redis 提高应用程序性能并降低成本。

此上述两项基准测试的预设场景为 1470 万个唯一键、字符串值长度为 200 字节、80% 为 gets 操作、20% 为 sets 操作,且不使用命令管道。基准测试采用位于同一可用区的客户端实例。

下表所示,为基准测试中的具体设置。

工作负载属性

首轮基准测试中使用的相关属性值

次轮基准测试中使用的相关属性值

内存

1470 万个键,字符串值为 200 字节,总数据量为 2.9 GB。

无 TTL。

键中的值范围为 4 字节随机字符串(a 到 z,A 到 Z,0 到 9,62**4 = 1470 万个键)。

值为长度 200 字节的非随机/重新生成的字符串。

1470 万个键,字符串值为 200 字节,总数据量为 2.9  GB。

无 TTL。

键中的值范围为4字节随机字符串(a 到 z,A 到 Z,0 到 9)。

值为一条 200 字节、非随机/重新生成的字符串。

备用内存

5 GB;其中 25% 用于保存快照,缓存节点的内存容量至少应为 2.9 + 5 + 2.7 = 10.5  GB。

其中 25% 用于保存快照。

可用性

单一主节点,无辅助节点。

单一主节点,无辅助节点。

规模伸缩性

禁用集群模式。

每项测试中使用 20 个应用节点。每个应用节点根据实际节点类型开放可变数量的连接。对于规模较大的节点,开启的连接数更高(以增加吞吐量);较小的节点,开放的连接数也较低。具体连接数量,取决于 99 百分位延迟水平的前提下,能够开启连接的连接数。

禁用集群模式。

每项测试使用来自 15 个不同 EC2 主机的 800 条客户端连接。

数据

无热键。

20 个客户端连接。

随机生成各键。

无热键

800 个客户端连接。

随机生成各键。

基准测试结果表明,与大小类似的 R4 实例相比,最新的 R5 缓存节点每秒可多支持 59% 至 144% 的事务处理量。R5 缓存节点的平均延迟(第 50 百分位)与尾部延迟(第 99 百分位)较 R4 节点最多降低达 23%,平均延迟下探至 350 微秒。下表对此次测试中的数据进行了整理:

缓存节点大小

ElastiCache R4节点

ElastiCache优化型R5节点

ElastiCache R4到优化型R5节点的性能提升幅度

ElastiCache优化型R5(I/O增强)节点*

large

88,000 RPS

215,000 RPS

144%

xlarge

93,000 RPS

207,000 RPS

122%

238,800 RPS

2xlarge

107,000 RPS

217,000 RPS

102%

360,000 RPS

4xlarge

131,000 RPS

225,000 RPS

71%

453,000 RPS

8xlarge/12xlarge

128,000 RPS

247,000 RPS

92%

452,000 RPS

16xlarge/24xlarge

149,000 RPS

237,000 RPS

59%

434,000 RPS

* 仅适用于 ElasiCache for Redis 5.0.3 及更高版本

大家应定期为当前工作负载选择正确的节点大小与集群配置,包括在将工作负载迁移至 ElastiCache 之前。节点大小与集群配置调整绝不一劳永逸的工作,我们需要定期执行,并在大规模商业活动之前有针对性地做出调整。这不仅会帮助您的团队更好地应对流量规模变化与预期业务增长,同时也将让应用体系以无缝化方式为客户提供良好的服务体验。

相关文章