
最近生产服务器内存偶尔会飙升导致监控报警,不知道有没有什么办法把内存 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. |