【Azure Redis】Redis服务负载达到100%后的影响及有何优化方法

Azure,影响,方法,优化 · 浏览次数 : 28

小编点评

**问题描述:** Redis 服务负载达到 100%,导致客户端发送出的请求超时。 **影响:** * 客户端无法连接 Redis 服务。 * 对应用程序的影响是不可忽视的,因为它会导致业务中断。 **优化方法:** 1. **调整 `maxmemory-reserved` 配置:** - 通过 `maxmemory-reserved` 配置,您可以指定 Redis 允许存储的最大键值大小。 - 建议值在 100KB 到 512KB 之间的范围内。 2. **升级 Redis Server:** - 升级到最新版本的 Redis 版本,因为它们通常包含性能优化。 3. **监控 ServerLoad 指标:** - 使用 `Azure Cache for Redis` 中的监控工具监控 ServerLoad 性能指标。 - 当 ServerLoad 达到 80% 时触发告警,提醒并手动调查 Redis 的使用情况。 4. **调整 Key Size:** - 如果您对 Key Size 比较大,可以适当调整 `maxmemory-reserved` 配置。 - 降低 `maxmemory-reserved` 值可以允许存储更多键值,但可能降低性能。 5. **其他最佳实践:** - 减少连接数量。 - 使用负载均衡技术。 - 考虑使用 Redis 的持久化功能,以减少数据丢失。 **参考资料:** - Azure Cache for Redis 服务器负载 : - [Learn](learn.microsoft.com/zh-cn/azure/azure-cache-for-redis/cache-best-practices-server-load) - 排查 Azure Cache for Redis 服务器问题 : - [Learn](learn.microsoft.com/zh-cn/azure/azure-cache-for-redis/cache-troubleshoot-server#high-server-loadRedis) - 内存管理 : - [Learn](learn.microsoft.com/zh-cn/azure/azure-cache-for-redis/cache-best-practices-memory-management#configure-your-maxmemory-reserved-setting)

正文

问题描述

Redis服务负载达到100%后的影响及有何优化方法

 

问题解答

Redis的负载达到100% 意味着 Redis 服务器繁忙,无法跟上请求,导致客户端发送出来的请求超时。

常规情况下有一下几种情况可以导致这个问题:

1) 请求量变大达到服务上限

2) 执行默写时间复杂度高的指令,如KEYS

3)   Redis中存放的单个键的大小太大,官方文档建议键值大小为100KB

4) Redis服务的维护操作

 

当遇见以上问题,可以参考的优化方法有:

  • 对于Key Size 比较大的场景,建议您适当调整maxmemory-reserved的配置。  
  • 通过对Redis 进行升级来提高Redis Server的性能来满足业务需求。
  • 对ServerLoad 性能指标进行监控,当ServerLoad 达到80%时触发告警,提醒并手动介入调查Redis 的使用情况。

 

参考资料

管理 Azure Cache for Redis 的服务器负载 : https://learn.microsoft.com/zh-cn/azure/azure-cache-for-redis/cache-best-practices-server-load

 

排查 Azure Cache for Redis 服务器问题 : https://learn.microsoft.com/zh-cn/azure/azure-cache-for-redis/cache-troubleshoot-server#high-server-load

Redis 内存管理:https://learn.microsoft.com/zh-cn/azure/azure-cache-for-redis/cache-best-practices-memory-management#configure-your-maxmemory-reserved-setting

 

与【Azure Redis】Redis服务负载达到100%后的影响及有何优化方法相似的内容:

【Azure Redis】Redis服务负载达到100%后的影响及有何优化方法

问题描述 Redis服务负载达到100%后的影响及有何优化方法 问题解答 Redis的负载达到100% 意味着 Redis 服务器繁忙,无法跟上请求,导致客户端发送出来的请求超时。 常规情况下有一下几种情况可以导致这个问题: 1) 请求量变大达到服务上限 2) 执行默写时间复杂度高的指令,如KEYS

【Azure Redis 缓存】Azure Redis 遇见的连接不上问题和数据丢失的情况解答

问题描述 PHP应用再连接Azure Redis服务时,出现Connection Timed out。当通过升级提高Azure Redis的性能时候,发现之前的数据丢失了。 问题解答 当Redis服务出现Timeout的情况时,可以从Redis服务的指标(Metrics)开始查看,如果出现负载(Se

【Azure Redis】Redis-CLI连接Redis 6380端口始终遇见 I/O Error

问题描述 使用Redis-cli连接Redis服务,因为工具无法直接支持TLS 6380端口连接,所以需要使用 stunnel 配置TLS/SSL服务。根据文章(Linux VM使用6380端口(SSL方式)连接Azure Redis (redis-cli & stunnel) : https://

【Azure Redis 缓存】对于Azure Redis 从 Redis 4 升级到 Redis 6 的一些疑问

问题描述 使用Azure Redis服务,客户端使用Redisson 3.X , 在近期Microsoft Azure对Redis服务进行大规模变动升级( Redis 版本由 4 升级到 6),对于这次升级的影响有以下的问题? 问题解释 问题一:Redis 6.0 和 Redisson 3.X 之间

【Azure Redis】Azure Redis添加了内部虚拟网络后,其他区域的主机通过虚拟网络对等互连访问失败

问题描述 跨区域无法访问Azure Redis服务, Redis 启用了Network并设置在一个VNET中,现在客户端部署在另一个区域数据中心中,两个数据中心区域使用VNET Peer(对等互连)访问。但是为什么不能访问Redis服务呢? 问题解答 根据Azure Redis的官方介绍,因为Red

【Azure Redis 缓存】使用StackExchange.Redis,偶发ERROR - Timeout performing HSET (15000ms)

问题描述 使用StackExchange.Redis 作为Redis客户端SDK,连接Azure Redis服务,长期运行后发现,每天都偶发 Timeout Error。 错误消息如下: StackExchange.Redis.RedisTimeoutException: Timeout perfo

【Azure Redis 缓存】Redis 连接失败

问题描述 Azure Redis 出现连接失败,过一会儿后,又能自动恢复。 问题解答 其实,因为Azure Redis服务一直都有升级维护的操作(平均每月一次),Redis服务更新是平台自动进行的计划内的维护升级行为,一般客户端都有重试机制,是不会影响应用。 故障转移发生的情况有: 系统更新,例如

【Azure Redis 缓存】Azure Redis服务开启了SSL(6380端口), PHP如何访问缓存呢?

问题描述 使用6379端口连接Azure Redis服务,连接失败。因为默认情况下Azure Redis的设置没有打开6379的端口。需要使用SSL(6380端口)进行连接,但是遇见了无法连接的问题。 使用非SSL(6379端口)的连接代码

【Azure Redis 缓存】使用开源工具redis-copy时遇见6379端口无法连接到Redis服务器的问题

问题描述 当使用Azure Redis服务时,需要把一个Redis服务的数据导入到另一个Redis上,因为Redis服务没有使用高级版,所以不支持直接导入/导出RDB文件。 以编程方式来读取数据并写入到新的Redis服务端,使用开源工具 Redis-Copy 却遇见了 6379 端口无法连接的问题。

【Azure Cache for Redis】Python Django-Redis连接Azure Redis服务遇上(104, 'Connection reset by peer')

问题描述 使用Python连接Azure Redis服务,因为在代码中使用的是Django-redis组件,所以通过如下的配置连接到Azure Redis服务: CACHES = { "default": { "BACKEND": "django_redis.cache.RedisCache", "