Skip to content

Latest commit

 

History

History
27 lines (24 loc) · 1.9 KB

2.25_flow_control.md

File metadata and controls

27 lines (24 loc) · 1.9 KB

2.25 dble流量控制

背景

在之前的dble版本中,当进行大文件load以及大结果集查询的过程中,都有可能由于数据的发送不及时造成数据在dble内存中堆积,当条件足够的时候甚至有可能造成dble服务的OOM,进而影响服务的稳定运行
在本版2.20.04中由社区开发者@ssxlulu提供了对于这部分流量控制的实现,通过连接级别的写队列长度,进行数据加载/获取的负反馈调节,从而实现在数据load和大结果集查询过程中的内存使用情况稳定。 具体的issue详情请见 issue详情

原理

dble中的流量控制通过连接级别的写出队列进行负反馈调节,具体在生效的时候分成两种具体的形式:

  • load data过程中后端连接写出队列过长负反馈
  • Query过程中前端连接写出队列过长负反馈 下图中分别描述了两种负反馈具体实现的逻辑: 实现逻辑 注:流量控制功能的生效级别为连接级别,不同连接之间的队列长度不会互相影响

使用举例

本功能为默认关闭功能,需要在server.xml中进行相关配置进行显式开启,或者通过管理端的辅助命令进行实时的调整。 在server.xml中使用下列参数使得功能开启并生效:

enableFlowControl(是否开启流量控制开关)
flowControlStartThreshold(写队列上限阈值,写队列超限时开启流量控制)
flowControlStopThreshold(写队列下限阈值,写队列低于阈值时取消流量控制)

附带三个管理端命令可以修改当前的流量控制参数:

  • flow_control @@show (展示当前流控配置参数信息)
  • flow_control @@set [enableFlowControl = true/false] [flowControlStart = ?] [flowControlEnd = ?](修改配置参数)
  • flow_control @@list (展示当前正在被流量控制的连接)