问题描述
在使用beego 做api服务时,经常性接口请求超时,查看log时发现
[mysql] 2018/11/25 22:46:26 connection.go:372: invalid connection
原因是:程序在重复使用数据库tcp连接池中的某个连接时,该命中连接可能已被服务器过期丢弃,而客户端这边认为该连接为过期,还有效。此时会报错 invalid connection。随后将该连接重连接池中丢弃
解决方法
加上
orm.SetMaxIdleConns(aliasName, maxIdleConns)
orm.SetMaxOpenConns(aliasName, maxOpenConns)
orm.RegisterDriver("mysql", orm.DRMySQL)
orm.RegisterDataBase("default", "mysql", getDbStr(userModel.USER_DB), 30)
orm.RegisterModelWithPrefix("tb_", new(userModel.User))
orm.SetMaxIdleConns("default", 1000)
orm.SetMaxOpenConns("default", 1000)