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

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

  •  
  •   petelin · 24 天前 · 1596 次点击
    后端集群. 会被 aws 扩容或者缩容, 也会被部署新代码所重启.(这是随机事件). 上千台机器, 呈现出来的就是每隔两分钟几乎 90%的机器都会触发一次 GC.

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

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