如何在 golang 中管理超过 100000 个 goroutine 的 MongoDB 连接。我已经创建了一个实例,然后使用相同的客户端,但它创建了多个连接。*mongo.Client
1 回答
12345678_0001
TA贡献1802条经验 获得超5个赞
怪物。客户端管理内部连接池。您不必担心这一点。 可安全并发使用。mongo.Client
如果要限制内部池,可以在连接时使用 ClientOptions 执行此操作。例如:
clientOpts := options.Client().ApplyURI("<your-connection-string>").
SetMaxPoolSize(100) // Allow no more than 100 connections
client, err := mongo.Connect(context.TODO(), clientOpts)
if err != nil {
log.Fatal(err)
}
引用自 ClientOptions.SetMaxPoolSize():
SetMaxPoolSize 指定驱动程序的连接池中允许的最大连接数到每个服务器。如果达到此最大值,则对服务器的请求将阻塞。这也可以通过“maxPoolSize”URI选项进行设置(例如“maxPoolSize=100”)。默认值为 100。如果此值为 0,则将其设置为数学。MaxInt64.
ClientOptions还具有设置 和 属性的方法。MaxConnIdleTimeMinPoolSize
但要知道,这不会加快速度。如果你有十万个goroutines都与MongoDB交互,那么MongoDB很可能成为你的瓶颈。
- 1 回答
- 0 关注
- 107 浏览
添加回答
举报
0/150
提交
取消