前言
MySQL5.0以后针对超长时间数据库连接做了一个处理,即一个数据库连接在无任何操作情况下过了 8 个小时后(MySQL 服务器默认的超时时间是 8 小时),MySQL 会自动把这个连接关闭。这就是问题的所在,在连接池中的connections如果空闲超过8小时,mysql将其断开,而连接池自己并不知道该connection已经失效,如果这时有 Client请求connection,连接池将该失效的Connection提供给Client,将会造成No operations allowed after connection closed异常。
解决方法
通过修改mysql配置文件my.cnf文件永久改动超时时间,如下配置
wait_timeout=604800 #最长连接等待超时时间
interactive_timeout=604800 #最长连接等待超时时间