一、一句话理解 Ready 和 Unacked
在 RabbitMQ 中,队列里的消息大致会经历三个阶段:
生产 → 进入队列 → 投递给消费者 → 被 ack
对应到指标上:
| 指标 | 含义 |
|---|---|
| Ready | 已经在队列中,但还没投递给消费者的消息 |
| Unacked | 已经投递给消费者,但**还没被确认(ack)**的消息 |
Ready 看的是:消费速度是否跟得上生产速度 Unacked 看的是:消费者是否处理得过来
二、Ready:判断是否'发生积压'的核心指标
1. Ready 是什么?
Ready 表示当前队列中'等待被消费'的消息数量。
这些消息已经:
- 被 Producer 成功发送
- 被 RabbitMQ 接收并放入队列
- 但还没有被分发给任何 Consumer
2. Ready 持续增长,意味着什么?
最常见的情况是:
生产速度 > 消费速度
此时你会看到:
- Ready 数量不断增加
- 队列开始出现积压
这通常说明:
- 消费者数量不足
- 单个消费者处理太慢
- 或系统已经接近极限
3. Ready 的健康状态判断
| Ready 状态 | 含义 |
|---|---|
| 接近 0,轻微波动 | 系统健康 |
| 缓慢上升 | 接近瓶颈 |
| 持续快速上升 | 已超出消费能力 |
👉 在压测时,Ready 是最重要的观察指标,没有之一。
三、Unacked:反映消费者压力的指标
1. Unacked 是什么?
Unacked 表示已经投递给消费者,但消费者还没有返回 ack 的消息数量。
出现 Unacked,通常说明:
- 使用的是手动 ack
- 或者使用了批量 ack
- 消费者正在处理消息
2. Unacked 很高,一定是问题吗?
不一定。
Unacked 高,常见有两种原因:
情况一:消费者处理慢(问题)
- 业务逻辑耗时
- IO 阻塞(数据库、HTTP)
- CPU 已打满
这种情况下,Unacked 会持续增长。


