管理 Azure Cache for Redis 的服务器负载
值大小
客户端应用程序的设计决定了是要存储大量的较小值,还是存储少量的较大值。 从 Redis 服务器的角度来看,值越小,性能就越好。 建议将值大小保留在 100 kB 以下。
如果你的设计要求在 Azure Cache for Redis 中存储更大的值,则服务器负载会变得更高。 在这种情况下,可能需要使用更高的缓存层来确保 CPU 使用率不会限制吞吐量。
即使缓存具有足够的 CPU 容量,较大的值也会增大延迟,因此请遵循配置适当的超时中的指导。
较大值还会增大出现内存碎片的可能性,因此请务必遵循配置maxmemory-reserved 设置中的指导。
避免出现客户端连接高峰
创建和关闭连接对于 Redis 服务器而言是一项高开销的操作。 如果客户端应用程序在短时间内创建或关闭过多的连接,可能会给 Redis 服务器造成负担。
如果你要实例化许多客户端实例以便立即连接到 Redis,请考虑错开创建新连接的操作,以避免连接的客户端数出现徒峰。
内存压力
如果服务器上的内存使用率过高,则系统会更可能需要将数据分页到磁盘,导致页面错误,使系统运行速度明显变慢。
避免长时间运行的命令
Redis 服务器是单线程系统。 长时间运行的命令可能导致客户端出现延迟或超时,因为服务器在忙于处理长时间运行的命令时无法响应任何其他请求。 有关详细信息,请参阅排查 Azure Cache for Redis 服务器端问题。
监视服务器负载
添加对服务器负载的监视,以确保在服务器负载过高时收到通知。 监视可帮助你了解应用程序约束。 然后,可以主动采取措施来缓解问题。 建议尝试使服务器负载保持在 80% 以下,以避免对性能造成负面影响。 服务器负载持续超过 80% 可能会导致计划外故障转移。 目前,Azure Cache For Redis 在门户左侧“资源”菜单的“监视”下的“见解”中公开了两个指标:“CPU”和“Server Load”。 在监视服务器负载时,了解每个指标衡量的内容很重要。
CPU 指标指示托管缓存的节点的 CPU 使用率。 CPU 指标还包括严格来说不是 Redis 服务器进程的进程。 CPU 包括反恶意软件和其他软件的后台进程。 因此,CPU 指标有时会出现峰值,并且可能不是 Redis 服务器的 CPU 使用率的完美指标。
“Server Load”指标仅代表 Redis 服务器上的负载。 我们建议监视“Server Load”指标而不是“CPU”。
监视服务器负载时,我们还建议检查服务器负载的最大峰值而不是平均值,因为即使是短暂的峰值也会触发故障转移和命令超时。
规划服务器维护
确保在缓存服务器接受维护时,你有足够的服务器容量用于处理高峰负载。 在承受高峰负载的情况下,通过重新启动节点来测试系统。 有关如何模拟补丁部署的详细信息,请参阅重新启动。
测试服务器负载在故障转移后是否增加
对于标准和高级 SKU,每个缓存都托管在两个节点上。 负载均衡器会将客户端连接分布到这两个节点。 在主节点上发生计划内或计划外的维护时,该节点会关闭所有客户端连接。 在这种情况下,所有的客户端连接可能都会位于某一个节点上,导致服务器负载在剩余的一个节点上增加。 建议对此场景进行测试,方法是:重启主节点,并确保一个节点可以处理所有客户端连接,而服务器负载不会增至过高。