1、问题背景:
在很多时候,连接数据库可能会出现连接数据库老是断掉,用了一段时间久断掉,或者不用了就自动断掉了,或者用了没有有效的回收连接,导致Tomcat时不时断掉的问题
2、解决方案:
我们可以在我们的数据源里面作如下配置:
maxActive="150" 最大活动连接(如果还不够,可以适量根据情况再配置大一点)
initialSize="10"初始化连接
maxIdle="60"最大空闲连接
minIdle="10"最小空闲连接
maxWait="3000" 从池中取连接的最大等待时间,单位ms.
validationQuery="select top 1 * from sysobjects"验证使用的SQL语句
testWhileIdle = "true"指明连接是否被空闲连接回收器(如果有)进行检验.如果检测失败,则连接将被从池中去除.
testOnBorrow = "false"借出连接时不要测试,否则很影响性能
timeBetweenEvictionRunsMillis = "30000"每30秒运行一次空闲连接回收器
minEvictableIdleTimeMillis = "1800000"池中的连接空闲30分钟后被回收
numTestsPerEvictionRun="3" 在每次空闲连接回收器线程(如果有)运行时检查的连接数
removeAbandoned="true"连接泄漏回收参数,当可用连接数少于3个时才执行
removeAbandonedTimeout="180"连接泄漏回收参数,180秒,泄露的连接可以被删除的超时值
logAbandoned="true"被丢弃的数据库连接是否做记录,以便跟踪,在log中打印出回收Connection的错误信息,包括在哪个地方用了Connection却忘记关闭了
推荐阅读
- java开发|Axon框架深入使用的一点经验
- Java开发|js 解决Safari浏览器中实现支付宝网页支付无法拉取支付宝APP的问题
- JAVA开发|java调用go、js、python、groovy和Caffeine缓存
- 《Scalable IO in Java》笔记
- 日期国际化探究
- Eclipse“控制台”视图详解
- java开发|如何在Java中引入和存储大数量级的变量并进行计算,通过数组来实现
- 流程控制语句之循环结构语句,熟练运用for,while和do...while以及配合使用控制跳转语句和方法重载
- java开发|MyBatis-核心配置文件解析
- java开发|MyBatis-入门