在此页面中,您可以找到有关使用 Memorystore for Valkey 的以下常见问题解答 (FAQ):
- 我们建议您使用多少 CPU 和内存?
- 如何监控 CPU 和内存用量?
- 如何设置提醒来监控 CPU 和内存使用情况?
- 我们建议您保持客户端应用中的多少个连接处于打开状态?
- 如何监控实例的客户端连接数?
- 如果客户端连接过多,该怎么办?
- 假设您即将举办的活动会为您的商家带来流量高峰。您该怎么做?
- 如何保护您的数据?
- 客户端代码的最佳实践有哪些?
- 有哪些数据恢复选项?
- 如何让实例发挥最佳性能?
- 如何优化实例的高可用性?
我们建议您使用多少内存和 CPU?
我们建议内存用量不要超过 80%。我们还建议您以 60% 的平均 CPU 利用率运行。因此,您可以容忍单个可用区(约占总容量的三分之一)的丢失。在此场景中,剩余节点的平均 CPU 利用率约为 90%。
您如何监控 CPU 和内存用量?
如需监控主 Memorystore for Valkey 节点及其任何读取副本的 CPU 用量,请使用 /instance/cpu/maximum_utilization
指标。此指标用于衡量实例中所有节点的最大 CPU 利用率,范围从 0.0(0%)到 1.0(100%)。如需了解详情,请参阅 CPU 使用最佳实践。
如需监控主 Memorystore for Valkey 节点及其读取副本使用的内存,请使用 /instance/node/memory/utilization
指标。此指标用于衡量实例中单个节点的内存利用率,范围从 0.0(0%)到 1.0(100%)。
如何设置提醒来监控 CPU 和内存用量?
如需为 CPU 和内存用量设置监控提醒,请使用 Cloud Monitoring。例如,您可以设置提醒,以便在 /instance/memory/maximum_utilization
指标超出您设置的阈值时收到通知。如需了解详情,请参阅设置内存用量的 Monitoring 警报。
建议您保持客户端应用打开多少个连接?
建议您为客户端使用基准,以确定最佳设置。建议每个客户端的起始连接数为每个 Valkey 节点一个连接。如需了解详情,请参阅避免 Valkey 上的连接过载。
我们还建议您为客户端启用流水线,以便客户端可以处理更多请求并更快地处理这些请求。
如何监控实例的客户端连接数?
如需监控您使用的客户端连接数,请使用 /instance/node/clients/connected_clients
指标。此指标衡量的是连接到实例中每个节点的客户端数量。
如果客户端连接过多,该怎么办?
您可以使用 /instance/clients/maximum_connected_clients
指标找到客户端连接的最大数量,该数量必须小于与 maxclients
参数关联的值。如果值相等,请执行以下操作:
- 使用
client kill
命令停止所有泄露或不必要的连接。 - 检查实例的节点类型。如果节点类型的客户端数量上限等于 Memorystore for Valkey 支持的该节点类型的最大值,请更改客户端的连接池大小或使用更大的节点类型。如需了解详情,请参阅避免 Valkey 上的连接过载。
假设您即将举办的活动会为您的商家带来流量高峰,您要怎么做?
您可以配置 Memorystore for Valkey 以满足您的业务需求。在这种情况下,您可以通过以下方式增加实例的容量:
- 您可以向实例添加分片。这样,实例就可以使用更多 CPU 来处理大量数据或流量。实例的容量由实例中的分片数量决定。通过添加分片,应用可以处理不断增长的需求,而不会降低性能。
- 您可以将节点类型更改为更大的节点类型。这样可以为实例提供更多内存。实例的容量由实例的节点类型决定。例如,您可以将节点类型从
standard-small
节点类型更改为highmem-medium
节点类型。
我们建议您在活动开始前几天增加实例的容量。此外,为帮助您伸缩实例的容量,并提高伸缩实例的速度和可靠性,请在低流量期间伸缩实例。如需了解如何监控实例流量,请参阅监控实例。
您如何保护自己的数据?
为确保数据安全,Memorystore for Valkey 为您提供以下机制:
- Identity and Access Management (IAM) 身份验证:使用 IAM 帮助您管理用户和服务账号的登录访问权限。基于 IAM 的身份验证与 Valkey AUTH 集成,让您无需依赖静态密码即可无缝轮换凭据 (IAM 令牌)。
- 传输加密:使用传输层安全 (TLS) 协议加密所有 Valkey 流量。启用传输加密后,Valkey 客户端通过安全连接进行通信。未配置 TLS 的 Valkey 客户端会被屏蔽。
客户端代码的最佳实践有哪些?
为了以最佳方式将客户端代码与 Memorystore for Valkey 搭配使用,我们建议您遵循以下最佳实践:
如需将应用连接到启用了集群模式的 Memorystore for Valkey 实例,请使用我们推荐的客户端,例如 valkey-go、iovalkey、valkey-py 或 Valkey GLIDE。
如果您使用其他客户端,请确保使用可感知集群的 Valkey 客户端,该客户端可维护实例中哈希槽到相应节点的映射。这样一来,请求就可以发送到正确的节点。这样可以避免重定向造成的性能开销。如需了解详情,请参阅 Valkey 客户端最佳实践。
我们建议您将连接超时时间间隔设置为 5 秒,并将请求超时时间间隔设置为 10 秒。如果您将超时时间设置为较短的时间间隔,则 Memorystore for Valkey 可能会遇到重新连接风暴,这可能会使服务面临风险。
当客户端定期重试失败的请求,且各次请求之间的延迟时间不断增加时,请使用指数退避算法作为网络应用的标准错误处理策略。
使用我们的客户端库代码示例。例如,valkey-go 客户端的默认值符合我们的所有建议,因此您无需为此客户端配置任何内容。
您有哪些数据恢复选项?
Memorystore for Valkey 提供以下数据恢复能力功能:
高可用性:Memorystore for Valkey 在副本节点中提供冗余容量。如果发生故障,Memorystore for Valkey 可以使用此容量来运行,而不会出现任何停机时间。
持久性:当您的环境意外崩溃时,Memorystore for Valkey 会自动恢复环境。这称为“持久性”。
Memorystore for Valkey 提供以下类型的持久性:
Redis 数据库 (RDB) 持久性:通过将数据快照保存到持久性存储空间中来保护数据。您可以通过选择快照时间间隔来确定这些快照的频率。 如果发生节点故障,即使无法进行故障切换,您也可以恢复数据。
仅附加文件 (AOF) 持久性:如果您想优先考虑数据持久性,请使用此类型的持久性。AOF 持久化通过将每个写入命令记录到名为 AOF 文件的日志文件中来持久存储数据。如果发生系统故障或重启,服务器会按顺序重放 AOF 文件命令来恢复您的数据。
备份:手动将 Memorystore for Valkey 实例恢复到特定时间点。此外,您还可以使用备份来导出和分析数据。
备份在以下场景中非常有用:
- 灾难恢复:将备份用作灾难恢复计划的一部分。如果发生灾难,您可以将数据恢复到新的 Memorystore for Valkey 实例。
- 数据迁移:在不同的 Memorystore for Valkey 实例之间迁移数据。您可以整合数据或将其迁移到其他区域。您还可以从 Memorystore for Valkey 实例恢复备份。
- 共享数据:在不同团队或应用之间共享数据。这样一来,您就可以进行协作、离线数据分析和数据交换。
- 合规性:出于合规性目的,定期备份缓存数据。
- 安排备份:除了创建按需备份之外,您还可以为实例配置备份时间表。因此,Memorystore for Valkey 会定期为实例启动备份。
跨区域复制:从主实例创建次要实例,以使您的实例可在不同区域中用于读取。在发生区域性服务中断时,辅助实例还可为灾难恢复方案提供冗余。
Memorystore for Valkey 上的跨区域复制可为您带来以下好处:
- 灾难恢复:如果主实例的区域变得不可用,您可以分离或切换到另一个区域中的辅助实例,以处理读写请求。辅助实例在不发出切换或分离命令的情况下处理读取请求。
- 按地理位置分布的数据:按地理位置分布数据可让数据更靠近您,并缩短读取延迟时间。
- 读取流量的地理位置负载均衡:如果一个区域中的连接速度较慢或过载,您可以将流量路由到另一个区域。
如何让实例获得最佳性能?
如需优化 Memorystore for Valkey 实例的性能,请执行以下操作:
- 请遵循内存管理和 CPU 使用方面的最佳实践,因为这些实践可让您的实例获得最佳性能。
- 使用审核日志监控实例的访问情况。这样一来,您就可以确定实例的管理员活动(
Admin Activity
审核日志)或访问实例数据的用户(Data Access
审核日志)是否存在任何问题。 - 使用只读副本。在 Memorystore for Valkey 中,复制是异步的。因此,主节点中的数据不会立即显示在副本中。如果您可以接受略微过时的数据,请使用读取副本。这可大幅提升读取吞吐量并缩短延迟时间。
避免使用占用大量资源的 Valkey 命令。使用这些命令可能会导致以下性能问题:
- 延迟时间长和客户端超时
- 因增加内存用量的命令而导致的内存压力
- 节点复制和同步期间出现数据丢失,因为 Valkey 主线程被阻塞
- 健康检查、可观测性和复制资源不足
请改用更节省资源的命令,而不要使用这些命令。 例如,如需扫描整个键空间,请勿使用
KEYS
命令。请改用SCAN
。如需详细了解资源密集型 Valkey 命令及其资源高效型替代方案,请参阅资源密集型 Valkey 命令。
如果您的业务需求允许您为数据设置过期时间,我们建议您这样做。设置过期时间可以减少内存消耗。
将 Memorystore for Valkey 实例的版本升级到最新实例版本。较新的软件版本在可靠性和性能方面有所改进。
修改
maxmemory-policy
参数的值。此参数用于指定当实例数据达到maxmemory
限制时 Valkey 遵循的行为。当实例内存已满且有新的写入时,Valkey 会根据实例的
maxmemory
政策逐出键,为写入腾出空间。如果将
maxmemory-policy
参数的值设置为noeviction
,则当实例达到最大内存时,Memorystore for Valkey 会返回错误。不过,Memorystore for Valkey 不会覆盖或逐出数据。如需提高实例的可用性,请更改maxmemory-policy
参数的值,以便 Memorystore for Valkey 可以逐出键。如需详细了解可为
maxmemory-policy
参数设置的不同值,请参阅 maxmemory 政策。如需详细了解如何更新此参数,请参阅更新配置参数。调整 Memorystore for Valkey 实例,使其达到所需的缓存命中率。这有助于您确定合适的数据库大小,以便数据库能够处理适当百分比的命中。
如需调整实例,请执行以下操作:
- 使用
total_keyspace_hits_count
和total_keyspace_misses_count
监控指标可分别确定实例成功查找键的总次数和实例未能成功查找键的总次数。 - 将命中总数除以命中和未命中总数
(即命中数/ [命中数 + 未命中数])。所得的商即为命中率。 - 如需调整实例以获得适合您的命中率,请扩缩实例。您可以增加或减少分片数量,也可以升级或降级节点类型。如需了解详情,请参阅伸缩实例容量简介。
提高命中率可缩短系统延迟时间并提高吞吐量。找到适合您在性能、伸缩和费用方面的目标的平衡点。
- 使用
默认情况下,我们建议您针对实例运行性能基准比较,以确定增加连接数是否可以提高性能,而不会导致连接饱和。建议的起点是将客户端配置为与每个 Valkey 节点建立一个连接。
为您的客户端启用流水线,以便您的客户端可以处理更多请求并更快地处理这些请求。如需配置流水线,请使用客户端库。如需了解详情,请参阅与此库关联的文档。
如何优化实例的高可用性?
我们建议您创建高可用性的多可用区实例,而不是单可用区实例,因为前者可提供更高的可靠性。
如果您创建的是高可用性实例,我们建议您使用 /instance/node/replication/offset
指标。通过使用此指标,您可以监控实例中单个节点的复制偏移量(以字节为单位)。复制偏移量是指 Memorystore for Valkey 在主节点和只读副本之间尚未复制的字节数。