两个指标代表什么
URP(UnderReplicatedPartitions)表示某个分区的副本落后于 leader,也就是 ISR 数量小于副本总数;UnavailablePartitions 更严重,表示分区连 leader 都没有了,读写直接失败。前者通常是性能与同步问题,后者已经是可用性事故。处理顺序有讲究:先恢复 broker 让副本自愈,再评估是否需要重分配,最后才考虑用 unclean 选举强行选出 leader——因为那一步会丢数据。
基本信息
| URP | 副本落后,ISR 小于副本数,仍可读写 |
|---|---|
| UnavailablePartitions | 分区无可用 leader,读写失败 |
| 常见诱因 | broker 掉线、磁盘写满、网络抖动、负载过高 |
| 观测方式 | 主题 describe 命令与 JMX 指标 |
| 处理优先级 | 恢复进程 > 修复资源 > 重分配 > unclean 选举 |
定位命令
定位命令
kafka-topics.sh --bootstrap-server localhost:9092 --describe --under-replicated-partitions
kafka-topics.sh --bootstrap-server localhost:9092 --describe --unavailable-partitions
# 对单个 broker 看运行与磁盘状态
systemctl status kafka
df -h /data/kafka
# 查看 ISR 是否在收缩
kafka-topics.sh --bootstrap-server localhost:9092 --describe --topic orders | head- 1. 掉线 Broker:优先拉起进程并观察 ISR 自愈
- 2. 磁盘/网络异常:修复后副本会自动追平
- 3. 长期不恢复:用 reassign 把副本迁到健康节点
- 4. 全部副本不可用且业务可接受丢数据:才用 UNCLEAN 选举
- 5. 恢复后复盘:确认是容量问题还是单点问题,补上监控告警
状态与动作对照
| 状态 | 含义 | 动作 |
|---|---|---|
| URP 短暂出现后消失 | 副本正在追赶 | 观察即可,记录发生时间 |
| URP 持续大于 0 | 某副本长期落后 | 查该 broker 磁盘与网络 |
| URP 持续增长 | 负载或容量不足 | 评估扩容与限速 |
| 部分分区不可用 | 全部副本落在故障节点 | 恢复节点或重分配 |
| 需要 unclean 选举 | 无可用副本可推进 | 确认业务可接受丢数据后再执行 |
unclean 选举会丢未同步数据;执行前必须确认业务后果并留记录。
磁盘写满是最常见的 URP 诱因:broker 会停止写入并逐步落后,因此容量水位告警的价值往往高于事后排查副本状态。
发生故障时先记录时间点与当时的指标快照:URP 会在恢复后自动消失,事后只凭「现在看起来正常」很难定位根因。