com.mysql.jdbc.exceptions.jdbc4.CommunicationsException异常解决

项目开发,Tomcat+Mysql,经常在早上刚到公司,第一次访问项目的时候会报以下异常:

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException

这是因为Mysql5的连接等待时间(wait_timeout)默认8小时。

我们可以通过以下方法查看你的mysql 的默认连接等待时间是多少:

show global variables like 'wait_timeout';

结果如下:

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException异常解决_第1张图片

此查询的时间单位是秒(s)

在wait_timeout时间内,mysql的连接(connection)处于等待状态,一旦超过这个时间,mysql5就会关闭。但是在我们的项目中的连接池中仍存在合法的connection,当你的程序需要再次访问数据库时,就会出现以上异常,但是再重新访问,又能正常从数据库中获取到数据。

这个时间是可以修改的,在windows中最大可设置为24天,需要修改mysql5的安装文件夹中的my.ini文件。

LInux中最大为365天,需要修改/etc/my.cnf文件。文件中添加一行配置:wait_timeout=1814400,(大约21天)重启mysql服务之后生效。

或者可以使用sql修改,但重启之后又会恢复成8小时,因此不推荐此方法:

mysql> set global wait_timeout=1814400;
mysql> show global variables like 'wait_timeout';

但是,即使你修改了时间,系统若长时间不用,一旦超过你设置的时间,再次访问依然会出现上述异常情况。因此,我又找了另一个可以永久解决该问题的办法。

我的解决方法:

方法一:减少连接池内连接的生存周期:

       
        
        
 

方法二:定期使用连接池中的连接,使其不失效

    
        
        
        
  

参考:

https://www.cnblogs.com/ygj0930/p/6405861.html

你可能感兴趣的:(JavaWeb)