Go Go" Sys" runtime.ReadMemStats
报告的统计数据或任何其他统计/组合大约等于ps aux
报告的常驻记忆集?
或者,假设某些内存可能被换出,那么Sys stat是否大约等于或大于RSS?
我们有一个长期运行的Web服务,处理高频率的请求,我们发现RSS很快就会消耗掉我们服务器上几乎所有的64GB内存。当它达到~85%时,我们的响应时间和我们可以处理的并发请求数量开始出现大幅下降。我在下面列出的运行是在执行大约20个小时之后,并且已经占用了51%的内存。
我试图确定可能的原因是否是内存泄漏(我们对CGO进行了一些调用)。这些数据似乎表明它确实存在,但在我走下那个兔子洞之前,我想排除对我用来打电话的统计数据的基本误解。
这是一个定位amd64
的{{1}}内容,并在linux
上执行。
CentOS
报道:
runtime.ReadMemStats
Alloc: 1294777080 bytes (1234.80MB) // bytes allocated and not yet freed
Sys: 3686471104 bytes (3515.69MB) // bytes obtained from system (sum of XxxSys below)
HeapAlloc: 1294777080 bytes (1234.80MB) // bytes allocated and not yet freed (same as Alloc above)
HeapSys: 3104931840 bytes (2961.09MB) // bytes obtained from system
HeapIdle: 1672339456 bytes (1594.87MB) // bytes in idle spans
HeapInuse: 1432592384 bytes (1366.23MB) // bytes in non-idle span
报道:
ps aux