坐标:kubectl delete pv 没报错,但 PV 还在


坐标:kubectl delete pv 没报错,但 PV 还在 上篇讲了双栈 ClusterIP 少加载内核模块导致 IPv6 不通的排查,这篇我们来看存储层一个更隐蔽的"假删"——kubectl delete pv 不报错,但 PV 对象永远删不掉。 Ceph 集群告警存储使用率 85%——"加

CPU 才 30%,Load 飙到 8 你还在加机器?


CPU 才 30%,Load 飙到 8 你还在加机器? 场景:凌晨 2:30 告警,接口 RT 从 50ms 飙到 5s,CPU 才 30%,Load Average 冲到 8.5——值班同事重启了事,三天后同一时间再次爆发 路径:top 分诊 → vmstat 看 b/r → iostat 排除

CPU 才 30%,接口就崩了?一核有难七核围观


CPU 才 30%,接口就崩了?一核有难七核围观 场景:Java 服务接口 RT 从 20ms 飙到 2s,CPU 整体使用率只有 30%,但 si 占了 80% 路径:top 发现 si 异常 → mpstat 确认单核 → /proc/softirqs 定位 NET_RX → perf top

主从切换失败?查查 GTID 集合——MASTER_AUTO_POSITION 的隐性陷阱


主从切换失败?查查 GTID 集合——MASTER_AUTO_POSITION 的隐性陷阱 场景:MC 自动切换后原主恢复,CHANGE MASTER TO MASTER_AUTO_POSITION=1 时报错 1872——master 已清除从库需要的 binlog 路径:GTID 自动定位协议

MySQL 主从延迟监控的顶级谎言:Seconds_Behind_Master


MySQL 主从延迟监控的顶级谎言:Seconds_Behind_Master 场景:从库 Seconds_Behind_Master=0,业务反馈刚写入的数据查不到。主从同步监控显示一切正常,实际数据延迟了 3 分钟。 路径:SBM 更新机制 → 时钟偏差多线程复制/relay log 堆积 →

改了行配置死锁没了账却乱了:MySQL 隔离级别选型血泪史


改了行配置死锁没了账却乱了:MySQL 隔离级别选型血泪史 以下分析基于 MySQL 8.0.32。 场景:一个高并发订单系统,改了一行 transaction-isolation=READ-COMMITTED,死锁消失了对不上账了 路径:死锁风暴 → RC 切换 → 对账异常 → 隔离级别本质 →

一个事务没提交,UNDO 表空间撑爆 28G——长事务的隐形代价


一个事务没提交,UNDO 表空间撑爆 28G——长事务的隐形代价 上篇讲了 MySQL 同一个事务查了四次数据反复横跳的问题——根因是快照读和当前读的 ReadView 边界不同。这篇我们来看另一个长事务的经典后果:UNDO 表空间撑爆。 以下分析基于 MySQL 8.0.32。 现象:28GB U

MySQL 同一个事务查了四次,数据反复横跳——快照读和当前读的边界


MySQL 同一个事务查了四次,数据反复横跳——快照读和当前读的边界 以下分析基于 MySQL 8.0.32。 场景:同一个事务内,同一张表,同一个 WHERE 条件——查了四次,数据量每次不一样 路径:四次查询 → ReadView 规则 → 快照读 vs 当前读 → 排查与重构 上篇讲了间隙锁死

从 38 个删到 8 个,GC 停顿反而更稳了:JVM 参数不是越多越好


从 38 个删到 8 个,GC 停顿反而更稳了:JVM 参数不是越多越好 场景:一个 4C8G Spring Boot 微服务,启动脚本里塞了 38 个 JVM 参数。删到 8 个后,性能没差,但心里踏实多了。 路径:启动参数对比 → 参数分类(必备/白噪音/场景专用)→ 最小配置清单 → 验证标记

GC 停顿飙了 15 倍:元凶不在 JVM 在缺页中断


GC 停顿飙了 15 倍:元凶不在 JVM 在缺页中断 场景:一个 G1GC 服务的 YoungGC 耗时从 20ms 突升到 300ms+,调了所有 GC 参数都无效。根因不在 GC 日志里,在缺页中断。 路径:GC 停顿飙升 → real >> user 关键线索 → 缺页中断排查 → THP