在生产环境用过的 golang 堆有多大, GC 表现如何? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
ncisoft
V2EX    Go 编程语言

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

  •  
  •   ncisoft 2016-06-01 04:34:48 +08:00 via Android 3000 次点击
    这是一个创建于 3421 天前的主题,其中的信息可能已经有所发展或是发生改变。
    包括 GC 前后堆的内存占用大小, GC 用时, GC 进行时对性能和服务 sla 的影响
    17 条回复    2016-08-04 23:43:20 +08:00
    xiamx
        1
    xiamx  
       2016-06-01 06:56:33 +08:00
    一般 SLA 都是说在 99%的情况下, 200ms 内响应这类的
    loading
        2
    loading  
       2016-06-01 07:32:44 +08:00 via Android
    如果怕 gc 影响,可以看看百度(?)的方案。
    ncisoft
        3
    ncisoft  
    OP
       2016-06-01 07:39:54 +08:00 via Android
    @loading 百度方案可否提供进一步的资料,比如链接
    mengzhuo
        4
    mengzhuo  
       2016-06-01 07:44:57 +08:00 via iPhone
    优化得好的话一般 gc 在 100ms 以下
    sla 除了要升级或者重大 bug 要不然不会有影响
    ncisoft
        5
    ncisoft  
    OP
       2016-06-01 07:49:29 +08:00 via Android
    @mengzhuo 不谈堆多大,光说 GC 时间没什么意义吧, JAVA mini GC 时间也很短,然并卵,一到 full GC 就都是渣
    mengzhuo
        6
    mengzhuo  
       2016-06-01 07:55:31 +08:00 via iPhone
    @ncisoft 不说应用场景和请求量 你觉得你问题合格么?
    golang gc 就是 stw 的 你不了解的东西就一票否决?
    ncisoft
        7
    ncisoft  
    OP
       2016-06-01 08:02:20 +08:00 via Android
    @mengzhuo 我一票否决啥了?我又没用过 golang ,怎么提应用场景和请求量
    qgy18
        8
    qgy18  
       2016-06-01 08:10:22 +08:00 via iPhone   1
    mengzhuo
        9
    mengzhuo  
       2016-06-01 08:15:07 +08:00 via iPhone
    @ncisoft
    连应用场景都没有那你问个啥?浪费我铜币。
    有时间发贴
    不如看看自己是不是写得不好有内存泄漏吧
    ncisoft
        10
    ncisoft  
    OP
       2016-06-01 08:16:24 +08:00 via Android
    @qgy18 谢谢分享,百度的方法挺有趣的
    ncisoft
        11
    ncisoft  
    OP
       2016-06-01 08:19:12 +08:00 via Android
    @mengzhuo 我没写过一行 golang ,哪来的内存泄露? JAVA/C 我倒写过不少。我一票否决啥了?这个问题你是要回避了么
    me820
        12
    me820  
       2016-06-01 08:30:37 +08:00
    在跑推送环境,长期有单服务器 10k 链接要维持,没有发现 GC 影响了什么。
    反倒是自己写的 map 的容易内存溢出,目测 GC 的回收次数非常少(runtime 的情况)。
    janxin
        13
    janxin  
       2016-06-01 08:33:09 +08:00 via iPhone
    关键你还是要给具体的参数,比如连接数多少?长链接短连接?等等,要不然 gc 也没法告诉你需要停留多少,消耗多少堆。一般来说 gc 时间与对象正相关,堆大小也是。技巧上一些情况可以 0 alloc ,所以你不说清楚这个问题没有答案的
    fuxiaohei
        14
    fuxiaohei  
       2016-06-01 09:18:08 +08:00   3
    我这边的数据,单服务器最高 10k 长链接,内存占用 3-6G 波动, GC 时间 10-50ms

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

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

    你可以去看看 GopherChina 的一些分享,有大厂的实际数据
    mathgl
        17
    mathgl  
       2016-08-04 23:43:20 +08:00
    @fuxiaohei 百度有人分享过 go-lang 应用的例子,好象他们对 go 的 gc 还是不够满意,于是使用了多进程,暴力杀死进程再启动的方式来避免延迟。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3161 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 12:15 PVG 20:15 LAX 05:15 JFK 08:15
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86