DBCP连接池参数

2023-11-03

DBCP连接池参数说明如下:  
1、maxActive="10":表示并发情况下最大可从连接池中获取的连接数。 
2、maxIdle="5":如果在并发时达到了maxActive=10,那么连接池就必须从数据库中获取10个连接来供应用程序使用,当应用程序关闭连接后,由于maxIdle=5,因此并不是所有的连接都会归还给数据库,将会有5个连接保持在连接池种中,状态为空闲。由于我们没有使用minEvictableIdleTimeMillis参数,因此空闲连接不会因为超时而被回收. 
3、minIdle="2":minIdle默认情况下为0,并不生效,它的含义是当连接池中的连接少于minIdle时,系统监控线程将启动补充线程,一般情况下我们并不启动补充线程。minIdle是否生效,跟timeBetweenEvictionRunsMillis有关系,只有当timeBetweenEvictionRunsMillis(默认-1)不是负数时,minIdle才会生效,因为这个参数是说每隔多久启动补充线程来判断空闲连接数是否低于minIdle,如果低于minIdle,则创建一个新连接放入连接池,并且判断是否有空闲连接空闲的时间大于minEvictableIdleTimeMillis参数设定的时间,如果大于,则释放该连接。因此这也就是我为什么将minIdle设置为0的原因(既然不使用minEvictableIdleTimeMillis参数,minIdle就无用)。 
4、initialSize:默认为0,启动时初始化的连接池的连接数。 
5、timeBetweenEvictionRunsMilis : 默认值是 -1 ,每隔一段多少毫秒跑一次回收空闲 
线程的线程 
6、numTestsPerEvictionRun : 默认值是 3 ,每次验证空闲连接的连接数目 
7、minEvictableIdleTimeMilis : 默认值是 1000 * 60 * 30(30 分钟 ) ,连接池中连接 
可空闲的时间 
8、connectionInitSqls : 默认值是 null, 一组用来初始化连接的 sql 语句,这些语句只 
在连接工厂创建连接时执行一次。 
9、removeAbandoned : 默认值是 false, 是否清理 removeAbandonedTimeout 秒没 
有使用的活动连接 , 清理后并没有放回连接池  
10、removeAbandonedTimeout : 默认值是 300( 秒 ), 活动连接的最大空闲时间 
11、logAbandoned : 默认值 false, 连接池收回空闲的活动连接时是否打印消息 
注:  
1.   minEvictableIdleTimeMilis,removeAbandonedTimeout 这两个参数针对的连接对象不一样 ,minEvictableIdleTimeMillis 针对连接池中的连接对象 ,removeAbandonedTimeout 针对未被 close 的活动连接 ( 被调用,不在池中的连接对象 ) 
2.   maxWait 、 timeBetweenEvictionRunsMilis 、 minEvictableIdleTimeMilis 单位是毫秒, removeAbandonedTimeout 单位是秒 
3、timeBetweenEvictionRunsMillis 和 minEvictableIdleTimeMillis,他们两个配合,可以持续更新连接池中的连接对象,当timeBetweenEvictionRunsMillis 大于0时,每过timeBetweenEvictionRunsMillis 时间,就会启动一个线程,校验连接池中闲置时间超过minEvictableIdleTimeMillis的连接对象。 


tomcat的 DHCP的配置  
<Resource driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver" 
logAbandoned="true" maxActive="20" maxIdle="2" maxWait="5000" name="system" 
removeAbandonedTimeout="60" removeAbandoned="true" 
password="xx" type="javax.sql.DataSource" 
url="jdbc:sqlserver://127.0.0.1:1433;DatabaseName=base" 
username="sa"/> 
当中的 
logAbandoned="true"  removeAbandoned="true" removeAbandonedTimeout="60" 
就是用来配置数据库断开后自动连接的。 


数据库连接池会在启动时就建立所需的若干连接,并一直保持连接状态, 
但是当数据库服务停止后,这些连接就被外部因素给中断了 
网上优化了的配置信息: 
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">  
<property name="driverClassName" value="${db.driverClassName}"/>  
<property name="url" value="${db.url}"/>  
<property name="username" value="${db.username}"/>  
<property name="password" value="${db.password}"/>  
<!--initialSize: 初始化连接-->  
<property name="initialSize" value="5"/>  
<!--maxIdle: 最大空闲连接-->  
<property name="maxIdle" value="10"/>  
<!--minIdle: 最小空闲连接-->  
<property name="minIdle" value="5"/>  
<!--maxActive: 最大连接数量-->  
<property name="maxActive" value="15"/>  
<!--removeAbandoned: 是否自动回收超时连接-->  
<property name="removeAbandoned" value="true"/>  
<!--removeAbandonedTimeout: 超时时间(以秒数为单位)-->  
<property name="removeAbandonedTimeout" value="180"/>  
<!--maxWait: 超时等待时间以毫秒为单位 6000毫秒/1000等于60秒-->  
<property name="maxWait" value="3000"/>  
<property name="validationQuery">  
<value>SELECT 1</value>  
</property>  
<property name="testOnBorrow">  
<value>true</value>  
</property>  
</bean>  

dbcp配置中文版本,自apache 官方文档 
原文请见http://commons.apache.org/dbcp/configuration.html。 

参数  描述 
username  传递给JDBC驱动的用于建立连接的用户名 
password  传递给JDBC驱动的用于建立连接的密码 
url  传递给JDBC驱动的用于建立连接的URL 
driverClassName  使用的JDBC驱动的完整有效的java 类名 
connectionProperties  当建立新连接时被发送给JDBC驱动的连接参数, 
格式必须是 [propertyName=property;]* 
注意 :参数user/password将被明确传递,所以不需要包括在这里。 

参数  默认值  描述 
defaultAutoCommit  true  连接池创建的连接的默认的auto-commit状态 
defaultReadOnly  driver default  连接池创建的连接的默认的read-only状态. 
如果没有设置则setReadOnly方法将不会被调用. (某些驱动不支持只读模式,比如:Informix) 
defaultTransactionIsolation  driver default  连接池创建的连接的默认的TransactionIsolation状态. 
下面列表当中的某一个: (参考javadoc) 

    * NONE 
    * READ_COMMITTED 
    * READ_UNCOMMITTED 
    * REPEATABLE_READ 
    * SERIALIZABLE 

defaultCatalog   连接池创建的连接的默认的catalog 

参数  默认值  描述 
initialSize  0  初始化连接:连接池启动时创建的初始化连接数量,1.2版本后支持 
maxActive  8  最大活动连接:连接池在同一时间能够分配的最大活动连接的数量, 
如果设置为非正数则表示不限制 
maxIdle  8  最大空闲连接:连接池中容许保持空闲状态的最大连接数量,超过的空闲连接将被释放, 
如果设置为负数表示不限制 
minIdle  0  最小空闲连接:连接池中容许保持空闲状态的最小连接数量,低于这个数量将创建新的连接, 
如果设置为0则不创建 
maxWait  无限  最大等待时间:当没有可用连接时,连接池等待连接被归还的最大时间(以毫秒计数), 
超过时间则抛出异常,如果设置为-1表示无限等待 

参数  默认值  描述 
validationQuery   SQL查询,用来验证从连接池取出的连接,在将连接返回给调用者之前.如果指定, 
则查询必须是一个SQL SELECT并且必须返回至少一行记录 
testOnBorrow  true  指明是否在从池中取出连接前进行检验,如果检验失败, 
则从池中去除连接并尝试取出另一个. 
注意: 设置为true后如果要生效,validationQuery参数必须设置为非空字符串 
testOnReturn  false  指明是否在归还到池中前进行检验 
注意: 设置为true后如果要生效,validationQuery参数必须设置为非空字符串 
testWhileIdle  false  指明连接是否被空闲连接回收器(如果有)进行检验.如果检测失败, 
则连接将被从池中去除. 
注意: 设置为true后如果要生效,validationQuery参数必须设置为非空字符串 
timeBetweenEvictionRunsMillis  -1  在空闲连接回收器线程运行期间休眠的时间值,以毫秒为单位. 
如果设置为非正数,则不运行空闲连接回收器线程 
numTestsPerEvictionRun  3  在每次空闲连接回收器线程(如果有)运行时检查的连接数量 
minEvictableIdleTimeMillis  1000 * 60 * 30  连接在池中保持空闲而不被空闲连接回收器线程 
(如果有)回收的最小时间值,单位毫秒 

参数  默认值  描述 
poolPreparedStatements  false  开启池的prepared statement 池功能 
maxOpenPreparedStatements  不限制  statement池能够同时分配的打开的statements的最大数量, 
如果设置为0表示不限制 


这里可以开启PreparedStatements池. 当开启时, 将为每个连接创建一个statement池, 
并且被下面方法创建的PreparedStatements将被缓存起来: 
    * public PreparedStatement prepareStatement(String sql) 
    * public PreparedStatement prepareStatement(String sql, int resultSetType, int resultSetConcurrency) 
注意: 确认连接还有剩余资源可以留给其他statement 
参数  默认值  描述 
accessToUnderlyingConnectionAllowed  false  控制PoolGuard是否容许获取底层连接 


如果容许则可以使用下面的方式来获取底层连接: 
    Connection conn = ds.getConnection(); 
    Connection dconn = ((DelegatingConnection) conn).getInnermostDelegate(); 
    ... 
    conn.close(); 

默认false不开启, 这是一个有潜在危险的功能, 不适当的编码会造成伤害. 
(关闭底层连接或者在守护连接已经关闭的情况下继续使用它).请谨慎使用, 
并且仅当需要直接访问驱动的特定功能时使用. 
注意: 不要关闭底层连接, 只能关闭前面的那个. 
参数  默认值  描述 
removeAbandoned  false  标记是否删除泄露的连接,如果他们超过了removeAbandonedTimout的限制. 
如果设置为true, 连接被认为是被泄露并且可以被删除,如果空闲时间超过removeAbandonedTimeout. 
设置为true可以为写法糟糕的没有关闭连接的程序修复数据库连接. 
removeAbandonedTimeout  300  泄露的连接可以被删除的超时值, 单位秒 
logAbandoned  false  标记当Statement或连接被泄露时是否打印程序的stack traces日志。 
被泄露的Statements和连接的日志添加在每个连接打开或者生成新的Statement, 
因为需要生成stack trace。 


如果开启"removeAbandoned",那么连接在被认为泄露时可能被池回收. 这个机制在(getNumIdle() < 2) 
and (getNumActive() > getMaxActive() - 3)时被触发. 
举例当maxActive=20, 活动连接为18,空闲连接为1时可以触发"removeAbandoned". 
但是活动连接只有在没有被使用的时间超过"removeAbandonedTimeout"时才被删除,默认300秒. 
在resultset中游历不被计算为被使用. 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

DBCP连接池参数 的相关文章

  • 猫头虎博主的MySQL救援指南:轻松解决初始化问题(nysqld: Can create directort :mysgl mysg! 9-winx64 data errno such file o)

    博主猫头虎的技术世界 欢迎来到 猫头虎的博客 探索技术的无限可能 专栏链接 精选专栏 面试题大全 面试准备的宝典 IDEA开发秘籍 提升你的IDEA技能 100天精通Golang Go语言学习之旅 领域矩阵 猫头虎技术领域矩阵 深入探索各技
  • 【计算机开题报告】基于JAVA的酒店管理系统的设计与实现

    1 毕业设计 论文 综述 随着社会经济和科技的迅速发展 人们对衣食住行的要求也逐渐提高 酒店 宾馆在服务行业中扮演着越来越重要的角色 本课程设计的内容旨在以管理系统的方式给人们出行提供酒店预订服务 从而能够更方便快捷的帮助酒店工作人员办理客
  • 跨境电商三大趋势已经涌现

    在过去的几年里 跨境电商在推动外贸增长中发挥了至关重要的作用 成为了引领行业发展的强大引擎 然而 随着2024年的到来 跨境电商行业又站在了崭新的起点 准备攀登新的发展高峰 数据显示 得益于经济的逐步复苏 未来三年跨境电商行业预计将以16
  • 【计算机开题报告】基于JSP的服装店销售管理系统

    1 选课目的意义 21世纪是一个信息化时代 随着中国经济的发展和人民生活水平的提高 服装商场的普及程度日益增大 竞争也在逐渐白炽化 为了进一步提高服装商场的经营效率 在服装店销售管理中引入计算机管理系统成为了必然的选择 由于中国环境的特殊性
  • sql临时表、创建虚拟表、select临时表、多行数据、自定义数据、插入数据

    SELECT FROM VALUES John 25 Jane 30 Mike 35 AS table name name age 方法2 select 1 2 union all select 3 4
  • 【计算机开题报告】 医药信息管理系统

    一 选题依据 简述国内外研究现状 生产需求状况 说明选题目的 意义 列出主要参考文献 1 研究背景 随着医药事业的不断壮大 相关单位对于医药信息的管理变得越来越重要 传统的手工管理效率低 易出错 费时费力 不能及时精确的收集 传递 存储 加
  • 如何处理不稳定的自动化测试?

    abluecolor 在解决这个问题之前 请停止编写更多测试 因为这将花费你较高的测试维护成本 你需要尽快行动起来对不稳定的原因进行深入研究 找到不稳定的根因 并且尝试在流程 环境和代码方面做一些优化工作解决它 MasterKindew 如
  • python按列写入数据到excel

    要将数据按列写入 Excel 可以使用 Python 的 openpyxl 库 首先 需要安装 openpyxl 库 可以使用以下命令在终端或命令提示符中安装 pip install openpyxl 然后 可以按照以下步骤编写代码 1 导
  • 拼多多详情API开启运营比价新纪元

    随着互联网的快速发展 电商行业正在迅速崛起 拼多多作为一家新兴的电商平台 凭借其独特的营销策略和创新的商业模式 成为了电商行业的一匹黑马 在拼多多的成功背后 其详情API接口营销起到了至关重要的作用 本文将详细介绍拼多多详情API接口营销的
  • 6 - 数据备份与恢复|innobackupex

    数据备份与恢复 innobackupex 数据备份与恢复 数据备份相关概念 物理备份与恢复 逻辑备份 推荐 使用binlog日志文件实现对数据的时时备份 使用日志 恢复数据
  • 【计算机毕业设计】病房管理系统

    当下 如果还依然使用纸质文档来记录并且管理相关信息 可能会出现很多问题 比如原始文件的丢失 因为采用纸质文档 很容易受潮或者怕火 不容易备份 需要花费大量的人员和资金来管理用纸质文档存储的信息 最重要的是数据出现问题寻找起来很麻烦 并且修改
  • 【计算机毕业设计】出租车管理系统

    现代经济快节奏发展以及不断完善升级的信息化技术 让传统数据信息的管理升级为软件存储 归纳 集中处理数据信息的管理方式 本出租车管理系统就是在这样的大环境下诞生 其可以帮助管理者在短时间内处理完毕庞大的数据信息 使用这种软件工具可以帮助管理人
  • 深入了解 Python MongoDB 操作:排序、删除、更新、结果限制全面解析

    Python MongoDB 排序 对结果进行排序 使用 sort 方法对结果进行升序或降序排序 sort 方法接受一个参数用于 字段名 一个参数用于 方向 升序是默认方向 示例 按名称按字母顺序对结果进行排序 import pymongo
  • 【计算机毕业设计】电商个性化推荐系统

    伴随着我国社会的发展 人民生活质量日益提高 于是对电商个性化推荐进行规范而严格是十分有必要的 所以许许多多的信息管理系统应运而生 此时单靠人力应对这些事务就显得有些力不从心了 所以本论文将设计一套电商个性化推荐系统 帮助商家进行商品信息 在
  • 【计算机毕业设计】白优校园社团网站的设计与实现

    近些年 随着中国经济发展 人民的生活质量逐渐提高 对网络的依赖性越来越高 通过网络处理的事务越来越多 随着白优校园社团网站的常态化 如果依然采用传统的管理方式 将会为工作人员带来庞大的工作量 这将是一个巨大考验 需要投入大量人力开展对社团
  • 【计算机毕业设计】宝鸡文理学院学生成绩动态追踪系统

    研究开发宝鸡文理学院学生成绩动态追踪系统的目的是让使用者可以更方便的将人 设备和场景更立体的连接在一起 能让用户以更科幻的方式使用产品 体验高科技时代带给人们的方便 同时也能让用户体会到与以往常规产品不同的体验风格 与安卓 iOS相比较起来
  • 温室气体排放更敏感的模型(即更高的平衡气候敏感性(ECS))在数年到数十年时间尺度上也具有更高的温度变化(Python代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Python代码 数据
  • 每日变更的最佳实践

    在优维公司内部 我们采用发布单的方式进行每天的应用变更管理 这里给各位介绍优维的最佳实践 变更是需要多角色合作的 而且他是整体研发流程的一部分 在优维内部 我们坚持每日变更 打通开发环节到最终发布上线的全过程 在保证质量的前提下 尽可能提升
  • 光波导结构

    摘要 增强现实和混合现实 AR MR 领域的新应用引起了人们对带有光栅区域的光波导系统的越来越多的关注 这些光波导系统用于输入和输出耦合以及扩瞳目的 VirtualLab Fusion为这类系统的仿真和设计提供了几个强大的工具 其中一个是具
  • Python 使用 NoSQL 数据库的优选方案

    NoSQL 数据库因其高性能 可扩展性和灵活性而风靡一时 然而 对于 Python 程序员而言 选择合适的 NoSQL 数据库可能会令人困惑 因为有多种选择可供选择 那么 哪种 NoSQL 数据库最适合 Python 呢 2 解决方案 根据

随机推荐

  • 字符串的输入输出处理

    1391 字符串的输入输出处理 Time Limit 1 Sec Memory Limit 64 MBSubmit 333 Solved 71 Submit Status BBS Description 字符串的输入输出处理 Input 第
  • 线程安全的单例模式:饿汉模式&懒汉模式

    目录 一 单例模式 二 饿汉模式 1 特点 2 实现关键 3 代码实现 三 懒汉模式 1 特点 2 实现关键 3 代码实现 一 单例模式 单例模式 一种典型的设计模式 应用场景 一个类只能实例化一个对象 向外提供统一访问接口的场景 作用 对
  • C++基本使用--菱形继承(多继承)

    菱形继承 多继承 多继承 菱形继承 虚继承virtual 多继承 include
  • 犀牛高程点建地形gh插件电池组_Grasshopper快速生成地形

    简述 根据CAD高程点及高程信息在Grasshopper中快速生成地形模型 所需文件 CAD地形文件 所需软件 Rhino Grasshopper 插件 Human Weaverbird Meshtools Meshedit 可自行前往Fo
  • 计算机网络学习笔记:第四章

    计算机网络学习笔记 第四章 学习书籍 计算机网络 自顶向下方法 第四章 网络层 数据平面 其他章节请参阅 计算机网络 自顶向下方法 第一章 计算机网络和因特网 计算机网络 自顶向下方法 第二章 应用层 计算机网络 自顶向下方法 第三章 运输
  • 区块链技术加密算法为什么不可篡改

    区块链采用密码学的方法来保证已有数据不可能被篡改 这个是误解最多的部分 因为很多人一提到区块链就只觉得是这个 诚然 这部分很重要 而且确实区块链也因此得名 但这只是区块链的定义的一部分 这个部分的两个核心要点是 1 密码学哈希函数 2 非对
  • SpringBoot关键面试题

    什么是springboot 用来简化spring应用的初始搭建以及开发过程 使用特定的方式来进行配置 properties或yml文件 创建独立的spring引用程序 main方法运行 嵌入的Tomcat 无需部署war文件 简化maven
  • 如何使用 scp 将文件夹从远程复制到本地?

    问 如何使用 scp 将文件夹从远程复制到本地主机 我使用 ssh 登录到我的服务器 然后 我想将远程文件夹 foo 复制到本地 home user Desktop 我如何实现这一目标 答1 huntsbot com 高效赚钱 自由工作 s
  • Qt中关于emit和moc_*.cpp的自动生成

    关于Qt中的emit 函数 直接查看emit的定义 define emit 可以发现emit仅仅是个宏定义符号 编译器宏替换后就是个 空白 根本就不会编译它 所以代码里完全可以去掉这个符号 反之也可以在任何代码前加上这个符号 如这行代码em
  • C语言详解——枚举类型

    在程序中 可能需要为某些整数定义一个别名 我们可以利用预处理指令 define来完成这项工作 您的代码可能是 define MON 1 define TUE 2 define WED 3 define THU 4 define FRI 5
  • 说一下反三角函数atan等的角度计算值,弧度制和角度制

    我们平时在进行数学计算是 往往会用到三角函数和反三角函数 最常用的反三角函数大概就是atan了 因为这个相当于给定两点之间直线的夹角了 1 正切函数图像 这时正切函数图像 高中的我们就应该知道 正切函数是周期函数 即同一个值 有很多角度值对
  • html 中shadow DOM 的使用

    什么是shadow DOM An important aspect of web components is encapsulation being able to keep the markup structure style and b
  • antV/g2的使用

    antV g2 特点 以数据驱动 安装 npm instal antv g2 使用 准备一个容器 div div 执行代码 1 引入 import
  • 如何使用C ++以编程方式在Word文档中使用目录?

    目录 TOC 是Word文档的重要组成部分 它提供了文档内容的概述 并允许您快速导航到所需的部分 您可能会遇到需要以编程方式从Word文档中添加 提取 更新或删除目录的情况 为此 本文将教您如何使用C 处理Word文件中的目录 让我们探索以
  • D. Permutation Restoration(优先队列+贪心)

    Problem D Codeforces include
  • 学习Flask之分页插件flask_bootstrap

    这次分页功能 主要是依靠 Flask Bootstrap 首先也是下载flask bootstrap pip install flask bootstrap 安装完后可以观察里面的文件夹 里面其实还有nav 导航 form 表单 pagin
  • linux内核调试环境的搭建(使用qemu)

    这里说明下 本人调试的内核版本是2 6 11 12 为什么去调试这么 古老 的版本 原因不多说了 你手头也许正拿着ULK3 而它针对的内核版本正是2 6 11 有比这更好的理由吗 而且这个版本不算旧 已不算新 我认为还算不错 想想当下还有如
  • 我的计算机管理里面没有家庭组,Win10控制面板没有家庭组怎么解决?

    我们经常在使用电脑的时候经常会用到家庭组这个功能 家庭组使用起来非常方便的功能 但是最近很多的用户们反映Win10家庭组功能在控制面板找不到了 这个问题我们要怎么解决呢 下面小编为大家带来详细的解决教程介绍 快来看看吧 Win10控制面板没
  • 七牛云 composer 文件上传、删除、请除缓存操作

    class QiniuUp extends ModelBasic private AccessKey private SecretKey private bucket private auth function construct pare
  • DBCP连接池参数

    DBCP连接池参数说明如下 1 maxActive 10 表示并发情况下最大可从连接池中获取的连接数 2 maxIdle 5 如果在并发时达到了maxActive 10 那么连接池就必须从数据库中获取10个连接来供应用程序使用 当应用程序关