RabbitMQ 中 Ready 和 Unacked 的含义及系统健康判断
本文解析 RabbitMQ 队列指标 Ready 与 Unacked 的含义。Ready 指等待投递的消息数,反映积压情况;Unacked 指已投递未确认的消息数,反映消费者压力。通过组合观察两者变化趋势,如 Ready 增长代表消费慢,Unacked 高可能因 prefetch 设置,可快速判断系统是否健康或超载。建议根据消费线程数合理设置 prefetch 参数,避免盲目关注 TPS 而忽略队列状态。

本文解析 RabbitMQ 队列指标 Ready 与 Unacked 的含义。Ready 指等待投递的消息数,反映积压情况;Unacked 指已投递未确认的消息数,反映消费者压力。通过组合观察两者变化趋势,如 Ready 增长代表消费慢,Unacked 高可能因 prefetch 设置,可快速判断系统是否健康或超载。建议根据消费线程数合理设置 prefetch 参数,避免盲目关注 TPS 而忽略队列状态。

在 RabbitMQ 中,队列里的消息大致会经历三个阶段:
生产 → 进入队列 → 投递给消费者 → 被 ack
对应到指标上:
| 指标 | 含义 |
|---|---|
| Ready | 已经在队列中,但还没投递给消费者的消息 |
| Unacked | 已经投递给消费者,但**还没被确认(ack)**的消息 |
Ready 看的是:消费速度是否跟得上生产速度 Unacked 看的是:消费者是否处理得过来
Ready 表示当前队列中'等待被消费'的消息数量。
这些消息已经:
最常见的情况是:
生产速度 > 消费速度
此时你会看到:
这通常说明:
| Ready 状态 | 含义 |
|---|---|
| 接近 0,轻微波动 | 系统健康 |
| 缓慢上升 | 接近瓶颈 |
| 持续快速上升 | 已超出消费能力 |
👉 在压测时,Ready 是最重要的观察指标,没有之一。
Unacked 表示已经投递给消费者,但消费者还没有返回 ack 的消息数量。
出现 Unacked,通常说明:
不一定。
Unacked 高,常见有两种原因:
情况一:消费者处理慢(问题)
这种情况下,Unacked 会持续增长。
情况二:prefetch 设置过大(非问题)
RabbitMQ 会根据 prefetch 参数,一次性向消费者推送多条消息。
例如:
prefetch = 1000
消费者瞬间拿到 1000 条消息,此时:
👉 这不一定是瓶颈,而是配置行为。
| Unacked 状态 | 含义 |
|---|---|
| 稳定在一个固定区间 | 正常 |
| 持续增长 | 消费者处理不过来 |
| 大幅抖动 | 消费逻辑不稳定 |
单独看 Ready 或 Unacked 都不够,真正有价值的是'组合判断'。
| Ready | Unacked | 系统状态 |
|---|---|---|
| 0 | 小 | 系统健康 |
| ↑ | 小 | 消费者数量不足 |
| 0 | ↑ | 消费慢 / prefetch 偏大 |
| ↑ | ↑ | 系统已超载 |
| 0 | 0 | 无生产或无消费 |
这是在压测和生产环境中,快速判断系统状态的黄金法则。
场景一:Ready 持续增长,Unacked 很小
说明:
👉 解决方案:增加消费者数量
场景二:Unacked 很大,Ready 为 0
说明:
👉 重点检查 prefetch 是否过大
场景三:Ready 和 Unacked 一起增长
这是最危险的情况:
👉 说明已经超过系统能力上限
对于手动 ack 的普通业务场景:
prefetch ≈ 消费线程数 × 2 ~ 5
例如:
这样可以避免 Unacked 过高,同时保证吞吐。
如果你在压测或生产环境中,只看 TPS、不看 Ready / Unacked, 那基本等于'盲飞'。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online
JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online
使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online
Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online