zoukankan      html  css  js  c++  java
  • DBCP连接池配置参数

    本文参考自:https://blog.csdn.net/zys_1997/article/details/78107783

    首先,明确连接、活动连接(连接正被使用)、空闲连接的概念

    创建连接

    1、初始化 2、空闲连接低于最小空闲minIdle

    销毁连接

    1、空闲连接数目高于最大空闲 2、活动连接被遗弃

    回收行为

    1、空闲连接回收器(定时执行)2、连接回收器(maxwait后触发)

    --------------------------

    initialSize 初始化连接数,即连接池启动时池子中的连接数目

    maxActive 最大活动连接数,即连接池中可同时连接的最大数目

    minIdle 最小空闲连接,连接池中最少的空闲的连接数,

    低于这个数量时,意味着连接不够用了,会被创建新的连接

    默认为0,该参数越接近maxIdle,性能越好因为连接的创建和销毁,都是需要消耗资源的

    不宜太大,因为在机器很空闲的时候,也会创建低于minidle个数的连接,类似于jvm参数中的Xmn设置。

    maxIdle 最大空闲连接

    超过此参数时空闲连接将被释放,如果设置为负数表示不限制

    默认为8个,maxIdle不能设置太小,因为假如在高负载的情况下,连接的打开时间比关闭的时间快,会引起连接池中idle的个数上升超过maxIdle,而造成频繁的连接销毁和创建,类似于jvm参数中的Xmx设置

    maxWait 请求连接时,最长的等待时间。

    单位ms,当没有可用连接时,连接池会等待连接释放,超过该时间限制会抛出异常,如果设置-1表示无限等待(默认为无限)

    validationQuery 验证操作时使用得SQL语句

    testWhileIdle 连接空闲时是否被空闲连接回收器(如果有)验证

    如果验证失败,将直接回收

    testOnBorrow 连接被借走(取出使用)时需不需要验证

    默认值是true,即每次从连接池中取出连接时,都需要执行validationQuery中的SQL进行测试,这会导致性能下降7-10倍。

    一般设为false,不要测试

    --------------------

    以下三者配合使用:

    minEvictableIdleTimeMillis 连接空闲了多久会被空闲连接回收器回收

    numTestsPerEvictionRun 空闲连接回收器每次检查多少个连接

    timeBetweenEvictionRunsMills 空闲连接回收器运行周期

    每timeBetweenEvictionRunsMills运行一次空闲连接回收器(独立线程)。

    每次检查numTestsPerEvictionRun个连接,如果连接空闲时间超过minEvictableIdleTimeMillis就先销毁,之后如果小于minIdle数量,就新建连接,维护数量不少于minIdle,过行了新老更替。

    --------------------

    以下三者配合使用:

    removeAbandonedTimeout 连接多久没被使用即视为Abandoned,即连接泄漏

    removeAbandoned 当active连接快到maxActive连接的时候,是否回收无效的连接回收

    备注:maxWait的时间不要设得太长,maxWait如果设置太长那么客户端会等待很久才激发回收事件。

    logAbandoned 回收事件后,是否在log中打印出回收Connection的错误信息,包括在哪个地方用了Connection却忘记关闭了,在调试的时候很有用。 
       

  • 相关阅读:
    全局比对与动态规划
    汉诺塔游戏的递归解析
    scikit-learn 多分类混淆矩阵
    Python argparse 子命令
    优雅的查看json文件
    Python数据结构和算法学习笔记4
    Python学习笔记29
    Python学习笔记28
    Python数据结构和算法学习笔记3
    Python数据结构和算法学习笔记2
  • 原文地址:https://www.cnblogs.com/yanze/p/10606622.html
Copyright © 2011-2022 走看看