发布于: 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 之前。节点大小与集群配置调整绝不一劳永逸的工作,我们需要定期执行,并在大规模商业活动之前有针对性地做出调整。这不仅会帮助您的团队更好地应对流量规模变化与预期业务增长,同时也将让应用体系以无缝化方式为客户提供良好的服务体验。
相关文章