背景
go目前的最新大版本开发到1.20了,中间经过几个大的版本发布,支持了很多新特性。
- 1.18支持泛型,并优化了性能(据官网说提升了20%)。日常项目的开发中对泛型的需求比较迫切,降低重复代码量。
- 1.19支持对memory进行限制,我们希望后续可以对内存进行一定的限制。
本地 trace分析
下面是部分trace日志
结论:从STW(stop the world)时间来看,go1.19.4的整体gc表现是要更好的。
释义参考:GODEBUG之gctrace干货解析
测试中还发现,后续的gc均为强制触发(Forced),即golang内部机制每2分钟左右会触发一次gc,猜测是后续的内存增长未达到gc goal。
灰度验证分析
动作:14:05分开始30%的灰度发布,14:18开始50%灰度,14:32开始100%灰度。
拉长时间线观察
结论:从监测数据可以看出,升级到1.19后 p99的rt有明显的下降。