用jstat -gc真实检查broker的JVM健康度,再把本系列前面用过的几个真实命令(查LAG、查ISR、查controller状态)串成一份可执行的监控清单。
命令 · shell $ jstat -gcutil <broker2的pid>
S0 S1 E O M CCS YGC YGCT FGC FGCT CGC CGCT GCT 0.00 86.07 91.04 23.11 97.63 91.65 10 0.035 0 0.000 4 0.002 0.037
FGC=0(Full GC次数为0)和O=23.11(老年代只用了23%)真实是健康的信号——如果一个broker真实频繁触发Full GC,或者老年代占用长期接近100%,通常意味着堆内存配置太小,或者真实存在内存泄漏,GC停顿本身会真实拖慢broker处理请求的速度,进而影响到所有连接它的客户端。
命令 · shell(汇总本系列真实用过的检查手段) $ kafka-consumer-groups.sh --describe --group X # 真实查LAG,见《Consumer Lag 到底怎么算》 $ kafka-topics.sh --describe --topic Y # 真实对比Isr和Replicas,长度不一致=有副本掉线 $ kafka-metadata-quorum.sh describe --status # 真实查controller quorum是否健康,见《KRaft Controller Quorum》 $ kafka-log-dirs.sh --describe --topic-list Y # 真实查磁盘占用和offsetLag,见《Replica Fetcher》
每一步都是本文上面用真实命令跑出来的原始结果。