MongoDB Golang官方驱动中的连接池
MongoDB connection pool in Golang official driver
我在项目中有两个go文件
- main.go
此文件创建了 http 服务器和 mongoDB 连接以及一种允许使用以下方法重用连接的方法
func ConnectMongoDB() {
ctx, _ := context.WithTimeout(context.Background(), 30*time.Second)
// user Connection database
// Set client options
clientOptions := options.Client().ApplyURI("mongodb+srv://localhost:27017/demo")
// Connect to MongoDB
userclient, err = mongo.Connect(ctx, clientOptions)
if err != nil {
log.Fatal(err)
}
// Check the connection
err = userclient.Ping(ctx, nil)
if err != nil {
log.Fatal(err)
}
fmt.Println("Connected to user MongoDB!")
}
//GetMongoDBClient , return mongo client for CRUD operations
func GetMongoDBClient() *mongo.Client {
return userclient
}
- query.go
此文件然后定义数据库,然后在其上触发查询
client := GetMongoDBClient()
collection := client.Database("demo").Collection("user")
err := collection.FindOne(context.TODO(), filter).Decode(&user)
当我发出 200 个请求时,我收到了来自 Atlas 的电子邮件,说我已经超过了 80 个连接限制配额。这里如何使用连接池?
您是否尝试过 MaxPoolSize 选项:
clientOptions = clientOptions.SetMaxPoolSize(50)
我还没有在官方 mongo 驱动程序中尝试过这个,但是 mgo 驱动程序有一个类似的选项,可以按预期工作。
REM** 默认 poolSize 为 100 请参阅 Golang driver docs
我在项目中有两个go文件
- main.go
此文件创建了 http 服务器和 mongoDB 连接以及一种允许使用以下方法重用连接的方法
func ConnectMongoDB() {
ctx, _ := context.WithTimeout(context.Background(), 30*time.Second)
// user Connection database
// Set client options
clientOptions := options.Client().ApplyURI("mongodb+srv://localhost:27017/demo")
// Connect to MongoDB
userclient, err = mongo.Connect(ctx, clientOptions)
if err != nil {
log.Fatal(err)
}
// Check the connection
err = userclient.Ping(ctx, nil)
if err != nil {
log.Fatal(err)
}
fmt.Println("Connected to user MongoDB!")
}
//GetMongoDBClient , return mongo client for CRUD operations
func GetMongoDBClient() *mongo.Client {
return userclient
}
- query.go
此文件然后定义数据库,然后在其上触发查询
client := GetMongoDBClient()
collection := client.Database("demo").Collection("user")
err := collection.FindOne(context.TODO(), filter).Decode(&user)
当我发出 200 个请求时,我收到了来自 Atlas 的电子邮件,说我已经超过了 80 个连接限制配额。这里如何使用连接池?
您是否尝试过 MaxPoolSize 选项:
clientOptions = clientOptions.SetMaxPoolSize(50)
我还没有在官方 mongo 驱动程序中尝试过这个,但是 mgo 驱动程序有一个类似的选项,可以按预期工作。
REM** 默认 poolSize 为 100 请参阅 Golang driver docs