流量控制
概述
本指南介绍 RabbitMQ 节点应用于发布连接的反压机制,以避免失控的内存使用增长。这是必要的,因为节点中的某些组件可能会落后于特别快速的发布者,因为它们必须比发布客户端做更多的工作(例如,将数据复制到 N 个对等节点或将其存储在磁盘上)。
流量控制如何工作
RabbitMQ 将降低发布速度过快以至于队列无法跟上的连接的速度。无需配置。
流量受控的连接将在 rabbitmqctl、管理 UI 和 HTTP API 响应中显示 flow
状态。这意味着连接每秒经历多次阻塞和解除阻塞,以使消息进入速率保持在服务器其余部分(例如,这些消息路由到的队列)可以处理的速率。
一般来说,处于流量控制状态的连接不应看到与正常运行有任何不同;flow
状态的存在是为了通知系统管理员发布速率受到限制,但从客户端的角度来看,它应该看起来像到服务器的网络带宽低于实际带宽。
除了连接之外的其他组件也可能处于 flow
状态。通道、队列和系统的其他部分可以应用流量控制,最终传播回发布连接。
要了解消费者和prefetch settings是否可能是关键限制因素,请查看相关指标。请参阅监控和健康检查指南以了解更多信息。