Go GC 卡了 40ms,锅居然不在 Go

原创
alex 4小时前 阅读数 3 #头条
GC 暂停 40 毫秒,你会先怀疑谁?大概率是 Go 的 GC 本身。但这次真凶是操作系统层面的 swap。一台内存吃紧的服务器,把 Go 进程的部分内存页换到了磁盘,GC 标记阶段扫描到这些页时,本该微秒级完成的内存读取变成了几十毫秒的磁盘 IO。STW 时间从正常的 1-2ms 直接膨胀到 40ms,延迟指标全线炸裂。这篇文章的排查思路值得借鉴:从延迟分布的长尾入手,关联 /proc/vmstat 里的 swap 计数,逐层下钻最终锁定根因。我的判断是,Go 的高性能叙事在资源紧张的环境下并不牢靠——GC 的性能天花板从来不只由 runtime 决定,宿主机的内存策略同样能毁掉一切精心调优的延迟目标。

原文:A 40ms Go GC pause caused by swap · 来源:Hacker News

版权声明

所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除