菜单

MySQL连接失效问题

2017年4月6日 - 数据库
服务器程序运行一段时间后出现异常,经查看应用日志,发现有个MySQL相关的异常,信息为“MySQL server has gone away”。网上搜索,这里有一些解释和解决方案。我们用的是阿里云的RDS,要修改wait_timeout值的时候发现这个值的设置是有上限的,而且这种方法也不能彻底解决问题,只要服务器超过这个时间长度没有使用数据库连接池里的某个连接,再次试图使用时还是会抛出这个异常。刚开始想使用mysql_ping函数来解决问题,但是这个函数也不知道在哪里声明定义,它会对连接做各种判断也会比较麻烦,后来就想到,既然是因为长时间不用这个连接导致问题出现,那我们就时不时使用它一下不就ok了。比如我连接池里有100个MySQL连接,每2分钟我就拿一个出来用一下,当然是做很简单的查询,比如“select id from user limit 1”。每个连接被使用后也被移到了连接池中队列的后面,这样就能保证200分钟内每个连接都被使用至少一次,而wait_timeout的值设置为8小时即480分钟,问题也就得到解决了。

发表评论