`
dingw1982
  • 浏览: 379 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

连接池配置详解

阅读更多

[code="java"]

<!-- 数据源1 -->
  1. <!-- 数据源1 -->  
  2.     <bean id="dataSource"  
  3.           class="org.apache.commons.dbcp.BasicDataSource"  
  4.           destroy-method="close">  
  5.         <property name="driverClassName" value="com.mysql.jdbc.Driver"/>  
  6.         <property name="url" value="jdbc:mysql://192.168.0.109:3306/test?useUnicode=true&characterEncoding=UTF-8"/>  
  7.         <property name="username" value="root"/>  
  8.         <property name="password" value="root"/>  
  9.         <!--maxActive: 最大连接数量-->    
  10.         <property name="maxActive" value="150"/>  
  11.         <!--minIdle: 最小空闲连接-->    
  12.         <property name="minIdle" value="5"/>  
  13.         <!--maxIdle: 最大空闲连接-->    
  14.         <property name="maxIdle" value="20"/>  
  15.         <!--initialSize: 初始化连接-->    
  16.         <property name="initialSize" value="30"/>  
  17.         <!-- 连接被泄露时是否打印 -->  
  18.         <property name="logAbandoned" value="true"/>  
  19.         <!--removeAbandoned: 是否自动回收超时连接-->    
  20.         <property name="removeAbandoned"  value="true"/>  
  21.         <!--removeAbandonedTimeout: 超时时间(以秒数为单位)-->    
  22.         <property name="removeAbandonedTimeout" value="10"/>  
  23.         <!--maxWait: 超时等待时间以毫秒为单位 1000等于60秒-->  
  24.         <property name="maxWait" value="1000"/>  
  25.         <!-- 在空闲连接回收器线程运行期间休眠的时间值,以毫秒为单位. -->  
  26.         <property name="timeBetweenEvictionRunsMillis" value="10000"/>  
  27.         <!--  在每次空闲连接回收器线程(如果有)运行时检查的连接数量 -->  
  28.         <property name="numTestsPerEvictionRun" value="10"/>  
  29.         <!-- 1000 * 60 * 30  连接在池中保持空闲而不被空闲连接回收器线程-->  
  30.         <property name="minEvictableIdleTimeMillis" value="10000"/>  
  31.     <property name="validationQuery" value="SELECT NOW() FROM DUAL"/>  
  32.     </bean> 

[/code]

下面的注释为转来的。很详细

 

tomcatde 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中游历不被计算为被使用

分享到:
评论

相关推荐

    hibernate 连接池配置详解

    ### Hibernate 连接池配置详解 #### 一、概述 在使用Hibernate进行数据库操作时,合理配置连接池是非常重要的一步。连接池可以帮助我们更高效地管理数据库连接资源,避免频繁创建与销毁数据库连接带来的性能开销。...

    proxool连接池配置详解

    ### Proxool连接池配置详解 #### 一、概述 Proxool是一个开源的轻量级Java数据库连接池实现,其主要目标是替代常见的数据库连接池解决方案,如C3P0或DBCP,并且提供了更加灵活和易于配置的特性。在实际应用中,...

    Spring连接池配置详解

    Spring连接池配置详解 Spring连接池配置是Java Web开发中的一项重要配置,涉及到数据库连接池的管理和配置。本文将详细解释Spring连接池配置的各个标签的含义和作用。 数据库连接池概述 数据库连接池是解决数据库...

    C3P0连接池配置详解C3P0连接池配置详解

    ### C3P0连接池配置详解 C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定、支持JDBC标准的DataSource接口等。C3P0可以有效地管理和重用数据库连接,减少数据库连接创建和销毁带来的性能损耗。本文将详细介绍...

    Tomcat6连接池配置详解(自动重连)

    ### Tomcat6连接池配置详解(自动重连) #### 一、引言 在现代Web应用开发中,数据库连接管理是非常重要的一环。为了提高应用性能并确保资源的有效利用,通常采用连接池技术来管理数据库连接。Apache Tomcat作为一...

    Tomcat连接池配置详解

    **Tomcat连接池配置详解** 在Java Web应用中,数据库连接池是不可或缺的一部分,它能够有效地管理和重用数据库连接,提高应用性能并降低系统资源消耗。Tomcat作为一款流行的Servlet容器,内置了多种连接池实现,如...

    Tomcat连接池配置.doc

    Tomcat 连接池配置详解 Tomcat 连接池配置是 Web 应用程序中一个非常重要的组件,它负责管理和维护数据库连接,确保数据访问的高速和安全性。本文将详细介绍 Tomcat 连接池配置的步骤和原理,帮助读者快速掌握 ...

    tomcat6.0连接池配置方法详解

    ### Tomcat 6.0 连接池配置详解 在Java Web开发中,数据库连接池是一种常见的技术,用于管理数据库连接资源,提高系统的性能和稳定性。Tomcat作为一款广泛使用的Java应用服务器,提供了内置的连接池功能,方便...

    C3P0连接池配置

    **C3P0连接池配置详解** C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。C3P0的主要特点是轻量级、高效且稳定,广泛应用于各种Java Web应用中。在本文中,我们将深入探讨...

    TOMCAT数据库连接池配置说明文档

    《TOMCAT数据库连接池配置详解》 TOMCAT数据库连接池配置是Java Web开发中不可或缺的一环,它能够有效地管理和优化数据库连接,提高系统性能。以下是对TOMCAT数据库连接池配置的详细说明。 首先,你需要下载TOMCAT...

    common-dbcp2数据库连接池参数说明

    ### common-dbcp2数据库连接池参数详解 随着`commons-dbcp2`的版本更新,数据库连接池的配置也有了相应的调整。为了更好地理解和配置这些参数,本文将详细解析`commons-dbcp2`中的一些关键参数及其意义。 #### 1. ...

    spring连接池配置

    ### Spring框架中C3P0连接池配置详解 在Java Web开发中,数据库连接管理是一项重要的任务。不当的连接管理可能会导致性能问题甚至系统崩溃。Spring框架提供了多种配置数据库连接池的方式,其中C3P0是一种广泛使用的...

    Tomcat服务器配置及数据库连接池配置(个人整理版)

    ### Tomcat服务器配置及数据库连接池配置详解 #### 一、Tomcat服务器配置与环境搭建 ##### 1. JDK安装与配置 - **系统环境**:Windows 2003 Server SP3。 - **JDK路径设置**: - `JAVA_HOME` 设置为 `C:\JDK`。 ...

    C3P0连接池配置.doc

    C3P0连接池的配置涉及到多个方面,用于优化数据库连接的创建、管理和维护。 1. **acquireIncrement**:当连接池中的连接耗尽时,C3P0会一次性尝试获取的连接数。默认值为3,这意味着当需要更多连接时,C3P0会每次...

    java常用数据源连接池配置

    ### Java常用数据源连接池配置详解 #### 一、引言 在Java Web开发中,数据库连接管理是一项至关重要的任务。为了提高应用性能并确保资源的有效利用,通常会使用数据源连接池技术来管理和复用数据库连接。本文将详细...

    Tomcat配置连接池说明

    ### 二、Tomcat连接池配置详解 #### 1. 修改server.xml文件 Tomcat的server.xml文件位于conf目录下,是Tomcat的核心配置文件,控制着Tomcat的启动、停止以及主要服务的配置。在该文件中,我们可以通过添加`...

    Tomcat5的数据库连接池配置Tomcat5的数据库连接池配置

    ### Tomcat5的数据库连接池配置详解 #### 引言 在Java Web开发中,数据库连接池是一项关键的技术,能够显著提升应用性能和资源利用效率。对于Tomcat5这一历史较为悠久但依然在某些场景中活跃的服务器软件,正确...

Global site tag (gtag.js) - Google Analytics