本页介绍了 Memorystore for Valkey 实例在扩缩期间的行为。
您可以通过以下方式扩缩实例的容量:
您可以更改实例的分片数量。这就是横向扩缩。您可以通过以下任一方式横向扩缩实例:
横向扩容:增加实例的容量,为实例提供更多内存和处理能力,以处理更大的数据量或流量。实例的容量取决于实例中的分片数量。
通过扩容实例,您的应用无需降低性能即可处理增加的需求。如需横向扩展实例,请向实例添加分片。
缩减规模:缩减实例的容量,这会降低处理能力和可用于存储数据的内存量。当应用的数据需求减少且您需要降低资源用量以节省费用时,就会发生这种情况。如需缩减实例,请减少实例中的分片数量。
您可以更改实例的节点类型。这就是纵向扩缩。您可以通过以下任一方式垂直扩缩实例:
- 扩容:增加实例的容量。实例的容量取决于实例的节点类型。如需扩容实例,请将节点类型更改为更大的节点类型。例如,将实例从
standard-small
节点类型扩容到highmem-medium
节点类型。 缩减:缩减实例的容量。如需缩减实例规模,请将节点类型更改为较小的节点类型。例如,将实例从
highmem-medium
节点类型缩减为standard-small
节点类型。
- 扩容:增加实例的容量。实例的容量取决于实例的节点类型。如需扩容实例,请将节点类型更改为更大的节点类型。例如,将实例从
扩缩的影响
在扩缩操作期间,实例的可用性不会受到影响。不过,当您更改实例中的分片数量时,Memorystore for Valkey 会重新平衡实例的键空间。这可能会导致扩缩操作期间延迟时间增加。
此外,通过更改节点类型对实例进行垂直扩缩的影响与执行维护操作的影响类似。
故障场景
如果您在扩缩操作期间遇到错误,则可能是因为以下某种情况:
您想更新实例的分片数量,但实例的
shared-core-nano
节点类型没有足够的可用内存。如需解决此问题,您可以扩缩实例,也可以从实例的节点中释放内存。如需释放内存,请执行以下操作:
- 连接到 Memorystore for Valkey 实例。
- 如需获取实例的详细信息(包括 IP 地址和端口号),请使用
gcloud memorystore instances describe
命令。 - 记下实例的 IP 地址和端口号。
如需获取实例节点的相关信息,请使用以下命令:
valkey-cli -h IP_ADDRESS -p PORT_NUMBER cluster nodes
将 IP_ADDRESS 和 PORT_NUMBER 替换为您在上一步中记下的值。
记下没有足够可用空间的节点的 IP 地址和端口号。此节点的 ID 与错误中显示的 ID 一致。
如需连接到此节点,请使用以下命令:
valkey-cli -h IP_ADDRESS -p PORT_NUMBER
将 IP_ADDRESS 和 PORT_NUMBER 替换为您在上一步中记下的值。
在提示符处,输入
info memory
命令。输出中会显示
used_memory
和maxmemory
参数的值。used_memory
是节点使用的内存量,maxmemory
是节点可用的内存量。将
used_memory
参数的值除以maxmemory
参数的值,并验证商大于 98%。如需为节点腾出空间,请删除节点的部分键。
再次输入
info memory
命令。在输出结果中,used_memory
参数的值较小。将
used_memory
参数的值除以maxmemory
参数的值,并验证商现在是否小于 98%。如果没有,请删除更多键。对于没有足够可用空间的任何其他节点,请重复此过程的步骤 4 到 11。
您缩减了分片数量,但缩减后的分片数量无法容纳 Memorystore for Valkey 在原始实例中存储的所有键。如需解决此问题,请扩容到可容纳所有存储的键的较大分片数。如需详细了解如何增加实例的分片数量,请参阅扩缩分片数量。
您缩减到了较小的节点类型,该节点类型无法容纳 Memorystore for Valkey 在原始节点类型中存储的所有数据。如果发生这种情况,Memorystore for Valkey 会为您提供建议的节点类型,以便进行垂直缩减。
您更新了实例的节点类型,并且您覆盖了原始节点类型的默认设置,或者这些设置已被覆盖。不过,新的放大型节点类型不支持默认设置的值,或者这些设置对该节点类型无效。如果发生这种情况,Memorystore for Valkey 会返回错误。要解决此问题,请手动修改设置,使其对新节点类型有效。
您在写入压力较大(例如在负载测试期间)扩缩了实例。如需解决此问题,请在实例流量较低时进行扩缩。
最佳做法
为帮助您扩缩实例容量,并提高实例扩缩的速度和可靠性,请尽可能在流量较低时扩缩实例。如需了解如何监控实例流量,请参阅监控实例。