本页面介绍了各种错误场景,并提供了解决这些错误的指南。
复制场景
本部分介绍了实例可能出现的复制问题。
如何监控复制延迟?
Memorystore for Valkey 具有 /instance/replication/maximum_offset_diff 指标。此指标用于监控主实例中某个节点的最大复制偏移差(以字节为单位)。
通过保持较低的复制偏移差,副本可以比完整同步操作更频繁、更低成本地执行增量同步操作。
我们建议您为 maximum_offset_diff 指标设置阈值。如果超出阈值,Memorystore for Valkey 可以通过提醒通知您。
根据实例的节点类型 ,我们建议您按如下方式设置阈值:
如果节点类型为
shared-core-nano、custom-pico、custom-micro、custom-mini、standard-small、highmem-medium、highcpu-medium或standard-large,则将阈值设置为小于 64 MB。如果节点类型为
highmem-xlarge或highmem-2xlarge,则将阈值设置为小于 1 GB。
如果主实例及其副本之间存在复制延迟,该怎么办?
如果主实例的写入操作过多,而副本无法及时复制这些操作,则可能会出现明显的复制延迟。如需解决此问题,我们建议您通过 增加实例的分片数量来扩容 实例。
CPU 使用率场景
本部分介绍了实例可能遇到的 CPU 使用率问题。
如果实例的输出缓冲区空间不足,该怎么办?
如果 Memorystore for Valkey 实例的输出缓冲区空间不足,请执行以下操作:
- 为
maxmemory参数设置较小的值。 - 使用
allkeys-lrumaxmemory政策。
当实例的内存已满且有新的写入时,Memorystore for Valkey 会根据实例的 maxmemory 政策逐出键,为写入腾出空间。allkeys-lru 政策会从整个键集中逐出最近最少使用的 (LRU) 键。
我们建议您监控实例的 maxmemory 和已用内存。这有助于您了解实例是否达到预配的实例容量。
此外,通过减小 maxmemory 参数的值,您可以为开销腾出更多空间。
内存管理场景
本部分介绍了实例可能遇到的内存管理问题。
您可以使用哪个指标来确定实例是否处于内存压力下?
如需监控 内存用量
Memorystore for Valkey 实例的
,我们建议您查看/instance/memory/maximum_utilization 指标。如果实例的内存用量
接近 80%,并且您预计数据用量会增加,请
扩容实例
以提高性能并为新数据腾出空间。
监控场景
本部分介绍了实例可能遇到的监控问题。
如何为 Memorystore for Valkey 设置提醒?
您可以使用 Cloud Monitoring 设置提醒,以便在任何 指标超出您为实例设置的阈值时收到通知。如需详细了解如何在 Cloud Monitoring 中设置提醒 ,请参阅为内存用量设置 Monitoring 提醒。
连接管理场景
本部分介绍了实例可能遇到的连接管理问题。
如果达到连接上限或收到连接超时,该怎么办?
当您达到连接上限时,客户端无法连接到服务器。这称为“连接拒绝” 。
如果发生这种情况,请执行以下操作:
- 使用
/instance/node/stats/rejected_connections_count指标确定 Memorystore for Valkey 因实例 节点达到客户端上限而拒绝的连接数。 - 使用
/instance/node/clients/connected_clients指标确定连接到实例节点的客户端数量。这样,您就可以查看实例中的所有节点是否都在限制范围内。 - 使用
client kill命令停止任何泄漏或不需要的连接。 - 减少客户端应用中的连接数或连接池大小。如需了解详情,请参阅与客户端应用关联的文档。
- 调整客户端上限。如需了解详情,请参阅配置实例。
- 将实例扩容为更大的节点类型,以便实例具有更高的 连接上限。
超时场景
本部分介绍了实例可能遇到的超时问题。
如果收到 I/O 超时,该怎么办?
当 Memorystore for Valkey 中的读取或写入操作未能在指定时间内完成时,就会发生 I/O 超时。此超时可能是由多种原因造成的。例如,实例的一个或多个节点可能过载。
如果收到 I/O 超时,请执行以下操作:
- 使用
instance/cpu/maximum_utilization指标确定实例中某个节点的 CPU 利用率,范围从 0.0 (0%) 到 1.0 (100%)。我们建议所有节点的 CPU 利用率百分比都低于 80%。如需了解详情,请参阅 CPU 使用率最佳实践。 - 当客户端因服务器超时而与服务器断开连接时, 请使用 指数退避算法 和 抖动重试。这有助于避免多个客户端同时使服务器过载。
连接错误场景
本部分介绍了实例可能遇到的连接问题。
由防火墙规则导致的连接错误
防火墙规则可能会阻止 Memorystore for Valkey 使用的端口,从而导致连接错误。您必须将实例的两个 Private Service Connect 端点的所有端口都列入许可名单。如需详细了解这些 端点,请参阅预留的网络地址。
由组织政策导致的连接错误
您可能有一项组织政策 会阻止 Private Service Connect 连接到您的 Memorystore for Valkey 实例。
如果您的组织政策使用 .restrictPrivateServiceConnectProducer 政策,请将 672235397475 文件夹编号列入许可名单,该文件夹专门用于 Memorystore for Valkey。例如:
name: organizations/Consumer-org-1/policies/compute.restrictPrivateServiceConnectProducer
spec:
rules:
- values:
allowedValues:
- under:folders/672235397475
如果您的组织政策使用 .disablePrivateServiceConnectCreationForConsumers 政策,请将 SERVICE_PRODUCERS 列入许可名单。例如:
name: organizations/Consumer-org-1/policies/compute.disablePrivateServiceConnectCreationForConsumers
spec:
rules:
- values:
allowedValues:
- SERVICE_PRODUCERS
处理已停用集群模式的实例的错误
如果应用连接到没有读取副本的实例的读取端点,则连接会关闭,并显示
ERR no replicas found错误消息。在这种情况下,请尝试将应用连接到主端点,或向实例添加读取副本。发生故障切换时,应用中的现有连接会关闭,并显示
ERR role change occurred错误消息。如果应用连接到实例的读取端点,并且实例的所有读取副本都失败,您也会看到此错误消息。在这种情况下,应用必须使用指数退避算法重试连接。
持久性场景
本部分介绍了实例可能出现的持久性问题。
您的写入流量超出了 Memorystore for Valkey 通过 AOF 重写压缩和回收空间的能力
如果发生这种情况,则仅追加文件 (AOF) 的增长速度会快于重写过程的管理速度。这会导致磁盘耗尽、写入失败,并阻止需要创建副本和完全同步的操作。
Memorystore for Valkey 实施了防护措施来规范写入吞吐量。 这可确保 AOF 重写能够跟上持续的高写入工作负载。