The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
ncisoft

在生产环境用过的 golang 堆有多大, GC 表现如何?

  •  
  •   ncisoft · Jun 1, 2016 via Android · 3495 views
    This topic created in 3661 days ago, the information mentioned may be changed or developed.
    包括 GC 前后堆的内存占用大小, GC 用时, GC 进行时对性能和服务 sla 的影响
    17 replies    2016-08-04 23:43:20 +08:00
    xiamx
        1
    xiamx  
       Jun 1, 2016
    一般 SLA 都是说在 99%的情况下, 200ms 内响应这类的
    loading
        2
    loading  
       Jun 1, 2016 via Android
    如果怕 gc 影响,可以看看百度(?)的方案。
    ncisoft
        3
    ncisoft  
    OP
       Jun 1, 2016 via Android
    @loading 百度方案可否提供进一步的资料,比如链接
    mengzhuo
        4
    mengzhuo  
       Jun 1, 2016 via iPhone
    优化得好的话一般 gc 在 100ms 以下
    sla 除了要升级或者重大 bug 要不然不会有影响
    ncisoft
        5
    ncisoft  
    OP
       Jun 1, 2016 via Android
    @mengzhuo 不谈堆多大,光说 GC 时间没什么意义吧, JAVA mini GC 时间也很短,然并卵,一到 full GC 就都是渣
    mengzhuo
        6
    mengzhuo  
       Jun 1, 2016 via iPhone
    @ncisoft 不说应用场景和请求量 你觉得你问题合格么?
    golang gc 就是 stw 的 你不了解的东西就一票否决?
    ncisoft
        7
    ncisoft  
    OP
       Jun 1, 2016 via Android
    @mengzhuo 我一票否决啥了?我又没用过 golang ,怎么提应用场景和请求量
    qgy18
        8
    qgy18  
       Jun 1, 2016 via iPhone   ❤️ 1
    mengzhuo
        9
    mengzhuo  
       Jun 1, 2016 via iPhone
    @ncisoft
    连应用场景都没有那你问个啥?浪费我铜币。
    有时间发贴
    不如看看自己是不是写得不好有内存泄漏吧
    ncisoft
        10
    ncisoft  
    OP
       Jun 1, 2016 via Android
    @qgy18 谢谢分享,百度的方法挺有趣的
    ncisoft
        11
    ncisoft  
    OP
       Jun 1, 2016 via Android
    @mengzhuo 我没写过一行 golang ,哪来的内存泄露? JAVA/C 我倒写过不少。我一票否决啥了?这个问题你是要回避了么
    me820
        12
    me820  
       Jun 1, 2016
    在跑推送环境,长期有单服务器 10k 链接要维持,没有发现 GC 影响了什么。
    反倒是自己写的 map 的容易内存溢出,目测 GC 的回收次数非常少(runtime 的情况)。
    janxin
        13
    janxin  
       Jun 1, 2016 via iPhone
    关键你还是要给具体的参数,比如连接数多少?长链接短连接?等等,要不然 gc 也没法告诉你需要停留多少,消耗多少堆。一般来说 gc 时间与对象正相关,堆大小也是。技巧上一些情况可以 0 alloc ,所以你不说清楚这个问题没有答案的
    fuxiaohei
        14
    fuxiaohei  
       Jun 1, 2016   ❤️ 3
    我这边的数据,单服务器最高 10k 长链接,内存占用 3-6G 波动, GC 时间 10-50ms

    Golang 的 GC 现在都是 background goroutine 执行了,真正 STW 的时间很短。

    除非是百度那种日均十亿以上级别的服务, GC 不会对程序性能有明显的影响。
    ncisoft
        15
    ncisoft  
    OP
       Jun 1, 2016 via Android
    @fuxiaohei 这个实际数据很有参考价值,非常感谢
    fuxiaohei
        16
    fuxiaohei  
       Jun 1, 2016
    @ncisoft 我的程序还没经过深度优化,只是简单的处理了一些占用 cpu 和内存的点,并不是高效的。但是业务量有限所以没有进一步优化需求。

    你可以去看看 GopherChina 的一些分享,有大厂的实际数据
    mathgl
        17
    mathgl  
       Aug 4, 2016
    @fuxiaohei 百度有人分享过 go-lang 应用的例子,好象他们对 go 的 gc 还是不够满意,于是使用了多进程,暴力杀死进程再启动的方式来避免延迟。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   928 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 41ms · UTC 21:34 · PVG 05:34 · LAX 14:34 · JFK 17:34
    ♥ Do have faith in what you're doing.