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

环境

系统平台:中标麒麟(海光)7
版本:4.3.4.7

症状

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

具体报错信息如下:
在这里插入图片描述

问题原因

分析可能的原因包括:

1.网络原因导致。

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

解决方案

1.监控网络状况

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

创建文件autoTelent.sh

touch autoTelnet.sh
文件内容如下:

#!/usr/bin/env bash


while true

do

date

echo "" | telnet 服务器IP 5866

echo ""

sleep 1

done

赋运行权限
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.Driver

spring.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 指定连接返回到池中时是否经过校验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值