一次 GC 停顿排查:从 P99 毛刺到 GOGC 与 GOMEMLIMIT
P99 周期性毛刺怎么确认是不是 GC、gctrace 每列怎么读、runtime/metrics 该取哪几个指标、GOGC 与 GOMEMLIMIT 各自拿什么换什么,以及「别把 GC 当唯一嫌疑人」的区分方法。
共 6 篇 · 返回博客首页
P99 周期性毛刺怎么确认是不是 GC、gctrace 每列怎么读、runtime/metrics 该取哪几个指标、GOGC 与 GOMEMLIMIT 各自拿什么换什么,以及「别把 GC 当唯一嫌疑人」的区分方法。
经典哈希环 + 虚拟节点、Jump Consistent Hash、Maglev 三种实现各给可运行代码,并实测两件事:key 分布的均匀性,以及扩容一个节点时要迁移多少 key。结论是「一致性哈希解决重分布,不解决负载均衡」。
帧头每个字节是什么、payload 长度为什么有三档编码、掩码键怎么异或、分片与控制帧有哪些硬性约束——用 Go 写一个只依赖 io.Reader 的解析器,并写清什么时候该用库、什么时候值得手写。
固定窗口的边界双倍突发到底有多严重、滑动窗口计数怎么用分桶逼近、令牌桶的容量与速率是两件事——三个算法各给实现与实测方法,再给一份 Redis + Lua 的原子版和选型表。
Go 的三种装法与取舍、Node 用 nvm/fnm + corepack 的流程、Docker 官方脚本与发行版仓库的区别、国内镜像加速与非 root 用户,最后一份「装完自检」命令清单。
一台 2 核小机器、一个 Go 二进制、一份 Next.js 静态产物,加上 Nginx 与 Let's Encrypt。记录这个站点从工具站改成个人站的技术选型与上线流程。