一聚教程网:一个值得你收藏的教程网站

热门教程

Redis发布订阅模式在高可用架构下报错怎么办-环境权限排查

时间:2026-08-27 09:46:49 编辑:袖梨 来源:一聚教程网

处理稳定性时,先确认真正讨论的是Pub/Sub 缓冲区超限导致断连,不是内存不够而是配置没对、没配 maxmemory 的 Redis 实例,Pub/Sub 更容易出问题、Spring Data Redis 的 RedisMessageListenerContainer 默认不保活,再顺着问题展开。

Pub/Sub缓冲区超限断连主因是client-output-buffer-limit pubsub配置不当,而非内存不足;其消息不计入used_memory但真实占用物理内存,需按消费能力调优硬限、软限及超时时间,并强制启用maxmemory防OOM;Pub/Sub 缓冲区超限导致断连,不是内存不够而是配置没对 Redis Pub/Sub 消息不进键空间,used_memory里完全看不到它——但每个订阅连接都独占一块输出缓冲区,这块内存真。现象通常是客户端突然失联,日志里只有 Client closed connection due to output buffer limit reached,而不是熟悉的 OOM;关键参数是 client-output-buffer-limit pubsub,默认值 32mb 8mb 60 表示:硬限 32MB(超即断)、软限 8MB 持续满 60 秒也断;一旦 Redis 重启或网络抖动,监听器就静默失效,后续消息全部丢失。这意味着如果客户端连的是节点 A,而发布者连的是节点 B,订阅者收不到消息——除非所有客户端都连同一个节点,或使用 --cluster-yes 强制路由;缓冲区配置、maxmemory 强制启用、客户端保活机制、以及是否该把它和集群混用——这四点漏掉任何一环,稳定性都会打折扣。

热门栏目