mq Command
消息队列常用排障命令
Kafka、RabbitMQ、RocketMQ 消息队列排障命令速查,Kafka 用 kafka-consumer-groups.sh --describe 看 LAG 分区,RabbitMQ 用 rabbitmqctl list_queues/list_connections 看队列和连接,RocketMQ 用 mqadmin queryMsgById/consumerStatus 追踪消息与死信。
汇总 Kafka、RabbitMQ、RocketMQ 常用排障命令,按场景速查:消费堆积、连接爆满、消息丢失、队列阻塞
Scenario
什么时候用这组命令
这组命令适合在处理“消息队列常用排障命令”时作为第一轮检查模板。使用时先替换占位符,再在目标机器或目标 namespace 中执行,避免在错误环境里得到误导结论。
Input
你需要先准备什么
- 先确认是生产者、Broker 还是消费者的问题,不要在三层之间盲改。
- 保留消息 ID、offset 和故障时间点,方便和上下游日志对齐。
- 区分消息丢失(没投递成功)和消息积压(投递了但没消费),两者根因完全不同。
Risk Notes
执行风险
- 不要直接清空队列丢弃消息来“解决”积压,会导致业务数据丢失,应先确认积压原因。
- 不要盲目重启 Broker,未持久化的消息和未确认的投递会丢失,重启前应确认同步状态。
- 不要在生产环境随意调整分区数,分区扩展后不能缩减,且会影响现有消息的顺序。
Commands
命令详解
命令 1: 执行 kafka-consumer-groups.sh
用于补充“消息队列常用排障命令”的排查证据链。kafka-consumer-groups.sh 的输出需要结合上下文其他命令交叉验证,不要单独依赖某一条结果下结论。
- 确认命令运行位置正确。
- 保留关键输出,方便和修复后对比。
kafka-consumer-groups.sh --bootstrap-server localhost:9092 --describe --group my-group命令 2: 执行 kafka-topics.sh
用于补充“消息队列常用排障命令”的排查证据链。kafka-topics.sh 的输出需要结合上下文其他命令交叉验证,不要单独依赖某一条结果下结论。
- 确认命令运行位置正确。
- 保留关键输出,方便和修复后对比。
kafka-topics.sh --bootstrap-server localhost:9092 --describe --topic my-topic命令 3: 执行 kafka-log-dirs
用于补充“消息队列常用排障命令”的排查证据链。kafka-log-dirs 的输出需要结合上下文其他命令交叉验证,不要单独依赖某一条结果下结论。
- 确认命令运行位置正确。
- 保留关键输出,方便和修复后对比。
kafka-log-dirs --bootstrap-server localhost:9092 --describe --topic-list my-topic命令 4: 执行 rabbitmqctl
用于补充“消息队列常用排障命令”的排查证据链。rabbitmqctl 的输出需要结合上下文其他命令交叉验证,不要单独依赖某一条结果下结论。
- 确认命令运行位置正确。
- 保留关键输出,方便和修复后对比。
rabbitmqctl list_queues name messages messages_ready consumers state命令 5: 执行 rabbitmqctl
用于补充“消息队列常用排障命令”的排查证据链。rabbitmqctl 的输出需要结合上下文其他命令交叉验证,不要单独依赖某一条结果下结论。
- 确认命令运行位置正确。
- 保留关键输出,方便和修复后对比。
rabbitmqctl list_connections name peer_host state channels命令 6: 执行 rabbitmqctl
用于补充“消息队列常用排障命令”的排查证据链。rabbitmqctl 的输出需要结合上下文其他命令交叉验证,不要单独依赖某一条结果下结论。
- 确认命令运行位置正确。
- 保留关键输出,方便和修复后对比。
rabbitmqctl status命令 7: 执行 mqadmin
用于补充“消息队列常用排障命令”的排查证据链。mqadmin 的输出需要结合上下文其他命令交叉验证,不要单独依赖某一条结果下结论。
- 确认命令运行位置正确。
- 保留关键输出,方便和修复后对比。
mqadmin clusterList -n 127.0.0.1:9876命令 8: 执行 mqadmin
用于补充“消息队列常用排障命令”的排查证据链。mqadmin 的输出需要结合上下文其他命令交叉验证,不要单独依赖某一条结果下结论。
- 确认命令运行位置正确。
- 保留关键输出,方便和修复后对比。
mqadmin consumerStatus -n 127.0.0.1:9876 -g my-group命令 9: 执行 mqadmin
用于补充“消息队列常用排障命令”的排查证据链。mqadmin 的输出需要结合上下文其他命令交叉验证,不要单独依赖某一条结果下结论。
- 确认命令运行位置正确。
- 保留关键输出,方便和修复后对比。
mqadmin queryMsgById -n 127.0.0.1:9876 -i msgIdWorkflow
建议执行顺序
按顺序执行,不要跳过确认类命令
先用只读命令确认状态,再执行会改变状态的命令。汇总 Kafka、RabbitMQ、RocketMQ 常用排障命令,按场景速查:消费堆积、连接爆满、消息丢失、队列阻塞
- 排查 Kafka 消费堆积:先 kafka-consumer-groups.sh --describe 看 LAG 列,再 kafka-topics.sh --describe 确认分区与 leader 分布
- 排查 RabbitMQ 队列阻塞:rabbitmqctl list_queues 看 messages_ready 与 consumers,配合 list_consumers 定位阻塞消费者
- 排查 RabbitMQ 连接爆满:rabbitmqctl list_connections 统计来源,rabbitmqctl status 查看 file_descriptors 是否耗尽
- 排查 RocketMQ 消息丢失:mqadmin clusterList 看集群状态,queryMsgById 追踪消息,consumerStatus 看消费与死信队列
- 排查 MQ 节点健康:rabbitmqctl node_health_check 与 status 检查磁盘、内存水位,Kafka 用 kafka-log-dirs 查磁盘占用
- 排查分区/副本不均衡:kafka-topics.sh --describe 统计各 broker leader 数,kafka-reassign-partitions 生成迁移方案
kafka-consumer-groups.sh --bootstrap-server localhost:9092 --describe --group my-group
kafka-topics.sh --bootstrap-server localhost:9092 --describe --topic my-topic
kafka-log-dirs --bootstrap-server localhost:9092 --describe --topic-list my-topic把命令输出变成结论
命令本身不是结论。每次执行后要回答:目标是否存在、状态是否异常、异常是否能解释用户看到的现象。
- 记录关键字段,而不是整屏复制
- 把正常路径和异常路径输出对比
- 输出为空也要解释:是确实没有,还是权限/过滤条件不对
kafka-topics.sh --bootstrap-server localhost:9092 --describe --topic my-topic
kafka-log-dirs --bootstrap-server localhost:9092 --describe --topic-list my-topic
rabbitmqctl list_queues name messages messages_ready consumers state执行前替换占位符并控制影响范围
包含 <service>、<pod>、<namespace>、<pid>、<container> 的命令必须先替换。涉及 reload、restart、KILL、vacuum、prune 的命令要确认影响范围。
- 优先在测试环境或只读模式验证
- 生产执行前保留回滚路径
- 把最终可用命令写入工单或 runbook
mqadmin consumerStatus -n 127.0.0.1:9876 -g my-group
mqadmin queryMsgById -n 127.0.0.1:9876 -i msgIdVerification
怎么判断命令有效
- 命令已在正确机器、正确用户、正确 namespace 或正确仓库下执行。
- 输出能支撑明确判断:正常、异常、权限不足、目标不存在或需要下一跳排查。
- 对有副作用的命令,已确认执行窗口、影响范围和回滚方式。
Prevention
沉淀到日常流程
- 监控 lag、连接数和磁盘使用,而不是只看 Broker 是否存活,及时发现潜在问题。
- 消费者做幂等处理,避免重复消费导致数据错乱,特别是在重试和 rebalance 场景下。
- 设置合理的消息 TTL 和死信队列,防止异常消息无限堆积影响正常消息处理。
- 对关键消息链路做端到端监控,从生产到消费全链路追踪,快速定位问题节点。
常见问题
不同 MQ 的排障命令都需要管理员权限吗?
大部分只读命令(describe、list)普通账号可执行;涉及修改配置、重分配、取消同步的命令需管理员权限
命令中 nameserver 或 bootstrap-server 地址怎么获取?
Kafka 用 bootstrap-server 指向任意 Broker,RocketMQ 用 -n 指向 NameServer,地址一般在集群部署配置或环境变量中查找
Long-tail SEO
你可能正在搜索这些报错
下面这些错误原文、场景词和中英文搜索词,都是排查同类问题时常见的入口。
- kafka 排障命令
- rabbitmq 排障命令
- rocketmq 排障命令
- 消息队列常用命令
- mq 命令速查
- kafka rabbitmq rocketmq 命令大全
Need More Help
这组命令还不够贴合你的场景?
把你的系统环境、目标操作和报错贴过来,我会优先补充更具体的命令模板。