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