DBCP中几个参数的补充说明
来源:互联网 发布:淘宝二级页面怎么做 编辑:程序博客网 时间:2024/05/21 11:27
转载自:http://jackyrong.iteye.com/blog/2008440
我浏览过很多关于dbcp的参数解释文章,其中这个文章解释得最准确,其他的文章都是一个转载一个解释得模棱两可。
注意:创建出来的Connection对象存储在连接池中,若一直不适用池子中的Connection,那么随着时间的推移,即使我们不人为的在程序中手动的释放连接对象,数据库也会帮我们自动释放掉连接,那么此时Connetion对象就无法继续连接数据库。什么意思呢?就是说创建一堆连接对象存储在数据库连接池中,但是一直不使用,那么时间长了数据库会帮我们自动释放掉这些连接。这个现象可以自己试验
DBCP的性能配置主要是4个参数
连接池启动时的初始值.
dbcp.initialSize=10
连接池的最大值.
dbcp.maxActive=50
最大空闲值.当经过一个高峰时间后,连接池可以慢慢将已经用不到的连接慢慢释放一部分,一直减少到maxIdle为止。
dbcp.maxIdle=20
最小空闲值.当空闲的连接数少于阀值时,连接池就会预申请去一些连接,以免洪峰来时来不及申请。
dbcp.minIdle=5
一般这几个参数应该放在applicationContext.properties里方便部署时快速修改。
有两种配置风格,
比如较少使用者的管理界面,平时的使用者不多,但瞬时可能会有较多的使用者,如Mini-Web,会设置一个较低的maxIdle 而设置较高的maxActive。
比如长期高负荷运行的业务系统,会设置一个合理的maxIdle值,且maxActive==maxIdle
长期idle连接的处理:
Mysql服务端会断开超过8小时的空闲连接,如果系统只在白天工作时间被使用,DBCP的连接就很容易被断开的连接,而且DBCP对jdbc url里设置autoReconnect=true是无效。
更好的做法DBCP主动断开超时的连接。
运行判断连接超时任务的时间间隔,单位为毫秒,默认为-1,即不执行任务。
timeBetweenEvictionRunsMillis=3600000
连接的超时时间,默认为半小时。
minEvictableIdleTimeMillis=3600000
http://www.blogjava.net/wangxinsh55/archive/2007/05/25/120015.html
在配置时,主要难以理解的主要有:removeAbandoned 、logAbandoned、removeAbandonedTimeout、maxWait这四个参数,设置了rmoveAbandoned=true那么在getNumActive()快要到getMaxActive()的时候,系统会进行无效的Connection的回收,回收的Connection为removeAbandonedTimeout(默认300秒)中设置的秒数后没有使用的Connection,激活回收机制好像是getNumActive()=getMaxActive()-2。 有点忘了。
logAbandoned=true的话,将会在回收事件后,在log中打印出回收Connection的错误信息,包括在哪个地方用了Connection却忘记关闭了,在调试的时候很有用。
在这里私人建议maxWait的时间不要设得太长,maxWait如果设置太长那么客户端会等待很久才激发回收事件。
以下是我的配置的properties文件:
#连接设置 jdbc.driverClassName=oracle.jdbc.driver.OracleDriver jdbc.url=jdbc:oracle:thin:@127.0.0.1:1521:DBSERVER jdbc.username=user jdbc.password=pass #<!-- 初始化连接 --> dataSource.initialSize=10 #<!-- 最大空闲连接 --> dataSource.maxIdle=20 #<!-- 最小空闲连接 --> dataSource.minIdle=5 #最大连接数量 dataSource.maxActive=50 #是否在自动回收超时连接的时候打印连接的超时错误 dataSource.logAbandoned=true #是否自动回收超时连接 dataSource.removeAbandoned=true #超时时间(以秒数为单位) #设置超时时间有一个要注意的地方,超时时间=现在的时间-程序中创建Connection的时间,如果maxActive比较大,比如超过100,那么removeAbandonedTimeout可以设置长一点比如180,也就是三分钟无响应的连接进行回收,当然应用的不同设置长度也不同。 dataSource.removeAbandonedTimeout=180 #<!-- 超时等待时间以毫秒为单位 --> #maxWait代表当Connection用尽了,多久之后进行回收丢失连接 dataSource.maxWait=1000
- DBCP中几个参数的补充说明
- @property的几个参数说明
- commons DBCP配置参数说明
- dbcp相关状态参数说明
- DBCP的配置参数
- DBCP的参数配置
- DBCP的配置参数
- DBCP的配置参数
- DBCP的配置参数
- DBCP的配置参数
- DBCP的配置参数
- DBCP的配置参数
- autocomplete的参数的几个用法说明
- LoadRunner中调用DLL的补充说明
- 对C++中引用的补充说明
- Mplayer配置文件的几个参数说明
- weblogic设置JVM的几个参数说明
- weblogic设置JVM的几个参数说明
- jquery deferred promise
- centos 7 菜鸟第一天 装软件
- Codeforces 651B Beautiful Paintings(不可思议的暴力)
- 浙大教授讲王阳明视频记录
- 打印乘法口诀表
- DBCP中几个参数的补充说明
- Hibernate插入数据到数据库中时让数据库中的字段默认值生效
- 欢迎自己写博客,记录我的学习成长。
- 欢迎使用CSDN-markdown编辑器
- [转]中国在线教育那点事
- 阿里巴巴2016年-校招-实习生岗位-内推
- PreferenceActivity系统本身的设置页
- oracle数据库扩容
- Codeforces 631C:Report