Java dbcp 数据库连接池设置详解

概要:

Java dbcp 数据库连接池设置详解

| |目录

<!-- 连接池启动时创建的初始化连接数量 -->
<property name="initialSize" value="5" />
<!-- 最大等待时间 10s 钟,如果得到已释放的连接则用。没有等到则报错 -->
<property name="maxWait" value="10000" />
<!--表示并发情况下最大可从连接池中获取的连接数,超过此连接数后不会继续增加连接,会进行等待。 如果数据库不是单独,供一个应用使用,
	通过设置maxActive参数可以避免某个应用无限制的获取连接对其他应用造成影响,	如果一个数据库只是用来支持一个应用,
	那么maxActive理论上可以设置成该数据库可以支撑的最大连接数。 -->
<property name="maxActive" value="60" />
<!-- 最大空闲连接数。当应用程序关闭连接后,由于maxIdle=30, 因此并不是所有的连接都会归还给数据库,将会有30个连接保持在连接池种中,状态为空闲。 
	理论上讲保持较多的长连接,在应用请求时可以更快的响应, 但是过多的连接保持,反而会消耗数据库大量的资源,因此maxIdle也并不是越大越好, 建议将 
	maxIdle设置成 maxActive 的一半左右。 这样就能在兼顾最大并发同时,保持较少的数据库连接,而且在绝大多情况,能够为应用程序提供最快的相应速度。 -->
<property name="maxIdle" value="30" />
<!-- 最小默认情况下并不生效,它的含义是当连接池中的连接少有minIdle, 系统监控线程将启动补充功能,一般情况下我们并不启动补充线程。 
	<property name="minIdle" value="2" /> -->
<!-- 有时粗心的程序编写者在从连接池中获取连接使用后忘记了连接的关闭, 这样连池的连接就会逐渐达到maxActive直至连接池无法提供服务。 
	现代连接池一般提供一种“智能”的检查,但设置了removeAbandoned="true"时, 
	当连接池连接数到达(getNumIdle() < 2) and (getNumActive() > getMaxActive() - 3)时便会启动连接回收,
	 那种活动时间超过removeAbandonedTimeout的连接将会被回收,同时如果logAbandoned="true"设置为true, 
	程序在回收连接的同时会打印日志。removeAbandoned是连接池的高级功能,理论上这中配置不应该出现在实际的生产环境,
	 因为有时应用程序执行长事务,可能这种情况下,会被连接池误回收,该种配置一般在程序测试阶段, 
	为了定位连接泄漏的具体代码位置,被开启,生产环境中连接的关闭应该靠程序自己保证。 -->
<property name="removeAbandoned" value="false" />
<!-- 默认为 5 分钟 -->
<property name="removeAbandonedTimeout" value="180" />
<!-- 每隔 timeBetweenEvictionRunsMillis 去检测一下有没有空闲时间超过 minEvictableIdleTimeMillis 
	的连接,如果有,会被逐出连接池, 此法还可以避免 mysql 8小时自动断开连接 -->
<property name="timeBetweenEvictionRunsMillis" value="600000" />
<!-- 默认为30分钟,可以适当做调整,需要和后端服务端的策略配置相关) -->
<property name="minEvictableIdleTimeMillis" value="1800000" />
<!-- 清理连接时,每次检查几个对象,如果你只是希望不会8小时后断开链接,可以设置成1,如果你确实需要清理,设置成 maxIdle -->
<property name="numTestsPerEvictionRun" value="1" />


评论关闭
评论 还能输入200
评论关闭
评论 还能输入200
资料加载中...
已关注 , 取消