zoukankan      html  css  js  c++  java
  • 常见的DBCP连接池配置

      项目中使用mybatis出现一个问题,项目刚启动时,查询项目列表是ok的,过上一段时间之后,再次查询项目列表,查询失败,初步判断是因为mysql的连接问题,最后查阅资料,发现是连接池中的连接失效,导致项目查询失败。

      最后修改了连接池的配置信息,当从池中取出连接的时候验证连接的有效性。如果失效,则移除该连接,重新取连接。下面描述了DBCP连接池常见的一些配置,

      官方地址 http://commons.apache.org/proper/commons-dbcp/configuration.html

        

     1 <bean id="dataSource"  
     2           class="org.apache.commons.dbcp.BasicDataSource"  
     3           destroy-method="close">  
     4         <property name="driverClassName" value="com.mysql.jdbc.Driver"/>  
     5         <property name="url" value="jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8"/>  
     6         <property name="username" value="root"/>  
     7         <property name="password" value="mysql123456"/>  
     8         <!--maxActive: 最大连接数量-->    
     9         <property name="maxActive" value="150"/>  
    10         <!--minIdle: 最小空闲连接-->    
    11         <property name="minIdle" value="5"/>  
    12         <!--maxIdle: 最大空闲连接-->    
    13         <property name="maxIdle" value="20"/>  
    14         <!--initialSize: 初始化连接-->    
    15         <property name="initialSize" value="30"/>  
    16         <!-- 连接被泄露时是否打印 -->  
    17         <property name="logAbandoned" value="true"/>  
    18         <!--removeAbandoned: 是否自动回收超时连接-->    
    19         <property name="removeAbandoned"  value="true"/>  
    20         <!--removeAbandonedTimeout: 超时时间(以秒数为单位)-->    
    21         <property name="removeAbandonedTimeout" value="10"/>  
    22         <!--maxWait: 超时等待时间以毫秒为单位 -->  
    23         <property name="maxWait" value="1000"/>  
    24         <!-- 在空闲连接回收器线程运行期间休眠的时间值,以毫秒为单位. -->  
    25         <property name="timeBetweenEvictionRunsMillis" value="10000"/>  
    26         <!--  在每次空闲连接回收器线程(如果有)运行时检查的连接数量 -->  
    27         <property name="numTestsPerEvictionRun" value="10"/>  
    28         <!-- 1000 * 60 * 30  连接在池中保持空闲而不被空闲连接回收器线程-->  
    29         <property name="minEvictableIdleTimeMillis" value="10000"/>  
    30         <!-- 用来检测连接是否有效的sql,要求是一个查询语句。如果validationQuery为null,testOnBorrow、testOnReturn、testWhileIdle都不会其作用。 -->
    31         <property name="validationQuery" value="SELECT 1"/>  
    32         <!-- 申请连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。 -->
    33         <property name="testOnBorrow" value="true"/>  
    34         <!-- 归还连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能 -->
    35         <property name="testOnReturn" value="false"/>  
    36         <!-- 建议配置为true,不影响性能,并且保证安全性。申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效。 -->
    37         <property name="testWhileIdle" value="true"/>  
    38         <!-- 检测连接的时间间隔 -->
    39         <property name="timeBetweenEvictionRunsMillis" value="90000"/>  
    40     </bean>  
  • 相关阅读:
    use paramiko to connect remote server and execute command
    protect golang source code
    adjust jedi vim to python2 and python3
    install vim plugin local file offline
    add swap file if you only have 1G RAM
    datatables hyperlink in td
    django rest framework custom json format
    【JAVA基础】网络编程
    【JAVA基础】多线程
    【JAVA基础】String类的概述和使用
  • 原文地址:https://www.cnblogs.com/kellyJAVA/p/8278934.html
Copyright © 2011-2022 走看看