dbcp

2023-11-11

initialSize="10"     

     初始化连接,连接池启动时创建的初始化连接数量(默认值为0)

maxActive="80"     
     最大活动连接,连接池中可同时连接的最大的连接数(默认值为8)

minIdle="10"     
     最小空闲连接,连接池中最小的空闲的连接数,低于这个数量会被创建新的连接(默认为0,该参数越接近maxIdle,性能越好,因为连接的创建和销毁,都是需要消耗资源的;但是不能太大,因为在机器很空闲的时候,也会创建低于minidle个数的连接,类似于jvm参数中的Xmn设置)

maxIdle="60"     
     最大空闲连接,连接池中最大的空闲的连接数,超过的空闲连接将被释放,如果设置为负数表示不限制(默认为8个,maxIdle不能设置太小,因为假如在高负载的情况下,连接的打开时间比关闭的时间快,会引起连接池中idle的个数上升超过maxIdle,而造成频繁的连接销毁和创建,类似于jvm参数中的Xmx设置)

maxWait="3000"     
     从池中取连接的最大等待时间,单位ms.当没有可用连接时,连接池等待连接释放的最大时间,超过该时间限制会抛出异常,如果设置-1表示无限等待(默认为无限)

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

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

testOnBorrow = "false"     
     借出连接时不要测试,否则很影响性能。一定要配置,因为它的默认值是true。false表示每次从连接池中取出连接时,不需要执行validationQuery = "SELECT 1" 中的SQL进行测试。若配置为true,对性能有非常大的影响,性能会下降7-10倍。

timeBetweenEvictionRunsMillis = "30000"
     每30秒运行一次空闲连接回收器,配置timeBetweenEvictionRunsMillis = "30000"后,每30秒运行一次空闲连接回收器(独立线程)。并每次检查3个连接,如果连接空闲时间超过30分钟就销毁。销毁连接后,连接数量就少了,如果小于minIdle数量,就新建连接,维护数量不少于minIdle,过行了新老更替。

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

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

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

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


注意事项
maxIdle值与maxActive值应配置的接近
     当连接数超过maxIdle值后,刚刚使用完的连接(刚刚空闲下来)会立即被销毁。而不是想要的空闲M秒后再销毁起一个缓冲作用。若maxIdle与maxActive相差较大,在高负载的系统中会导致频繁的创建、销毁连接,连接数在maxIdle与maxActive间快速频繁波动,这不是想要的。高负载系统的maxIdle值可以设置为与maxActive相同或设置为-1(-1表示不限制),让连接数量在minIdle与maxIdle间缓冲慢速波动。

timeBetweenEvictionRunsMillis建议设置值
minIdle要与timeBetweenEvictionRunsMillis配合使用才有用,单独使用minIdle不会起作用。

initialSize="5",会在tomcat一启动时,创建5条连接,效果很理想。但同时我们还配置了minIdle="10",也就是说,最少要保持10条连接,那现在只有5条连接,哪什么时候再创建少的5条连接呢?
     1、等业务压力上来了, DBCP就会创建新的连接。
     2、配置timeBetweenEvictionRunsMillis=“时间”,DBCP会启用独立的工作线程定时检查,补上少的5条连接。销毁多余的连接也是同理。


连接销毁的逻辑

DBCP的连接数会在initialSize - minIdle - maxIdle - maxActive  之间变化。变化的逻辑描述如下:
    默认未配置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,并进行着新老更替。

--------------------- 
作者:_喂人民服雾_ 
来源:CSDN 
原文:https://blog.csdn.net/zys_1997/article/details/78107783 
版权声明:本文为博主原创文章,转载请附上博文链接!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

dbcp 的相关文章

随机推荐

  • 基于http协议的Web服务器

    原理 由HTTP客户端发起一个请求 建立一个到服务器指定端口 默认端口 80 的TCP连接 HTTP在此端口监听客户端发送过来的请求 一旦收到请求 服务器向客户端回复一个状态行 比如 HTTP 1 0 200 OK 和响应消息 HTTP协议
  • 微服务项目实战 - 电商平台 项目框架及多模块开发

    本项目会被分为多个文章去讲解实现 目录 1 项目简介 项目模式 1 B2B模式 B2B Business to Business 2 B2C 模式 B2C Business to Consumer 3 C2B模式 C2B Customert
  • 【Word】学习笔记|批量解决文档中公式编号不居中的问题

    1 问题描述 当你将一个Word中内容 包含公式 复制到另外一个Ward里 发现MathType公式编号未居中 如上图所示 如果你公式较少 可以参考官方教程解决 就是将段落 中文版式 文本对齐方式中设置为居中就行 官方解决方法 MathTy
  • 一个Chen系统的激活控制同步——MATLAB实现

    对于 C h e n Chen Chen系统 驱动系统定义为
  • Linux下lt8911exb调试总结

    调试lt8911exb花了两天时间 总结下 ic功能介绍 mipi转eDP http cn lontiumsemi com UploadFiles pdf LT8911EXB Product Brief pdf github下有驱动源码 可
  • c++11~c++20 -05-thread_local

    目录 一 thread local简介 二 示例 2 1 全局变量 2 2 局部变量 2 3 类对象 2 4 类成员变量 一 thread local简介 thread local变量是C 11新引入的一种存储类型 它会影响变量的存储周期
  • 深入了解Java队列接口

    队列接口 队列接口是 Java 集合框架的一个重要部分 它扩展了 Collection 接口 队列接口表示遵循 先进先出 FIFO 原则的元素集合 队列允许存储重复值 队列的基本特征是元素按特定顺序存储 类似于等待轮流的人群 主要通过添加元
  • 服务器文件怎么删,怎么删除服务器文件

    怎么删除服务器文件 内容精选 换一换 执行chmod R 777 导致CentOS云服务器根目录权限设置成777 系统中的大部分服务以及命令无法使用 此时可通过系统自带的getfacl命令来拷贝和还原系统权限 本节操作介绍误操作导致根目录设
  • Android 12应用适配指南

    Android 12应用适配指南 1 Android 12上的主要变更 1 1 兼容性 1 1 1 前台服务启动限制 1 1 2 前台服务通知延迟 1 1 3 待处理 intent 必须声明可变性 1 1 4 非SDK接口名单更新 1 2
  • vue 通过逻辑控制el-dropdown组件展开和收起

    el dropdown在element ui中应用场景并不少 有些时候 我们下拉的内容并不是他本来的选项 用户选择后就没有关闭 这个时候 就需要我们在逻辑层开启或关闭他的菜单
  • 通过JVM深入理解Java异常机制

    JVM内部结构 要深入理解JVM异常处理机制 需要从JVM内部结构开始 下图描述的主要是Java程序在执行时 由JVM管理的运行时数据区 包括方法区 Java堆 Java虚拟机栈 PC寄存器 本地方法栈 还有常量池 它们又被分为两大类 线程
  • matlab-基础 plot xlabel 图像加上x,y轴的标签

    2019独角兽企业重金招聘Python工程师标准 gt gt gt matlab R2018a 64bit OS Windows 10 x64typesetting Markdown blog my oschina net zhicheng
  • 2014百度校招笔试题之动态链接库&静态链接库详解

    1 什么是静态连接库 什么是动态链接库 静态链接库用通俗的话讲 静态库就是将代码编译到一个二进制文件下 通常扩展名为 LIB 然后客户端调用程序 只需要包含相关的 h文件及LIB库文件一起链接到exe文件中 可执行程序发布后 不再需要该 l
  • cookie默认有效期多长_惊艳面试官的 Cookie 介绍

    关注在看 以后更多干货分享在头条 Cookie 是什么 Cookie 是用户浏览器保存在本地的一小块数据 它会在浏览器下次向同一服务器再发起请求时被携带并发送到服务器上 Cookie 主要用于以下三个方面 会话状态管理 如用户登录状态 购物
  • 亲测GO环境搭建,理解go build、go install、go get

    前言 秉承着作为一个新人 要有着 指哪打哪 的觉悟 在老大的需求下 顶上前端的空缺先干阵子前端 当然 在工作之余还是要好好朝着既定的方向努力的 实习结束后还了电脑 这次毕业再来换了新Mac 重新搭下Go的环境 顺便好好总结下 以后随着学习的
  • VMware虚拟机安装教程

    虚拟机 Virtual Machine 是通过软件模拟的完整计算机系统 在实体计算机中能够完成的工作在虚拟机中都能够实现 在计算机中创建虚拟机时 需要将实体机的部分硬盘和内存容量作为虚拟机的硬盘和内存容量 每个虚拟机都有独立的CMOS 硬盘
  • vue使用three.js并导入.obj模型

    下载three js等依赖 npm install three js data下面定义的 canvasDom null renderer null scene null camera null controls null 在需要用到thre
  • android 日历控件_UI界面开发工具Calendar日历插件示例合集

    适用于Visual C MFC ActiveX COM的Calendar控件为Windows开发人员提供了Outlook样式的日历和日期选择组件 您可以轻松创建日历 可以管理按日 周 工作周或月安排的约会 并提供了多个选项供您选择 包括集成
  • 离线安装Nginx(rpm方式)

    环境 centos7 9 下面将展示通过rpm方式安装Nginx 1 官方下载Nginx rpm包 下载地址 http nginx org packages 下载版本根据操作系统版本进行选择 本次操作系统是centos7 9 64位系统 所
  • dbcp

    initialSize 10 初始化连接 连接池启动时创建的初始化连接数量 默认值为0 maxActive 80 最大活动连接 连接池中可同时连接的最大的连接数 默认值为8 minIdle 10 最小空闲连接 连接池中最小的空闲的连接数 低