使用mgo框架,mongo每次重启,依赖它的服务都会出现Closed explicitly错误?

mongo容器和其他服务在不同的主机上,有时候mongo所在的主机重启或者其他情况导致的重启,依赖mongo的微服务都会报Closed explicitly这个错误,应该是没有断线重连导致的
项目代码如下,session是全局的


    session, err := mgo.Dial(conf.Conf().Mongo.Url)
if err != nil {
log.WithError(err).Fatal("连接数据库失败")
}
db = session.DB(db_RANBB)

看了官方https://github.com/go-mgo/mgo/issues/166 的回复,意思是使用copy出来的session?这样会不会导致无法使用连接池啊

已邀请:

jodezer

赞同来自:

copy出来的session才会充分利用连接池。全局session里的连接如果不被回收,是不会自己重连的。


有兴趣可以看下我写过的一篇相关博客

tupunco

赞同来自:

标准做法就是 CopySession(), 才会走连接池, 并且不会有 并发 问题.
session, err := mgo.Dial(conf.Conf().Mongo.Url) 这样缓存的 session 只是拿了个野鸡 Session 指针 极不稳定.
mgo 设计的时候有个东西没有做好, 就是 sessionconn 被人搞的 傻傻分不清.
xorm 设计就很好, Engine=>Session 一脉相承.

要回复问题请先登录注册