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

2019-11-18 16:27:33 +08:00
 petelin
后端集群. 会被 aws 扩容或者缩容, 也会被部署新代码所重启.(这是随机事件). 上千台机器, 呈现出来的就是每隔两分钟几乎 90%的机器都会触发一次 GC.

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

这种规律是不对的, 理想情况不同的机器间隔可以是 2 分钟, 但是应该在不同的时间启动对吧?
3495 次点击
所在节点    Go 编程语言
7 条回复
Raymon111111
2019-11-18 16:43:57 +08:00
每隔两分钟是不是业务有什么周期性的特点?
petelin
2019-11-18 16:50:17 +08:00
@Raymon111111 两分钟是 go 强制 gc 的时间 这个频率没问题 我们大多数业务写的代码分配不了多少内存
Raymon111111
2019-11-18 16:51:46 +08:00
@petelin 噢我知道你的问题了. 这个"两分钟触发一次"的机制是不是以绝对时间判定的, 而不是机器的启动时间.
scukmh
2019-11-18 17:01:42 +08:00
@Raymon111111 我不认为 go 语言的实现者会这么做,这样做根本没有任何的优势。
guyeu
2019-11-19 10:08:34 +08:00
我猜一下哈。。监控系统每两分钟采集一次数据,而采集数据的时间是差不多一样的?
petelin
2019-11-19 10:18:10 +08:00
@guyeu 监控是靠主动打点的 我一会看看多久上报一次 指标用的是 go runtime 的读到的 lastgc time 感谢思路
reus
2019-12-09 10:13:14 +08:00
两分钟如果没有 gc,就会 gc 一次
内存达到阈值也会触发 gc,不是两分钟才有 gc

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/620716

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX