标签:
解决方法就是设置下面两个参数的值,就是在过期时间后自动清除sleep连接
interactive_timeout:
参数含义:服务器关闭交互式连接前等待活动的秒数。交互式客户端定义为在mysql_real_connect()中使用CLIENT_INTERACTIVE选项的客户端。
参数默认值:28800秒(8小时)
wait_timeout:
参数含义:服务器关闭非交互连接之前等待活动的秒数。
参数默认值:28800秒(8小时)
如何查看这俩值
show global variables like ‘%timeout%‘
在线程启动时,根据全局wait_timeout值或全局interactive_timeout值初始化会话timeout值,取决于客户端类型(由mysql_real_connect()的连接选项CLIENT_INTERACTIVE定义)。
也就是全局wait_timeout会决定会话(非交互连接)的timeout值;全局interactive_timeout会决定会话(交互连接)的timeout值
那什么是交互和非交互呢?
交互式操作:通俗的说,就是你在你的本机上打开mysql的客户端,就是那个黑窗口,在黑窗口下进行各种sql操作,当然走的肯定是tcp协议。
非交互式操作:就是你在你的项目中进行程序调用。比如一边是tomcat web服务器,一边是数据库服务器,两者怎么通信?在java web里,我们通常会选择hibernate或者是jdbc来连接。那么这时候就是非交互式操作。
如何设置这俩值?(记得加global全局(需要root用户下设置),不加默认是session)
set global wait_timeout=60
set global interactive_timeout=65
如上设置,网站测试后是由是65秒才会清楚sleep连接,所以你的站如果有大量的sleep连接,可以调整这个值,时间长短由业务来定,太短会频繁连接,太长占用连接。
那如果反过来
set global wait_timeout=65
set global interactive_timeout=60
打开navicat客户端 使用show variables like ‘wait_timeout‘ 显示的60;
使用show global variables like ‘wait_timeout‘ 显示的65。
还是由interactive_timeout来决定会话的timeout值
网站多sleep连接,mysql连接数不足,导致访问受阻或者不能访问问题解决
标签:
原文地址:http://www.cnblogs.com/fanqiechaodan/p/5484998.html