再淡spring jdbc 连接池断开重连设置

再淡spring jdbc 连接池断开重连设置

大家好,又见面了,我是全栈君。

先看一段错误日志:

### Error querying database.  Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: No operations allowed after connection closed.
### The error may exist in file …………]
### The error may involve .....
### The error occurred while executing a query
### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: No operations allowed after connection closed.
; SQL []; No operations allowed after connection closed.; nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: No operations allowed after connection closed.

这个是连接池断开后(网络、数据库断开)。没有确认池里的连接继续可用的情况下,去操作数据库。

网上一搜,解决的方法一大堆,基本配置例如以下:

	<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
		<property name="driverClassName" value="${jdbc.driverClassName}" />
		<property name="url" value="${jdbc.url}" />
		<property name="username" value="${jdbc.username}" />
		<property name="password" value="${jdbc.password}" />
		<!-- 队列中的最小等待数 -->
		<property name="minIdle" value="${jdbc.minIdle}"></property>
		<!-- 队列中的最大等待数 -->
		<property name="maxIdle" value="${jdbc.maxIdle}"></property>
		<!-- 最长等待时间。单位毫秒 -->
		<property name="maxWait" value="${jdbc.maxWait}"></property>
		<!-- 最大活跃数 -->
		<property name="maxActive" value="${jdbc.maxActive}"></property>
		<property name="initialSize" value="${jdbc.initialSize}"></property>
		<property name="validationQuery" value="select 1"/>
		<property name="testOnBorrow" value="false"/>
		<property name="testWhileIdle" value="true"/>
		<property name="testOnReturn" value="false"/>
		<property name="numTestsPerEvictionRun" value="${jdbc.maxActive}"/>
		<!-- 5 min 每5分钟检測空暇连接超过10分钟的连接-->
		<property name="timeBetweenEvictionRunsMillis" value="300000" />  
		<property name="minEvictableIdleTimeMillis" value="600000" /> 
		<property name="removeAbandoned" value="true"/>
	</bean>





但是,这就够了吗?

一開始放到自己的环境上是没实用的,还是报错了。

继续努力,最后是攻克了。

第一要理解连接池的各项配置(上面)

第二是要知道mysql中wait_timeout的设置

两点结合才干确定连接池在项目中的合理正确配置。

假设wait_timeout设置成非常大一个值,比如一年,那么上面的配置非常多情况下都是正确的。

假设wait_timeout设置成非常小,如1分钟,那么上面的配置是有问题的。

由于server1分钟就把空暇连接断开了,client过了5分钟再去检查连接情况,那有什么意义?先前就是没理解被误导了,把timeBetweenEvictionRunsMillis设置了一个比較大的值,所以一直有问题。包含所说的8小时问题也是源于此(mysql数据库默认是空暇8小时断开)。

我的原因是mysql的wait_timeout的值设置小了。而client检測的间隔时间过大。

正确的做法是:

连接池配置中的timeBetweenEvictionRunsMillis和

minEvictableIdleTimeMillis的

时间小于或者等于mysql数据库中wait_timeout的时间。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/116196.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • pycharm社区版怎么下载_wps电脑版下载步骤

    pycharm社区版怎么下载_wps电脑版下载步骤1.进入PyCharm官网,点击Dowmload进行下载。2.下载完成后,打开.exe文件,点击next。3.选择合适的路径,点击next。4.选择64-bitlauncher和.py5.点击install。6.进入python官网,下载python解释器,选择版本进行下载。7.我是之前下载的3.7版本。8.下载好python解释器,点击finish9.同意用户协议。10.打开软件,即可使用。…

    2022年8月28日
    0
  • 消除IBM P750小机上的黄色报警灯[通俗易懂]

    消除IBM P750小机上的黄色报警灯[通俗易懂]IBM小机上亮黄灯了如何解决?对报警灯的说明:(1)硬件故障报警灯是一个发光二极管,它亮表示系统检测到了硬件故障,管理员应该注意。(2)硬件故障报警灯是非常敏感的,很多情况下并不是硬件产生了故障它才亮,例如热插拔某些信号线或者电缆,用户非正常关机等都可能导致该警报灯亮。(3)管理员应该首先检查系统错误日志errpt,看一下是否真的有硬件错误。如果没有,那么可以先将这个

    2022年6月15日
    42
  • luajit的ffi更快的原因_lua return

    luajit的ffi更快的原因_lua returnLuajitffi接口使用小结:1.使用Luajitffi加载C链接库2.使用Luajitffi调用C函数3.使用Luajitffi处理基本类型对象,结构体对象,字符串对象cdata4.cdata赋值及修改本文仅限于使用C链接库,后面文章将介绍使用Luajitffi加载C++链接库

    2022年10月7日
    0
  • 【致远FAQ】致远OA宕机之Tomcat异常宕机

    【致远FAQ】致远OA宕机之Tomcat异常宕机问题描述tomcat进程已经不在; 由于在启动命令行参数中增加了相关的日志监控,重点查找JVM内存溢出、jvm的crash的日志进行问题定位; 没有.hprof文件生成【基本可以推论没有出现JVM内存溢出】 没有hs_err_xxx.log文件生成【基本可以推论JVM没有出现严重的crash异常】问题分析1)通过catalina.log看出tomcat出现了非正常关闭操作下的停机;如果是正常停机会在输出图1的日志前输出如图2所示的内容2)tomcat停机的时..

    2022年7月23日
    11
  • tree树形结构_什么是树形结构

    tree树形结构_什么是树形结构一、树的基本概念(1)树(Tree)的概念:树是一种递归定义的数据结构,是一种重要的非线性数据结构。树可以是一棵空树,它没有任何的结点;也可以是一棵非空树,至少含有一个结点。(2)根(Root)

    2022年8月3日
    2
  • 计算机机房整改工作报告,机房整改总结.doc

    计算机机房整改工作报告,机房整改总结.docXX机房整改方案目录一、XX站整改项目说明3二、XX站整改项目目标3三、项目实施要求41、可靠性:42、环境保护:43、灵活性:44、安全性:4四、施工方案简述4第一部分机房工程方案4第二部分:机房装修设计及施工方案6第三部分机房外缆整改及设备支座制作8五、机房综合工程设计标准10六、效果图11XX站整改项目说明本次XX站机房整改项目主要涉及XXX二楼机房、话务机房、电源机房等机房的整体维护。…

    2022年5月25日
    26

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号