您的位置:首页 > 数据库 > MySQL

解决MySQL自动断开连接的问题

2017-05-22 15:49 766 查看
[b]有三个方法可以解决这个问题:[/b]1:修改MySQL配置参数2:修改JDBC3:修改第三方的数据库连接池应用 Proxool.xml方法1的解决方案:
这个参数的名称是 wait_timeout,其默认值为 28800秒(8小时)。其意义为关闭一个连接之前在这个连接上等到行动的秒数,也就是说,如果一个连接闲置超过这个选项所设置的秒数,MySQL 会主动断开这个连接。在其客户程序中可以输入命令语句查看其值: show variables like '%timeout%'; 或者命令:show global variables like 'wait_timeout' 查看等待时间修改操作:Linux下打开/etc/my.cnf,在属性组mysqld下面添加参数如下:[mysqld]interactive_timeout=28800000 (28800000=8000个小时)wait_timeout=28800000windows下打开my.ini,增加:interactive_timeout=28800000wait_timeout=28800000[b]在msql5中wait_timeout的最大值分别是24d/365(win/linux);[/b][b]没有办法把这个值设置成无限大,[/b]因此如果你无法保证你的应用程序必定在设定的秒数内至少有一次操作,那么最好用第二个方法解决这个问题。方法二的解决方案:修改如下JDBC连接的 URL:jdbc:mysql://hostaddress:3306/schemaname?autoReconnect=true添加 autoReconnect=true 这个参数,即能解决这个问题。方法三的解决方案:配置文件(proxool.xml):<?xml version="1.0"encoding="UTF-8"?><something-else-entirely><proxool><!-- proxool别名 --><alias>mysql</alias><!-- 数据库连接URL --><driver-url>jdbc:mysql://localhost/yourDatebase?useUnicode=true&characterEncoding=UTF-8</driver-url><!-- JDBC驱动名称 --><driver-class>com.mysql.jdbc.Driver</driver-class><!-- 数据库连接帐号 --><driver-properties><property name="user"value="root" /><property name="password"value="password" /></driver-properties><!-- proxool自动侦察各个连接状态的时间间隔(毫秒),侦察到空闲的连接就马上回收,超时的销毁 --><house-keeping-sleep-time>90000</house-keeping-sleep-time><!-- 指因未有空闲连接可以分配而在队列中等候的最大请求数,超过这个请求数的用户连接就不会被接受 --><maximum-new-connections>20</maximum-new-connections><!-- 最少保持的空闲连接数 --><prototype-count>3</prototype-count><!-- 允许最大连接数,超过了这个连接,再有请求时,就排在队列中等候,最大的等待请求数由maximum-new-connections决定 --><maximum-connection-count>20</maximum-connection-count><!-- 最小连接数 --><minimum-connection-count>3</minimum-connection-count><!-- 在分配连接前后是否进行有效性测试,这个是解决本问题的关键 --><test-before-use>true</test-before-use><test-after-use>true</test-after-use><!-- 用于测试的SQL语句一定要写(不知道问什么)--><house-keeping-test-sql>SELECTCURRENT_USER</house-keeping-test-sql></proxool></something-else-entirely>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐