您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

mgo-查询性能似乎持续缓慢(500-650ms)

mgo-查询性能似乎持续缓慢(500-650ms)

..有什么明显的证据可以表明为什么我的查询器平均需要500-650ms?

在这里。您mgo.Dial()在执行每个查询之前先进行调用mgo.Dial()必须每次都连接到MongoDB服务器,在查询后立即关闭它。建立连接很可能需要数百毫秒,包括身份验证,分配资源(在服务器和客户端),等等。这非常浪费。

然后,在获取的会话上使用“新建”或“复制”方法建立到同一群集的其他会话。这将使它们共享基础群集,并适当地管理连接池。

创建一个全局会话变量,在启动时连接 一次 (使用例如包init()函数),然后使用该会话(或由Session.Copy()或获得的该会话的副本/克隆Session.Clone())。例如:

var session *mgo.Session
var info *db.Inf // Use your type here

func init() {
    var err error
    if info, err = db.Info(); err != nil {
        log.Fatal(err)
    }
    if session, err = mgo.Dial(info.ConnectionString()); err != nil {
        log.Fatal(err)
    }
}

func (r userRepo) GetUserByID(id string) (User, error) {
    sess := session.Clone()
    defer sess.Close()

    // Now we use sess to execute the query:
    var user User
    c := sess.DB(info.Db()).C("users")
    // Rest of the method is unchanged...
}
Go 2022/1/1 18:14:30 有561人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶