如何为适用于 Redis 的 ElastiCache 集群选择正确的实例类型和大小?

1 分钟阅读
0

如何为我的工作负载选择 Amazon ElastiCache for Redis 节点大小和集群配置以获得最佳性能?

简短描述

为您的 ElastiCache 集群和您的集群配置选择节点大小时,请记住以下几点:

  • 我需要多少 CPU 处理能力?
  • 我需要存储多少数据?
  • 所选节点大小是否能够处理预期的网络流量?
  • 我应该选择哪种集群模式?

解决方法

我需要多少 CPU 处理能力?

查看节点选项

查看可用的节点选项。由于 Redis 是一个单线程进程,因此将 CPU 添加到节点时性能不会提高。节点上单个 CPU 内核的功率决定了性能。每种节点类型都有自己的基准性能。与以前的版本相比,当前一代节点类型以更低的成本提供了更多的内存和计算能力。例如,与 M4 和 R4 相比,M5 和 R5 实例以更低的成本提供了更好的性能

基准测试您的节点

最佳做法是对节点进行基准测试,以估算实例在预期工作负载上的执行情况。为此,请使用 redis-benchmark 实用程序。有关基准建议的信息,请参阅在调整 Amazon ElastiCache Redis 集群大小时需要考虑的五个工作负载特征

执行基准测试时,请模拟应用程序流量的工作负载,包括请求数、密钥分发和项目大小。监控 Amazon CloudWatch 的内存使用率、处理器利用率、缓存命中率和缓存未命中率指标。您可能会注意到,您的集群没有您想要的命中率,或者密钥被删除的频率太高。如果出现这种情况,请选择具有较大 CPU 和内存规格的不同节点大小。

由于 Redis 是单线程的,因此将报告的 CPU 使用率乘以 CPU 内核数得出实际使用量。例如,报告使用率为 20% 的四核 CPU 实际上是 Redis 以 80% 利用率运行的那个核心。

我需要存储多少数据?

要估算存储需求,请将要缓存的平均项目大小乘以缓存中同时存在的项目数。要估算项目大小,请序列化缓存项目,计算字符数,然后将此总和除以集群中的分片数。

记住您的 Redis 版本的 reserved-memory 或 reserved-memory-percent 组参数。此参数保留内存以供非数据使用,例如系统备份和一般系统稳定性。默认情况下,此值设置为最大内存的 25%。在确定哪个大小足以容纳数据时,请将此因素考虑在内。

例如,cache.r4.large 有 12.3 GB 的可用内存可供使用。由于您的预留内存设置为 25%,因此该节点最多可存储 9.2 GB(12.3 x 75%)的数据。其余部分保留用于其他 Redis 功能和系统稳定性。

我选择的节点类型能否处理预期的网络流量?

确保您选择的节点类型能够在未达到网络最大值的情况下处理正在推送的数据量。

要确定 ElastiCache 节点上的最大吞吐量,请在类似的 Amazon Elastic Compute Cloud (Amazon EC2) 节点上运行基准测试。

例如,对于 cache.m4.large 节点,请在 EC2 m4.large 实例上运行测试。运行此测试可以找到节点的理论最大吞吐量。它还估算了您可以在客户端和 Redis 节点之间推送多少带宽。最大限度地使用网络的一个常见的负面影响是在带宽图上出现一条平坦的线,这表明您正在最大限度地使用硬件。有关使用 iperf3 衡量实例间网络性能的说明,请参阅如何对同一 Amazon VPC 中的 Amazon EC2 Linux 实例之间的网络吞吐量进行基准测试?

由于 ElastiCache 节点与对应的 EC2 节点类似,请查看针对每种实例类型列出的网络性能。如果要最大化节点的网络吞吐量,则可能需要选择下一个节点大小以获得更好的网络性能。例如,一个 m4.large 实例具有中等网络连接。但是,如果您的工作负载正在最大限度地耗尽网络连接,并且性能较差,请确定具有更好联网性能的新节点类型。更好的网络性能可能会在 “定价” 页面的 Network Performance(网络性能)列中列为 High10 Gigabit

请记住,网络性能也适用于客户端。如果您的客户端是网络性能低到中等的 t2.micro,并且您要将数据推送到 m4.10xlarge,那么您首先将客户端的网络吞吐量最大化。

应该选择哪种集群模式?

为应用程序工作负载选择正确的模式取决于流量

如果您的集群的主负载是由读取数据的应用程序组成的,则可以选择一个 Redis(禁用集群模式)集群。然后,通过添加读取副本来扩展集群以支持更多的读取操作。最多有 5 个只读副本。请记住,禁用集群模式的集群只有一个分片。因此,节点类型必须足够大,才能容纳集群的所有数据,以及必要的开销。

如果您集群上的负载是 write-heavy,并且您的写入工作负载超过了一个节点所能提供的,那么使用 Redis(启用集群模式)集群。启用了集群模式的集群将密钥分散到多个主节点中。因此,写入性能分为多个节点而不是单个节点。

如果您的工作负载很大,需要极高的性能,那么可以使用启用集群模式的集群,该集群具有多个分片和每个分片的多个读取副本。例如,您可以创建一个集群,每个主节点包含 15 个分片和 5 个副本。


AWS 官方
AWS 官方已更新 2 年前