wait_timeout 28800单位是秒转化成小时便是8小时,看出MySQL的默认设置,当一个连接的空闲韶光超过8小时后,MySQL就会断开该连接,以是创造问题出在如果超过这个wait_timeout韶光(默认是8小时)对数据库没有任何操作,那么MySQL会自动关闭数据库连接以节省资源。
用命令show processlist; 可以查看Sleep状态的进程Sleep,同时可以看到每个进程Sleep多久了
办理方法1.autoReconnect
这个参数表示在mysql超时断开连接后会自动重新连接
配置的话,只须要在连接mysql的语句写上autoReconnect=true
url: jdbc:mysql://${MYSQL_HOST:127.0.0.1}:${MYSQL_PORT:6666}/d_20221222?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true
这种办法它有一些副浸染
详细先容下:
原有连接上的事务将会被回滚,事务的提交模式将会丢失原有连接持有的表的锁将会全部开释原有连接关联的会话Session将会丢失,重新规复的连接关联的将会是一个新的会话Session原有连接定义的用户变量将会丢失原有连接定义的预编译SQL将会丢失原有连接失落效,新的连接规复后,MySQL将会利用新的记录行来存储连接中的性能数据2.修正配置涉及到两个配置参数interactive_timeout和wait_timeout
wait_timeout 指的是mysql在关闭一个非交互的连接之前所要等待的秒数
interactive_time 指的是mysql在关闭一个交互的连接之前所要等待的秒数
对付交互和非交互连接,说得直白一点便是,通过mysql客户端连接数据库是交互式连接,通过jdbc连接数据库是非交互式连接。
1.会话办法
配置方法:
set interactive_timeout=28800000;
set wait_timeout=28800000;
这种办法只对当前会话生效
2.修正配置文件办法
修正/etc/my.cnf文件
之后再重启下做事器就好了
把稳:
将wait_timeout这个值设置得大了,可能会导致空闲连接过多。
如果你的MySQL Server有大量的闲置连接,他们不仅会白白花费内存,而且如果连接一贯在累加而不断开,终极肯定会达到MySQL Server的连接上限数,这会报'too many connections'的缺点。