使用 GOMAXPROCS 优化 Go 性能

2024-11-26

文章讲述了作者在使用 Go 开发的 Kubernetes 监控平台 Metoro 中遇到的性能问题。由于未显式设置 GOMAXPROCS 参数,导致在核心数较多的主机上,Go 运行时函数 runtime.Schedule 和 runtime.gcBgMarkWorker 消耗了过多的 CPU 资源。作者通过分析火焰图、复现问题并查阅资料,最终确定问题根源在于 GOMAXPROCS 的默认值等于 CPU 核心数,与容器环境的资源限制不匹配。最终,作者通过 Kubernetes downward API 将 GOMAXPROCS 设置为容器的 CPU 配额,解决了性能问题。

6
未分类 GOMAXPROCS