限制发布订阅客户端的输出缓冲区大小

通过自定义client-output-buffer-limit pubsub的值,您可以调整云数据库 Tair(兼容 Redis)实例为发布订阅客户端分配的缓冲区大小。当某个客户端的缓冲区数据超过限制时,实例将断开与该客户端的连接,防止这些数据占用过多的内存而影响实例服务的性能。

输出缓冲区限制

云数据库 Tair(兼容 Redis)实例为每个客户端分配了输出缓冲区(output buffer)。当实例处理完客户端的请求后,会将返回结果临时储存在输出缓冲区中,然后将这些数据发送给客户端。如果不对输出缓冲区的大小做出限制,输出缓冲区可能会积累大量数据,甚至达到最大内存限制,导致服务崩溃。以下是两种典型场景:

  • 客户端命令的返回值过大。

  • 发布者(publisher)发布消息的速度大于订阅者(subscriber)消费消息的速度。

合理地设置client-output-buffer-limit pubsub参数可以避免发布订阅客户端的输出缓冲区占用内存过大。

操作步骤

  1. 访问实例列表,在上方选择地域,然后单击目标实例ID。

  2. 在左侧导航栏中,单击参数设置

  3. 在参数列表中,单击client-output-buffer-limit pubsub右侧操作列的修改

  4. 在弹出的对话框中,依次设置hard limitsoft limitsoft seconds的值,并用空格隔开。

    参数说明:

    • hard limit为强限制值,单位为Byte,当一个发布订阅客户端的输出缓冲区占用内存达到或超过hard limit的限制时,Tair将断开该客户端的连接。

    • soft limitsoft seconds为一组弱限制值,当一个发布订阅客户端的输出缓冲区占用内存达到或超过soft limit(单位为Byte)的限制,且该状态的持续时间达到soft seconds(单位为s)时长时,Tair将断开该客户端的连接。

    说明

    hard limitsoft limitsoft seconds的默认值分别为33554432、8388608和60,即32 MB、8 MB和60 s。

  5. 单击确定

    设置完毕后您可以在控制台查看到设置后的值,您也可以使用redis-cli连接实例,然后执行CONFIG GET client-output-buffer-limit命令来查看设置后的值。

相关API

API接口

说明

DescribeParameters

查询实例的配置参数和运行参数。

ModifyInstanceConfig

修改实例的参数配置。