问题描述
我使用以下Go语言编写的函数连接到MongoDB
func Connect() (client *mongo.Client) {
s = "mongodb+srv://" + os.Getenv("MONGO_ATLAS_USER_NAME") + ":" + os.Getenv("MONGO_ATLAS_PASSWORD") + "@" + os.Getenv("MONGO_ATLAS_HOST")
cwt,_ := strconv.Atoi(os.Getenv("CONTEXT_WAIT_TIME"))
ctx,cn := context.WithTimeout(context.Background(),time.Duration(rand.Intn(cwt))*time.Second)
defer cn()
options := options.Client().ApplyURI(s).SetReadPreference(readpref.Secondary()).SetReadConcern(readconcern.Local())
options.SetMaxPoolSize(5000)
client,e := mongo.Connect(ctx,options)
Checkerror(e)
e = client.Ping(ctx,readpref.Secondary())
Checkerror(e)
return
}
它应该将所有请求发送到Secondary
数据中心,但是所有Read IOPS
在Primary
实例上可见。
我想将所有读取的查询发送到副本。
我已经检查了此文档,并按照建议设置了Read Preference
https://docs.atlas.mongodb.com/reference/replica-set-tags/index.html
这是我的仪表板上的结果。所有读取的查询都将转到主实例,并导致disks IOPS
峰值
我缺少什么?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)