通过自定义client-output-buffer-limit pubsub的值,您可以调整云数据库 Tair(兼容 Redis)实例为发布订阅客户端分配的缓冲区大小。当某个客户端的缓冲区数据超过限制时,实例将断开与该客户端的连接,防止这些数据占用过多的内存而影响实例服务的性能。
输出缓冲区限制
云数据库 Tair(兼容 Redis)实例为每个客户端分配了输出缓冲区(output buffer)。当实例处理完客户端的请求后,会将返回结果临时储存在输出缓冲区中,然后将这些数据发送给客户端。如果不对输出缓冲区的大小做出限制,输出缓冲区可能会积累大量数据,甚至达到最大内存限制,导致服务崩溃。以下是两种典型场景:
客户端命令的返回值过大。
发布者(publisher)发布消息的速度大于订阅者(subscriber)消费消息的速度。
合理地设置client-output-buffer-limit pubsub参数可以避免发布订阅客户端的输出缓冲区占用内存过大。
操作步骤
访问实例列表,在上方选择地域,然后单击目标实例ID。
在左侧导航栏中,单击参数设置。
在参数列表中,单击client-output-buffer-limit pubsub右侧操作列的修改。
在弹出的对话框中,依次设置
hard limit
、soft limit
和soft seconds
的值,并用空格隔开。参数说明:
hard limit
为强限制值,单位为Byte,当一个发布订阅客户端的输出缓冲区占用内存达到或超过hard limit
的限制时,Tair将断开该客户端的连接。soft limit
与soft seconds
为一组弱限制值,当一个发布订阅客户端的输出缓冲区占用内存达到或超过soft limit
(单位为Byte)的限制,且该状态的持续时间达到soft seconds
(单位为s)时长时,Tair将断开该客户端的连接。
说明hard limit
、soft limit
和soft seconds
的默认值分别为33554432、8388608和60,即32 MB、8 MB和60 s。单击确定。
设置完毕后您可以在控制台查看到设置后的值,您也可以使用redis-cli连接实例,然后执行CONFIG GET client-output-buffer-limit命令来查看设置后的值。
相关API
API接口 | 说明 |
查询实例的配置参数和运行参数。 | |
修改实例的参数配置。 |