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

Tair的输出缓冲限制

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

  • 客户端命令的返回值过大。
  • 发布者(publisher)发布消息的速度大于订阅者(subscriber)消费消息的速度。

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

选项说明

client-output-buffer-limit pubsub包含三个选项:hard limitsoft limitsoft seconds

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

云原生内存数据库Tair中,hard limitsoft limitsoft seconds的默认值分别为33554432、8388608和60,即32MB、8MB和60s。您可以根据业务中值的大小和客户端的处理能力自定义这些选项的值。

操作步骤

  1. 访问Tair实例列表,在上方选择地域,然后单击目标实例ID。
  2. 在左侧导航栏中,单击参数设置
  3. 在参数列表中,单击client-output-buffer-limit pubsub右侧操作列的修改
  4. 在弹出的对话框中完成以下步骤。
    1. 按照选项说明设置client-output-buffer-limit pubsub的值。
    2. 单击确定
    说明 设置完毕后您可以在控制台查看到设置后的值,您也可以使用redis-cli连接实例,然后执行CONFIG GET client-output-buffer-limit命令来查看设置后的值。

相关API

API接口 说明
DescribeParameters 查询Tair实例的配置参数和运行参数。
ModifyInstanceConfig 修改Tair实例的参数配置。