Go 1.12中出现的top命令RES参数异常增高的问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Go 1.12中出现的top命令RES参数异常增高的问题相关的知识,希望对你有一定的参考价值。
参考技术A偶然在生产上部署了一个版本之后发现,机器不断重启报警,后经过查询linux日志发现,原来是因为服务占用内存过高被内核给kill掉了。接下来就是查问题,本来以为是内存泄漏,上了pprof工具之后发现,内存占用稳定在2.6g,而top命令则很快看到 RES 参数暴涨到12g+(机器内存16g)后被内核杀掉。百思不得其解。后来在翻阅Go1.12发布说明时看到一段话:
原文链接: https://golang.google.cn/doc/go1.12#runtime
这段话的关键在于,Go1.12中使用的新的 MADV_FREE 模式,这个模式会更有效的释放无用的内存,但可能会让 RSS 增高,RSS是什么呢?Resident Set Size 常驻内存集,而top中 RES 参数的含义是进程使用的、未被换出的物理内存大小,也即常驻内存集。看到这里,试着在程序运行时加上这个参数 GODEBUG=madvdontneed=1 ,果然,内存稳定在2.7g,问题就此解决。
golang 目录
go语言介绍
开发环境准备
go语言基础
Go语言常用标准库
数据库相关
前端相关
其他
web开发
上述文章转自:https://www.liwenzhou.com/
以上是关于Go 1.12中出现的top命令RES参数异常增高的问题的主要内容,如果未能解决你的问题,请参考以下文章