V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
pabno
V2EX  ›  程序员

go 服务器内存偶尔会飙升,有什么办法可以把内存 dump 下来?

  •  
  •   pabno · 2020-06-29 09:56:31 +08:00 · 4537 次点击
    这是一个创建于 1611 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近生产服务器内存偶尔会飙升导致监控报警,不知道有没有什么办法把内存 dump 下来看里面具体有哪些对象,就像 java 中的 jmap -heap 一样

    试过 pprof,这个据我了解只能看到采样期间的内存分配情况,还有就是累计的分配情况,不能看到内存中对象分布

    11 条回复    2020-07-01 19:45:25 +08:00
    richzhu
        1
    richzhu  
       2020-06-29 10:23:43 +08:00
    同问,有的时候真的是莫名其妙
    janxin
        2
    janxin  
       2020-06-29 10:31:30 +08:00
    reus
        3
    reus  
       2020-06-29 10:37:03 +08:00   ❤️ 3
    如果你用的是 1.12 或者更新的版本,那 RSS 会一直增长,只在系统内存不够用的时候,内核才会回收这些内存。如果你的监控指标是 RSS,那可以用 GODEBUG=madvdontneed=1 这个环境变量切换回旧的回收方式。
    petelin
        4
    petelin  
       2020-06-29 12:19:55 +08:00 via iPhone
    pprof 里有 heap debug=1 会有全部的内存分配
    gcore 配合 viewcore 就是对比 linux core
    Lonenso
        5
    Lonenso  
       2020-06-29 17:20:49 +08:00
    pabno
        6
    pabno  
    OP
       2020-06-30 13:50:41 +08:00
    @janxin 这个 dump 出来没找到有什么工具可以分析
    pabno
        7
    pabno  
    OP
       2020-06-30 13:55:43 +08:00
    @Lonenso 这个好像可以,感谢
    pabno
        8
    pabno  
    OP
       2020-06-30 13:56:23 +08:00
    @reus 我们暂时用的还是 1.10 版本,所以应该不存在 rss 一直增长的问题
    janxin
        9
    janxin  
       2020-06-30 17:11:04 +08:00
    pabno
        10
    pabno  
    OP
       2020-07-01 18:18:44 +08:00
    @janxin 这个尝试了一下,在 linux 上跑 viewcore 会报:invalid memory address or nil pointer dereference 的错误。我现在是使用 gcore 把进程的 coredump 文件 dump 下来再使用编译后的 viewcore 分析就会报错,但是如果使用 dlv 分析是正常的。可惜 dlv 没法查看内存分布。使用的 go 版本是 1.13

    @Lonenso 这个尝试了下,还是没法得到想要的功能
    Lonenso
        11
    Lonenso  
       2020-07-01 19:45:25 +08:00
    因为你要解决内存飙升, 也有很多种情况, 我目前遇到过自己写的 goroutine 泄露导致的内存飙升. 我觉得你可以深入使用 pprof.
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5612 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 01:29 · PVG 09:29 · LAX 17:29 · JFK 20:29
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.