Linux内核5.x及以上版本对Go1.15内存释放的影响咨询
问题详情
基础环境信息
- Go版本:
go version 1.15 - 问题复现情况:未在最新版本复现
- 操作系统与处理器架构:
Linux 5.4.54-1.0.0.std7c.el7.2.x86_64 #1 SMP Mon Nov 16 10:02:20 CST 2020 x86_64 x86_64 x86_64 GNU/Linux
异常现象
服务内存占用过高,相关截图如下:
排查过程
服务内存占用过高,但通过pprof堆文件分析未发现内存泄漏,结论依据:
- 同版本服务部署在K8s集群其他节点时未出现该问题,对应节点内核版本为
4.9.2-3.0.0.std7b.el7.5.x86_64 #1 SMP Thu Apr 26 17:33:02 CST 2018 x86_64 x86_64 x86_64 GNU/Linux,且其pprof分析结果与异常节点相似。 - 针对MADV_FREE相关问题(runtime: default to MADV_DONTNEED on Linux #42330)进行排查,分析
/proc/1/smaps文件的LazyFree字段,发现值均为0;所有节点内核版本均在4.5及以上,理论上应出现相同问题,但实际仅该节点异常,且gotrace记录正常。
疑问
- 为何该服务内存占用过高?
- Linux内核5.x及以上版本对Golang内存管理有何影响?
内容的提问来源于stack exchange,提问作者user16356622
相关产品推荐
相关产品推荐




