最近生产服务器内存偶尔会飙升导致监控报警,不知道有没有什么办法把内存 dump 下来看里面具体有哪些对象,就像 java 中的 jmap -heap 一样
试过 pprof,这个据我了解只能看到采样期间的内存分配情况,还有就是累计的分配情况,不能看到内存中对象分布
1
richzhu Jun 29, 2020
同问,有的时候真的是莫名其妙
|
2
janxin Jun 29, 2020
|
3
reus Jun 29, 2020 如果你用的是 1.12 或者更新的版本,那 RSS 会一直增长,只在系统内存不够用的时候,内核才会回收这些内存。如果你的监控指标是 RSS,那可以用 GODEBUG=madvdontneed=1 这个环境变量切换回旧的回收方式。
|
4
petelin Jun 29, 2020 via iPhone
pprof 里有 heap debug=1 会有全部的内存分配
gcore 配合 viewcore 就是对比 linux core |
5
Lonenso Jun 29, 2020
|
9
janxin Jun 30, 2020
|
10
pabno OP |
11
Lonenso Jul 1, 2020
因为你要解决内存飙升, 也有很多种情况, 我目前遇到过自己写的 goroutine 泄露导致的内存飙升. 我觉得你可以深入使用 pprof.
|