1 回答
TA贡献1820条经验 获得超9个赞
mongo.Connect()
创建一个新的mongo.Client
并初始化它,但不(必然)创建到数据库服务器的连接。
要实际创建连接并检查服务器是否可访问(不执行查询),您可以使用该Client.Ping()
方法。如果服务器不可访问,这将返回错误。
官方的 mongodb 驱动程序管理一个内部连接池。连接在使用后不会立即关闭,而是将它们放回池中,因此当需要连接来执行操作时,可以立即使用池中的空闲连接。这是预期的行为。您可以通过options.ClientOptions
传递给mongo.Connect()
.
见ClientOptions.SetMaxPoolSize()
:
SetMaxPoolSize 指定驱动程序的连接池中允许到每个服务器的最大连接数。如果达到此最大值,对服务器的请求将被阻止。这也可以通过“maxPoolSize” URI 选项进行设置(例如“maxPoolSize=100”)。默认值为 100。如果为 0,则设置为 math.MaxInt64。
示例设置连接受限的客户端并对其执行 ping 操作:
ctx := context.Background()
opts := options.Client().
ApplyURI("mongodb://localhost").
SetMaxPoolSize(20) // Allow no more than 20 connections per server
client, err := mongo.Connect(ctx, opts)
if err != nil {
log.Printf("mongo.Connect() failed: %v", err)
return
}
defer client.Disconnect(ctx)
if err := client.Ping(ctx, nil); err != nil {
log.Printf("Can't connect to db: %v", err)
return
}
// Use client
见相关:goroutine create multiple mongodb connection
- 1 回答
- 0 关注
- 123 浏览
添加回答
举报