• 数据库连接池配置


    ===============================================

    <property name="maxActive" value="3" />  
    <property name="maxIdle" value="2" />
    <property name="maxWait" value="10000" />
    <property name="timeBetweenEvictionRunsMillis" value="60000"/>
    <property name="minEvictableIdleTimeMillis" value="180000"/>

    ===============================================

    ===============================================

    public class XBasicDataSource extends BasicDataSource {
      @Override
      public synchronized void close() throws SQLException {
        DriverManager.deregisterDriver(DriverManager.getDriver(url));
        super.close();
      }
    }

    销毁连接数

    ===============================================

      maxWait="3000" 从池中取连接的最大等待时间,单位ms.  

       initialSize="10"  初始化连接  

       maxIdle="60"   最大空闲连接  

       minIdle="10"   最小空闲连接  

       maxActive="80" 最大活动连接

       validationQuery = "SELECT 1"  验证使用的SQL语句

       testWhileIdle = "true"      指明连接是否被空闲连接回收器(如果有)进行检验.如果检测失败,则连接将被从池中去除.

       testOnBorrow = "false"   获取连接时不要测试,否则很影响性能,默认值是true  

       timeBetweenEvictionRunsMillis = "30000"  每30秒运行一次空闲连接回收器(独立的线程)

       minEvictableIdleTimeMillis = "1800000"  池中的连接空闲30分钟后被回收

       numTestsPerEvictionRun="10" 在每次空闲连接回收器线程(如果有)运行时检查的连接数量

       removeAbandoned="true"  连接泄漏回收参数,当可用连接数少于3个时才执行

       removeAbandonedTimeout="180"  连接泄漏回收参数,180秒,泄露的连接可以被删除的超时值  

     timeBetweenEvictionRunsMillis毫秒秒检查一次连接池中空闲的连接,把空闲时间超过minEvictableIdleTimeMillis毫秒的连接断开,直到连接池中的连接数到minIdle为止

    默认未配置initialSize(默认值是0)和timeBetweenEvictionRunsMillis参数时,刚启动tomcat时,连接数是0。当应用有一个并发访问数据库时DBCP创建一个连接。
    目前连接数量还未达到minIdle,但DBCP也不自动创建新连接已使数量达到minIdle数量(没有一个独立的工作线程来检查和创建)。
    随着应用并发访问数据库的增多,连接数也增多,但都与minIdle值无关,很快minIdle被超越,minIdle值一点用都没有。
    直到连接的数量达到maxIdle值,这时的连接都是只增不减的。 再继续发展,连接数再增多并超过maxIdle时,使用完的连接(刚刚空闲下来的)会立即关闭,总体连接的数量稳定在maxIdle但不会超过maxIdle。
    但活动连接(在使用中的连接)可能数量上瞬间超过maxIdle,但永远不会超过maxActive。
    这时如果应用业务压力小了,访问数据库的并发少了,连接数也不会减少(没有一个独立的线程来检查和销毁),将保持在maxIdle的数量。
     
    默认未配置initialSize(默认值是0),但配置了timeBetweenEvictionRunsMillis=“30000”(30秒)参数时,刚启动tomcat时,连接数是0。马上应用有一个并发访问数据库时DBCP创建一个连接。
    目前连接数量还未达到minIdle,每30秒DBCP的工作线程检查连接数是否少于minIdle数量,若少于就创建新连接直到达到minIdle数量。
    随着应用并发访问数据库的增多,连接数也增多,直到达到maxIdle值。这期间每30秒DBCP的工作线程检查连接是否空闲了30分钟,若是就销毁。但此时是业务的高峰期,是不会有长达30分钟的空闲连接的,工作线程查了也是白查,但它在工作。到这里连接数量一直是呈现增长的趋势。
    当连接数再增多超过maxIdle时,使用完的连接(刚刚空闲下来)会立即关闭,总体连接的数量稳定在maxIdle。停止了增长的趋势。但活动连接(在使用中的连接)可能数量上瞬间超过maxIdle,但永远不会超过maxActive。
    这时如果应用业务压力小了,访问数据库的并发少了,每30秒DBCP的工作线程检查连接(默认每次查3条)是否空闲达到30分钟(这是默认值),若连接空闲达到30分钟,就销毁连接。这时连接数减少了,呈下降趋势,将从maxIdle走向minIdle。当小于minIdle值时,则DBCP创建新连接已使数量稳定在minIdle,并进行着新老更替。
     
    配置initialSize=“10”时,tomcat一启动就创建10条连接。其它同上
     
    http://itindex.net/detail/51010-httpclient-%E5%8E%9F%E7%90%86-%E6%97%B6%E5%BA%8F%E5%9B%BE  http连接池的实现原理
  • 相关阅读:
    Experice Cloud
    实验一密码引擎商用密码算法实现2交叉测试(选做)
    初识Disruptor
    gRPC实战Demo
    关于Java新版本
    get和post请求区别
    Java 年轻代和老年代
    禁用ListView中的CheckBoxes
    js 将路径反斜杠转换成双反斜杠
    Sql Server如何解决跨数据库的权限问题
  • 原文地址:https://www.cnblogs.com/gstsyyb/p/6689533.html
Copyright © 2020-2023  润新知