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