- 文档首页
缓存数据库 Redis 版
用户指南
参数管理
限制发布订阅客户端的输出缓冲区大小
限制发布订阅客户端的输出缓冲区大小
您可以通过自定义 client-output-buffer-pubsub 参数的值,来调整 Redis 为发布订阅客户端分配的缓冲区大小。当缓冲数据超过限制时,Redis 将断开订阅客户端的连接,防止这些数据占用过多的内存,影响 Redis 服务的性能。
Redis 的输出缓冲限制
Redis 为每个客户端分配了输出缓冲区(output buffer)。处理完客户端的命令后,Redis 将返回结果临时储存在输出缓冲区中,然后将这些数据发送给客户端。如果不对输出缓冲区的大小做出限制,输出缓冲区可能积累大量数据,甚至达到最大内存限制,导致服务崩溃。以下是出现该问题的两种典型场景:
- 发布者(publisher)发布消息的速度大于订阅者(subscriber)消费消息的速度。
合理地设置 client-output-buffer-pubsub 参数可以避免发布订阅客户端的输出缓冲区占用内存过大对服务造成负面影响。
参数说明及设置建议
client-output-buffer-pubsub 包含三个选项:hard limit、soft limit 和 soft seconds:
- hard limit:用于指定一个硬限制值,单位:MB。当一个发布订阅客户端的输出缓冲区占用内存达到或超过 hard limit 的限制时,Redis 将断开该客户端的连接。
- soft limit:用于指定一个软限制值,单位:MB;soft seconds 指定持续触发软限制的时间,单位:s。当一个发布订阅客户端的输出缓冲区占用内存达到或超过 soft limit 的限制,且该状态的持续时间达到 soft seconds 限定的秒数时,Redis 将断开该客户端的连接。
hard limit、soft limit 和 soft seconds 的默认值分别为 32 MB、8 MB 和 60s。您可以根据业务的实际情况来自定义这些选项的值。
操作步骤
- 在顶部菜单栏的左上角,选择实例所属的项目和地域。
- 在参数列表子页签,单击批量修改参数,从参数列表中找到 client-output-buffer-pubsub 参数,并根据业务需要修改参数值。
- 在弹出的对话框中,确认需要修改的参数和参数值,单击确定。
最近更新时间:2025.12.16 14:29:20