MySQL Server has gone away
问题产生?
在一次清理完 数据库表的碎片之后,并重启了Mysql实例 线上项目进行sql查询时则产生了下面的问题。 MySQL Server has gone away
问题排查。
- MySQL服务宕机了 (因为已经重启 所以排除)
- Mysql的链接进程被主动kill掉。(这个也排除了 因为无人操作)
- Mysql 链接超时 ,在某个mysql长连接的很久没有新的请求,达到了server端的timeout,被server强行关闭,此后再通过这个connection发起查询时,就会报错 server has gone away。(经过排查是属于这种)
问题分析
排查到属于第三种报错情况,因为当前项目使用的是一个基于swoole的常驻内存的框架,所以在进行mysql重启实例时,没有重启 swoole进程,导致连接是旧的然后报了 server has gone away的错误,接着我们重启了项目以后,就正常运行了。