egg-mysql超过空闲时间之后断开连接的问题
一段时间不操作数据库之后,再进行操作,比如执行await app.mysql.query(..)时就要很久才能返回(很多时候对于前端来说就超时直接返回接口调用失败了),目测是长时间没操作数据库连接断开了,在egg-mysql文档里面没看到有检测连接状态和重连的方法,不知道大家是怎么处理这种情况的呢 ?
我碰到过这个问题 是mysqljs/mysql这个库维护的连接池没有超时销毁的问题,好像是服务端的mysql连接有一个8小时的强制销毁机制啥的,不会通知到客户端断开,所以客户端的连接池的连接会一直存在, 可以看看这个PRAdd idleConnectionTimeout to pool options。 我的临时做法是开定时任务select 1让连接保活
我碰到过这个问题 是mysqljs/mysql这个库维护的连接池没有超时销毁的问题,好像是服务端的mysql连接有一个8小时的强制销毁机制啥的,不会通知到客户端断开,所以客户端的连接池的连接会一直存在, 可以看看这个PRAdd idleConnectionTimeout to pool options。 我的临时做法是开定时任务select 1让连接保活
MySQL 本身是有个 等待超时的参数 wait_timeout 默认是 8小时,这时候使用 select 1 保活是很好的处理方案。 但是如果连接被销毁,在用这个连接执行 SQL 是会报错的。 还有题主的一段时间是多久? 应该没有8小时的
@jjeejj 我后来也是采用 @bolin-L 开定时任务的方法来处理了