精选路线

精品阅读

如果只想快速理解这个博客的技术含金量,可以从这里开始。它把复杂线上排障、观测指标局限、Linux 源码、数据库内核和自己动手造轮子的文章串成几条主线。

30 篇精选 5 条阅读线

王牌排障

最能代表作者排障能力的文章:现象复杂、链路长、证据多,并且最终能把所有异常都解释到同一个模型里。

01 解Bug之路 · 17 min read 解Bug之路-NAT引发的性能瓶颈 从抓包、LVS、TIME_WAIT 到内核版本差异,排障链路完整且反转多,是最适合作为门面的代表作。 核心反常点:NAT 场景里的趋光性是一种自发的动力学模型,不同失败率通过表项寿命转化为选择压力,系统在没有健康感知的情况下自行完成流量迁移。 02 解Bug之路 · 9 min read 解Bug之路-应用999线升高 把应用 999、Young GC、cgroup throttling、宿主机超卖串成一条因果链,体现指标解读和内核视角。 核心反常点:查询服务 999 线升高后扩容反而更糟,Young GC 变慢只出现在部分机器,根因不是 JVM 容量,而是宿主机超卖和 cgroup CPU 记账造成的指标误导。 03 解Bug之路 · 9 min read 解Bug之路-dubbo流量上线时的非平滑问题 从首笔请求超时一路追到 listen backlog 和 TCP 三次握手,问题小但底层解释非常漂亮。 核心反常点:应用每次发布后只有第一笔请求超时,后续全部正常,表面影响很小,实际暴露的是连接刚建立但还不可用、listen backlog 与 TCP 握手队列之间的时序问题。 04 解Bug之路 · 7 min read 解Bug之路-记一次对端kernel宕机后的tcp行为 难得的线上宕机场景,结合 soTimeOut、重传和 tcp_retries2 做定量分析,技术味很足。 核心反常点:对端机器宕机后同一类调用有的 821s 后 reset,有的 900s 后 timeout,异常时间并不随机,而是 TCP 重传、soTimeout 和内核恢复窗口共同决定。 05 解Bug之路 · 7 min read 解Bug之路-ZooKeeper集群拒绝服务 把 ZK 宕机、选主失败、snapshot 耗时和数据治理串起来,适合作为高可用事故分析样本。 核心反常点:ZK Leader 宕机后剩余节点没有顺利选主,集群整体拒绝服务,异常不在单次宕机本身,而在 snapshot 耗时、initLimit 和历史数据膨胀共同放大故障。 06 解Bug之路 · 6 min read 解Bug之路-记一次JVM堆外内存泄露Bug的查找 从堆内泄漏线索反推堆外内存,并用物理内存模型做定量校验,是 JVM 排障里很有说服力的一篇。 核心反常点:容器迁移后物理内存持续异常但堆内看不出同等增长,真正泄漏在堆外,需要从堆内对象线索反推并用物理内存模型定量闭环。 07 解Bug之路 · 6 min read 解Bug之路-Nginx 502 Bad Gateway 用端口耗尽、TIME_WAIT 和 Nginx upstream 配置解释 502 与 CPU 飙高,短而锋利。 核心反常点:后端应用压测无压力,但经过 Nginx 就 502 且 Nginx CPU 接近 100%,真正瓶颈不是业务处理能力,而是单 upstream 地址端口耗尽与 TIME_WAIT。 08 解Bug之路 · 7 min read 解Bug之路-记一次中间件导致的慢SQL排查过程 从偶发慢 SQL 的微小规律追到中间件 reactor 线程被卡住,体现日志对齐和系统边界意识。 核心反常点:慢 SQL 是主键查询/更新且只偶发几条,数据库本身并不慢,真正卡点在分库分表中间件 reactor 线程被字符串处理拖住。 09 解Bug之路 · 5 min read 解Bug之路-中间件"SQL重复执行" 分库分表中间件稳定多年后暴露的 corner case,适合展示工程系统里隐藏状态与日志开关的风险。 核心反常点:同一条 SQL 看起来被中间件重复执行,数据库日志和中间件日志互相打架,根因藏在多节点返回、引用计数和一个为排查打开的日志/缓存开关里。

观测与指标

这一组讨论监控指标的边界:指标不是事实本身,它会失明、失真,也会在精度和采样层面误导判断。

Linux 与 TCP 源码

这些文章适合展示底层功底:不是只会调参数,而是能从应用现象一路落到 Linux/TCP 的实现细节。

数据库与监控组件

从 MySQL 到 Prometheus,重点是组件内部机制,而不是停留在使用手册层面。

自己动手与系统设计

这一组不是单纯排障,而是把协议、存储、代理、同步和跨集群通信真正做出来。