1 回答

TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超9個(gè)贊
mongo.Connect()
創(chuàng)建一個(gè)新的mongo.Client
并初始化它,但不(必然)創(chuàng)建到數(shù)據(jù)庫服務(wù)器的連接。
要實(shí)際創(chuàng)建連接并檢查服務(wù)器是否可訪問(不執(zhí)行查詢),您可以使用該Client.Ping()
方法。如果服務(wù)器不可訪問,這將返回錯(cuò)誤。
官方的 mongodb 驅(qū)動(dòng)程序管理一個(gè)內(nèi)部連接池。連接在使用后不會(huì)立即關(guān)閉,而是將它們放回池中,因此當(dāng)需要連接來執(zhí)行操作時(shí),可以立即使用池中的空閑連接。這是預(yù)期的行為。您可以通過options.ClientOptions
傳遞給mongo.Connect()
.
見ClientOptions.SetMaxPoolSize()
:
SetMaxPoolSize 指定驅(qū)動(dòng)程序的連接池中允許到每個(gè)服務(wù)器的最大連接數(shù)。如果達(dá)到此最大值,對(duì)服務(wù)器的請(qǐng)求將被阻止。這也可以通過“maxPoolSize” URI 選項(xiàng)進(jìn)行設(shè)置(例如“maxPoolSize=100”)。默認(rèn)值為 100。如果為 0,則設(shè)置為 math.MaxInt64。
示例設(shè)置連接受限的客戶端并對(duì)其執(zhí)行 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
見相關(guān):goroutine create multiple mongodb connection
- 1 回答
- 0 關(guān)注
- 159 瀏覽
添加回答
舉報(bào)