同事甩 10–40% 截图让你升 Go 1.26?先量自己的 GC 占比
值班群里有人贴了 Go 官方的截图:Green Tea 能把 GC 开销降 10–40%。
下一句往往是:那下周就升 1.26,服务应该能快不少。
我会先去看一条监控:GC CPU 在总 CPU 里占多少。没有这个数,截图再漂亮,也不能替你 …
值班群里有人贴了 Go 官方的截图:Green Tea 能把 GC 开销降 10–40%。
下一句往往是:那下周就升 1.26,服务应该能快不少。
我会先去看一条监控:GC CPU 在总 CPU 里占多少。没有这个数,截图再漂亮,也不能替你 …
很多团队升级 Go 版本,只做一件事:把 CI 跑绿。
跑绿以后就结束了。代码没动,测试没动,工具链没动。版本号从 1.22 变成 1.26,心里安慰自己:至少我们没落后太多。
但 Go 1.25 / 1.26 这两版,我不太建议这样看。 …
把 GOMAXPROCS 设成 1,再启动一个没有函数调用、没有 I/O、没有 sleep 的死循环。
按很多人对 goroutine 的理解,程序应该完了:唯一的 P 被这个 goroutine 一直占着,其他 goroutine 没机会 …
服务又 OOM 了。
Pod 刚重启,群里已经开始出方案:GOMEMLIMIT 设低一点,GOGC 调一下,limit 先加 1Gi,GC 日志再翻一遍。
这些动作有时候能救火,但经常救不到根上。
因为很多 Go 服务所谓的“内存泄漏”,根 …
服务又被 OOMKilled 了。
Pod 刚重启,群里已经开始报菜名:把 GOGC 调低一点,给 GOMEMLIMIT 设个值,容器 limit 再加 1Gi,顺手翻一下 GC 日志。
这些动作不一定错,但顺序错了。
你现在看到的是“尸体 …
上篇讲完 GOGC、GOMEMLIMIT 和 STW,很多人真正卡住的地方才刚开始。
不是“不知道这些参数是什么”,而是线上真的出问题时,不知道下一步该干什么。
服务 p99 每隔几十秒抖一下,GC CPU 看起来有 5%。有人说把 …
服务 p99 每隔几十秒抖一下。
监控里 GC CPU 大概 5%,不算离谱,但曲线很准:GC 一来,延迟就往上冒。群里很快有人提议,把 GOGC 从 100 调到 200,先让 GC 少跑几次。
这个动作看起来很合理。
CPU 下来了 …
服务内存从 800MB 慢慢涨到 2.6GB。
曲线不陡,不像雪崩。它只是每天往上爬一点,重启以后掉下来,过几天又回到老地方。告警一响,群里很快会出现两个动作:先怀疑泄漏,再问 GOGC 要不要调。
这两个反应都不离谱,但都太早。
在 Go …
服务又被 OOMKilled 了。
Pod 刚重启,群里已经有人开始翻 GC 日志。有人说 GC CPU 到了 20%,有人说把 GOGC 调低一点,还有人建议直接上 GOMEMLIMIT。
这些动作不一定错,但顺序错了。 …
服务 p99 每隔几十秒抖一下。
监控里 GC CPU 大概 5%,不算夸张,但曲线很准:GC 一来,延迟就往上冒。群里很快有人提议:把 GOGC 从 100 调到 200,先让 GC 少跑几次。
这个动作看起来很合理。
CPU 下来了 …
服务内存从 800MB 慢慢涨到 2.6GB。
曲线不陡,不像雪崩。它只是每天往上爬一点,重启以后掉下来,过几天又回到老地方。告警响了,群里第一句话通常是:是不是内存泄漏?
这个判断不算错,但太急。
在 Go 服务里,内存持续上涨可能是真泄 …