java批量插入mysql连接自己断掉解决mysql自动断开连接的问题
有三个方法可以解决这个问题:
1:修改MySQL配置参数
2:修改JDBC
3:修改第三方的数据库连接池应用 Proxool.xml
方法1的解决方案:
这个参数的名称是 wait_timeout , 其默认值为 28800秒(8小时) 。其意义为关闭一个连接之前在这个连接上等到行动的秒数,也就是说,如果一个连接闲置超过这个选项所设置的秒数,MySQL 会主动断开这个连接 。
解决MySQL8小时自动断开连接的问题(DBCP配置) 最近做的一个JavaWeb项目 , 持久层用SpringJDBC+DBCP+MySQL 。一开始只配置了DBCP的一些常用参数,没有注意对空闲连接的检查和回收 。项目部署在tomcat后,刚开始使用没用问题 。第二天再试图登录时,发生了报错:
可以看到,报错信息提示上次交互已经是82664635ms前 , 超过了MySQL server配置的'wait_timeout'(默认是8小时),所以该连接已经被MySQL回收了,但DBCP不知道连接已被回收 , 依然试图执行操作,引发了异常 。报错信息提示可以修改wait_timeout或者添加autoReconnect=true 。
(备注:mysql5以上的 , 设置autoReconnect=true 是无效的 只有4.x版本,起作用)
这两个参数的默认值是8小时(60 60 8=28800) 。注意:wait_timeout的最大值只允许2147483 (24天左右)
也可以用MySQL命令进行修改
这种办法治标不治本 。
2.减少连接池内连接的生存周期,使之小于上一项中所设置的wait_timeout 的值 。
也就是说,让已经断开的空闲连接没有机会被使用 , 提前被回收 。
以C3P0配置为例:
【mysql老是断开怎么办 mysql自动断开的原因】 DBCP中配置minEvictableIdleTimeMillis即可 。
3.配置连接池
定期使用连接池内的连接,使得它们不会因为闲置超时而被 MySQL 断开 。并且每次使用连接前检查连接是否可用,定期回收空闲的连接 。
修改 c3p0 的配置文件,在 Spring 的配置文件中设置:
DBCP连接池的配置:
DBCP官方配置文档:
C3P0的配置标准:
关于MySQL的wait_timeout连接超时问题报错解决方案
Spring mysql连接长时间断掉的问题 维护一个toB智能制造项目的时候 , 发现mysql偶尔会报错:
这个错误发生时,重新调用接口即可重新连接上,倒是没有特别大的阻碍,但是偶尔跳出还是烦人 。所以我花了点时间研究了下 。
这个问题很明显,就是mysql连接断了 。
网上查到的解决方案无非以下几种:
试过了 , 但是后来发现,这个参数仅针对mysql4.x有效果,现如今的mysql稳定版大多是5.7,还有很多同行直接使用mysql8.x,所以这个方法没有效果 。
这个都不用试 , 标准的spring项目谁会没事只开一个连接??,所以也没啥用 。
这个默认就是换了的,因为外网ip不稳定,自己内部链接还少些资源 。但是并不能从根本性上解决这个问题 。
这是我现在使用的方法 。等我测试几天,再回来在评论区告诉大家答案 。原理很简单 , spring的连接池默认走的是dbcp,据说这个玩意内部有硬伤,长期空闲连接mysql是会有问题的 , 所以换成阿里的druid试一试 。
还有一点需要各位明白的是,连接池配置是全局有效的,除非你引用的第三方包自己写死了,但是一般正常的第三方包或者开源包这些配置都是跟着主系统的 , 或者说主系统的配置是能够覆盖的 。我这个系统使用了activiti,作为工作流引擎 , 引入其他的连接池也没啥问题 , 照常使用 。
综上,等结果吧~
在此感谢这篇博客:
它总结的很全了 。
MySQL连接超时自动断开连接应该怎样处理用Fsocket获取数据时能够控制超时mysql老是断开怎么办的 。
如果用
File_get_contents($url);
可以临时设定环境变量:
设定默认socket超时时间
ini_set("default_socket_timeout", 3);养成好习惯mysql老是断开怎么办,使用fsocket获取数据 。
如果使用Curlmysql老是断开怎么办,也可以在Curl中控制超时时间:
curl_setopt($ch, CURLOPT_TIMEOUT, 15);
PHP中mysql函数是不提供类似mysql超时选项的 , 但是php.ini的mysql.connect_timeout可设置
; Maximum time (in seconds) for connect timeout. -1 means nolimit
mysql.connect_timeout = 60
也可以在php脚本中调用设置ini_set();
mysql为什么交互输入每次显示终端连接已断开mysql交互输入每次显示终端连接已断开是MySQL的默认设置 。当一个连接的空闲时间超过8小时后,MySQL就会断开该连接 。超过这个时间(默认是8小时)对数据库没有任何操作,那么MySQL会自动关闭数据库连接以节省资源 。
关于mysql老是断开怎么办和mysql自动断开的原因的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。
推荐阅读
- 圆的函数公式c语言软件 c语言利用函数求圆的面积
- 贝贝电脑直播,贝贝在哪个直播平台
- 硬盘mhdd怎么检测,硬盘检测工具mhdd46检测结果怎么看
- 硬盘怎么倒,硬盘怎么传到另一个硬盘上
- 汽车u盘为什么不响了,车载u盘不出声音
- vb.net入门视频教程的简单介绍
- 软件毕业设计开题报告计划,软件毕业设计开题报告计划怎么写
- c语言10us延时函数 c语言延时10s的函数怎么写
- gis数据库显示不出来,gis数据库显示不出来怎么办