1. 消息堆积通用排查中生产速率、消费速率、分区/队列分配与下游依赖的定位方法
消息堆积的通用排查如何从生产速率、消费速率、分区/队列分配与下游依赖角度定位?
- 生产速率与消费速率对比
- 分区/队列分配
- 下游依赖
消息堆积通用排查:先对比生产速率与消费速率,若消费速率 < 生产速率则为产能不足;若消费速率正常但仍堆积,则看分区/队列分配是否均衡(Kafka 看分区分配、RocketMQ 看队列分配、Pulsar 看订阅游标),是否存在热点或消费者过载;再排查下游依赖(DB、外部 API、缓存),消费端是否因下游慢而阻塞。定位方法:监控生产/消费速率、lag、每条消息处理耗时、下游依赖耗时,用线程 dump 与日志确认消费端是否在等待。对症下药:产能不足则扩容消费端,分配不均则调整分区,下游慢则优化下游或限流。
堆积是"生产 > 消费"或"产能不足"或"下游阻塞"。通用排查路径是"速率对比 → 分配检查 → 下游检查",逐层定位根因。监控 lag 与速率是基础,扩张需结合根因。
# 对比生产/消费速率与 lag(Kafka 示例)
kafka-consumer-groups.sh --bootstrap-server localhost:9092 \
--describe --group my_group
# 查看消费端日志确认是否阻塞下游
tail -n 100 /var/log/app/consumer.log