为了账号安全,请及时绑定邮箱和手机立即绑定

负载下降后,线程会粘在周围

负载下降后,线程会粘在周围

Go
梦里花落0921 2022-06-21 10:31:41
我有基于反向代理服务器。当我监控应用程序上的指标时(使用 prometheus),我注意到当应用程序上的负载增加时,应用程序上的线程(go_threads)从大约 20 到大约 55。然后在负载消失后,这些线程仍然存在,即使经过几个小时。但是我可以看到go_goroutines内存使用量下降,但线程没有。我有一些问题go中线程池的默认大小是多少?空闲线程会停留多长时间?
查看完整描述

2 回答

?
慕标5832272

TA贡献1966条经验 获得超4个赞

go中线程池的默认大小是多少?

GOMAXPROCS

空闲线程会停留多长时间?

直到进程终止

注意:

代表 Go 代码在系统调用中可以阻塞的线程数没有限制;这些不计入 GOMAXPROCS 限制。

这意味着保持低线程数的最佳机会是减少阻塞系统调用。


查看完整回答
反对 回复 2022-06-21
?
长风秋雁

TA贡献1757条经验 获得超7个赞

对于您的第一个问题,我找不到线程池的默认大小,但是runtime/debug.SetMaxThreads的文档似乎表明,只要现有 OS 线程被阻塞,就会创建一个新线程。Go 运行时可能仅从单个 OS 线程开始并根据需要创建更多线程,但这可能会因 Go 的版本而异。

至于你的第二个问题,空闲的操作系统线程目前一直存在。有一个未解决的问题https://github.com/golang/go/issues/14592处理关闭空闲线程,但是截至最新的 Go 版本(1.14),几乎没有工作要做。


查看完整回答
反对 回复 2022-06-21
  • 2 回答
  • 0 关注
  • 130 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信