您可以通过自定义 client-output-buffer-pubsub
参数的值,来调整 Redis 为发布订阅客户端分配的缓冲区大小。当缓冲数据超过限制时,Redis 将断开订阅客户端的连接,防止这些数据占用过多的内存,影响 Redis 服务的性能。
Redis 为每个客户端分配了输出缓冲区(output buffer)。处理完客户端的命令后,Redis 将返回结果临时储存在输出缓冲区中,然后将这些数据发送给客户端。如果不对输出缓冲区的大小做出限制,输出缓冲区可能积累大量数据,甚至达到最大内存限制,导致服务崩溃。以下是出现该问题的两种典型场景:
合理地设置 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
的默认值分别为 32MB、8MB 和 60s。您可以根据业务的实际情况来自定义这些选项的值。
client-output-buffer-pubsub
进行筛选。hard limit
、soft limit
和 soft seconds
的值,设置完成后,单击参数列表左上角的提交。 API | 描述 |
---|---|
DescribeDBInstanceParams | 调用 DescribeDBInstanceParams 接口查询指定实例的配置参数信息。 |
ModifyDBInstanceParams | 调用 ModifyDBInstanceParams 接口修改指定实例的配置参数。 |