有时候, 由于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]
linker
发表于 10个月前
实测有效。
评论列表
加载数据中...