V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
petelin
V2EX  ›  Go 编程语言

Go GC 的一个诡异问题, 不同后端集群的机器 GC 启动时间几乎相同

  •  
  •   petelin · 2019-11-18 16:27:33 +08:00 · 3503 次点击
    这是一个创建于 1836 天前的主题,其中的信息可能已经有所发展或是发生改变。
    后端集群. 会被 aws 扩容或者缩容, 也会被部署新代码所重启.(这是随机事件). 上千台机器, 呈现出来的就是每隔两分钟几乎 90%的机器都会触发一次 GC.

    奇怪的是不同的机器启动服务时间点是不一样的. 怎么就呈现出来规律了?

    这种规律是不对的, 理想情况不同的机器间隔可以是 2 分钟, 但是应该在不同的时间启动对吧?
    7 条回复    2019-12-09 10:13:14 +08:00
    Raymon111111
        1
    Raymon111111  
       2019-11-18 16:43:57 +08:00
    每隔两分钟是不是业务有什么周期性的特点?
    petelin
        2
    petelin  
    OP
       2019-11-18 16:50:17 +08:00 via iPhone
    @Raymon111111 两分钟是 go 强制 gc 的时间 这个频率没问题 我们大多数业务写的代码分配不了多少内存
    Raymon111111
        3
    Raymon111111  
       2019-11-18 16:51:46 +08:00
    @petelin 噢我知道你的问题了. 这个"两分钟触发一次"的机制是不是以绝对时间判定的, 而不是机器的启动时间.
    scukmh
        4
    scukmh  
       2019-11-18 17:01:42 +08:00
    @Raymon111111 我不认为 go 语言的实现者会这么做,这样做根本没有任何的优势。
    guyeu
        5
    guyeu  
       2019-11-19 10:08:34 +08:00
    我猜一下哈。。监控系统每两分钟采集一次数据,而采集数据的时间是差不多一样的?
    petelin
        6
    petelin  
    OP
       2019-11-19 10:18:10 +08:00 via iPhone
    @guyeu 监控是靠主动打点的 我一会看看多久上报一次 指标用的是 go runtime 的读到的 lastgc time 感谢思路
    reus
        7
    reus  
       2019-12-09 10:13:14 +08:00 via Android
    两分钟如果没有 gc,就会 gc 一次
    内存达到阈值也会触发 gc,不是两分钟才有 gc
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3505 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 52ms · UTC 04:47 · PVG 12:47 · LAX 20:47 · JFK 23:47
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.