Goroutine 数量是越多越好吗?

本文阅读 2 分钟
首页 golang 正文
题目序号:3417
题目来源:百度
频次: 1

答案:豪豪、栾龙生

  1. 协程具体开多少个主要根据不同的业务场景来决定
协程那么小 随便开啊,这其实是不正确的思想,协程虽然小,但是也是资源,且大量goroutine切换也需要消耗很多资源。
因此在真正的生产环境中,需要对自己的业务设计一个协程池,复用协程。
  1. 开很多会导致主进程奔溃
默认goroutine 最大开启数量是10k,但是如果不用channel | sync.WaitGroup控制,一般程序回直接崩溃

goroutine的限制

理论上会受内存的影响,假设一个 Goroutine 创建需要 4k:

4k * 80,000 = 320,000k ≈ 0.3G内存
4k * 1,000,000 = 4,000,000k ≈ 4G内存
以此就可以相对计算出来一台单机在通俗情况下,所能够创建 Goroutine 的大概数量级别。

开启过多协程造成影响

在Golang中,Goroutine虽然很好,但是数量太多了,往往会带来很多麻烦,比如耗尽系统资源导致程序崩溃,或者CPU使用率过高导致系统忙不过来。

本文来自投稿,不代表本站立场,如若转载,请注明出处:
了解中间件吗?有什么好处?
« 上一篇 09-17
Go 高并发的特点
下一篇 » 09-17

发表评论

发表评论