定时释放mysql连接_怎么解决MySQL连接闲置超时的问题?

这里涉及到MySQL关于交互式连接和非交互式连接的概念。

交互式连接

通俗的说,在cmd里直接和MySQL进行各种sql操作的连接方式就是交互式连接,这里走的是TCP协议。

非交互式连接

而直接在项目中对MySQL进行sql操作的方式则是非交互式连接,我们的应用服务器通过Hibernate或者JDBC来实现和数据库的通信。

这两种连接方式都有各自对应的一个超时时间属性,交互式连接是interactive_timeout;非交互式连接是wait_timeout。

既然是闲置超时,那么解决的办法也很简单,就是直接将这个时间设置得更长些;在MySQL中最多可以设置到365天(即31536000,默认单位是s),有两种设置的方法。

第一种设置方式:修改配置文件my.ini文件

该配置文件在MySQL的安装目录下,如果没有此文件,可以复制my-default.ini文件,将生成的复件重命名成my.ini;然后在文件中添加如下语句:

wait_timeout=31536000

interactive_timeout=31536000

如果没有这两个语句则表示默认值是8小时(60*60*8=28800);需要注意的是,wait_timeout的最大值分别是24天/365天(Windows/Linux)。

第二种设置方式:使用mysql命令进行修改

set global interactive_timeout=设置值

set global wait_timeout=设置值

不过闲置时间设置得过大并不好,MySQL里大量的SLEEP连接无法及时释放,拖累系统性能;设置得过小又容易产生如上所述的错误;由于我们的web项目中经常会使用到连接池技术,所以我们有更好的解决方法,那就是在项目中设置连接池的属性。

本文是使用的c3p0,所以这里只介绍c3p0的设置方法,如下:

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

既然MySQL连接的默认闲置时间是8小时,那么只要将连接池内连接的生产周期设置得比8小时短就行了。

方法二:定期使用连接池内的连接

本文由职坐标整理发布,欢迎关注职坐标MySQL频道,学习更多数据库知识!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值