最近看了一遍 runtime ,去尝试了之前遗留的一个工作:调整 k8s 中容器的 GOMAXPROCS ,效果还不错。
在 11:35 左右, 我们将应用的 GOMAXPROCS 从默认的 32/64 主动设置为 4, 对比 14:30 和 11:30 的数据可以看到:
- go version: 1.17
- 线程数量从 49 下降到 13, 符合预期
- 受业务影响, QPS +13%
- 接口平均响应时间 -9%, CPU -5%
- GC 的耗时 -59%, STW(StopTheWorld) 的时间 -12%
- goroutine 在 Runnable 停留的时间 +50%
