限制Go程序CPU占用率的最简单办法

linker   ·   发表于 11个月前   ·   Go语言

有时候, 由于Go程序使用了很多文件IO或者系统调用,导致Go运行时创建了很多线程。

这些线程如果争抢CPU,就会导致服务器卡顿。

GOMAXPROCS

这个环境变量可以控制,Go运行时的令牌数,也就控制了并行执行的线程数。

进而控制了Go程序最大可能占用的CPU核心数。

export GOMAXPROCS=1


然后执行:

env GODEBUG=schedtrace=1000 godoc -http=:8080 -index

可以观察到:

SCHED 0ms: gomaxprocs=1 idleprocs=0 threads=3 spinningthreads=0 idlethreads=0 runqueue=0 [2]



1 Reply   |  Until 6个月前 | 86 View

linker
发表于 6个月前

实测有效。

评论列表

  • 加载数据中...

编写评论内容
LoginCan Publish Content