1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > This connection has been closed 应用连接数据库后1-3小时 即自动断开连接

This connection has been closed 应用连接数据库后1-3小时 即自动断开连接

时间:2019-08-06 07:54:03

相关推荐

This connection has been closed 应用连接数据库后1-3小时 即自动断开连接

目录

环境

症状

问题原因

解决方案

环境

系统平台:中标麒麟(CPU海光)7

版本:4.3.4.7

症状

ISV部署的环境(多应用+java+MyBatis+DBCP连接池+hgdbV4347)下,发现应用在1-3小时运行后会断开连接,需要重启数据库或者应用才能连接,但是数据库管理工具不会断开。

具体报错信息如下:

问题原因

分析可能的原因包括:

1.网络原因导致。

2.应用使用的连接池为DBCP,本身包含许多配置参数,参数配置异常导致取到了已断开的连接。

解决方案

1.监控网络状况

在应用端(选择容易出现此问题的应用端)部署到数据库服务器端的网络监控,方法:

创建文件autoTelent.sh

touch autoTelnet.sh

文件内容如下:

#!/usr/bin/env bashwhile truedodateecho "" | telnet 服务器IP 5866echo ""sleep 1done

赋运行权限

chmod +x autoTelnet.sh

运行

nohup ./autoTelnet.sh &

启动测试,当再次出现无法连接时,检查监控日志./nohup.out,是否正常。如果未出现异常可排除网络原因,进行下一步修改连接池参数。

2.配置连接池参数

### highgoDB config ###spring.datasource.hg.url=spring.datasource.hg.username=spring.datasource.hg.password=spring.datasource.hg.driver-class-name=com.highgo.jdbc.Driverspring.datasource.hg.maxActive=50# maxActive 池中工作连接的最大个数,如果小于等于0则表示步限制。spring.datasource.hg.initialSize=10# initialSize 连接器启动时创建的初始连接数。默认为 10。spring.datasource.hg.maxWait=60000# maxWait 以毫秒表示的当连接池中没有可用连接时等待可用连接返回的时间,超时则抛出异常,值为-1时无限期等待。spring.datasource.hg.minIdle=6# minIdle 池始终都应保留的连接的最小数目。spring.datasource.hg.timeBetweenEvictionRunsMillis=60000# timeBetweenEvictionRunsMillis 空闲连接验证/清除线程运行之间的休眠时间(以毫秒计)。不能低于 1 秒。该值决定了我们检查空闲连接、废弃连接的频率,以及验证空闲连接的频率。默认为 5000(5 秒)spring.datasource.hg.minEvictalbeIdleTimeMillis=300000# minEvictalbeIdleTimeMillis 以毫秒表示的连接被空闲对象驱逐进程驱逐前在池中保持空闲状态的最小时间(如果存在空闲对象驱逐进程)。spring.datasource.hg.validationQuery=select 1# validationQuery 在将池中连接返回给调用者之前,用于验证这些连接的 SQL 查询。如果指定该值,则该查询不必返回任何数据,只是不抛出SQLException 异常即可。默认为 null。实例值为:SELECT 1。spring.datasource.hg.testWhileIdle=true# testWhileIdle 会使用测试线程,测试池中连接是否能够正常使用。spring.datasource.hg.testOnBorrow=false# testOnBorrow 指定连接被调用时是否经过校验。如果校验未通过,则该连接被连接池断掉,并由连接池尝试调用另一个连接。spring.datasource.hg.testOnReturn=false# testOnReturn 指定连接返回到池中时是否经过校验。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。