前言

连接池本质作用是为客户端提供连接复用,提升连接效率,降低系统开销。Tomcat的连接池提供了maxActive,maxWait,maxIdle,minIdle,initialSize等参数,配置连接池的大小,用户根据自身业务需求配置这几个参数。同时,因为对端数据库服务器状态不受tomcat控制,所以tomcat需要有检查连接可用性的机制,通过testOnBorrow,testWhileIdle等选项用户可以告诉tomcat是否检查连接可用性以及如何检查。

1,连接池大小及性能选项

maxActive:最主要参数,配置连接池同时能维持的最大连接数,如果客户端理论上需要100个连接,则这个值应超过100。
maxIdle:在客户端一段时间内不需要使用连接时,如果一直把所有连接池中的所有连接都维持在活动状态是很浪费资源的,maxIdle这个选项告诉tomcat,如果客户端没有需求,那么最多维持maxIdle个空闲连接。
minIdle:和maxIdle类似,maxIdle告诉tomcat最多维持多少个空闲连接,minIdle告诉tomcat即使客户端没有需求,也要至少维持多少个空闲连接,以应对客户端的突发需求。
initialSize:连接池启动时要初始化多少个连接,即使客户端这是没有需求,也会初始化空闲连接。
maxWait:连接池中没有连接可借出状态的超时时间,单位为毫秒,比如设为10000ms,连接池如果所有连接已借出,没有可用连接,这种状态超过10秒则会抛出异常PoolExhaustedException
maxAge:连接池中一个连接的寿命,连接池初始化一个连接后,会记下初始化的时间,以后每次出借,或有客户端归还这个连接时,连接池会检查 当前时间 - 初始化时间 > maxAge,如果超过maxAge,连接池会删除这个连接。

2,连接检查选项

mysql5以后,如果连接长时间不活动 (34,247,052 ms≈ 9.5 小时),mysql数据库会断开连接,这会导致异常:MySQLNonTransientConnectionException: No operations allowed after connection closed,以下选项将会告诉连接池,主动检查连接可用性,避免这个异常发生。

validationQuery:检查连接可用性的语句,一般来说mysql设置成SELECT 1, oracle设置成select 1 from dual, sql server设置成SELECT 1 ,在检查连接可用性时,连接池会执行这些语句,如果返回结果不为空,则说明连接可用。
validationQueryTimeout:执行连接检查语句时的超时时间。

上面两个选项告诉连接池如何检查连接有效性,下面几个选项告诉连接池在何时检查连接有效性

testOnConnect: 在连接初始化时执行连接可用性检查
testOnBorrow:在借出连接时检查连接可用性
testOnReturn:在客户端归还连接时检查连接可用性
testWhileIdle:在检查闲置连接时同时检查连接可用性

3,一个典型的连接池设置

  <Resource name="jdbc/your-jndi-name" auth="Container" type="javax.sql.DataSource"factory="org.apache.tomcat.jdbc.pool.DataSourceFactory" maxActive="30" maxIdle="10" minIdle="5" maxWait="100000" initialSize="5" testWhileIdle="true"testOnBorrow="true" testOnReturn="false" validationQuery="SELECT 1" validationInterval="30000" timeBetweenEvictionRunsMillis="30000" maxAge="14400000"username="your-username" password="your-password" driverClassName="com.mysql.cj.jdbc.Driver" url="jdbc:mysql://host-address:3306/your-db-name?useUnicode=true&amp;characterEncoding=utf-8&amp;disableMariaDbDriver"/>

【连接池】Tomcat 连接池中 maxActive,maxWait,maxAge,testOnBorrow,testWhileIdle等选项的作用相关推荐

  1. java tomcat数据库连接池,tomcat 数据库连接池拿不到连接

    我们是 springboot1.x 的应用 用的自带的数据库连接池就是 tomcat,数据库用的是 oracle,现在发生了一些奇怪的事就是初始化数据库连接池的时候可能会卡在创建连接那一步,但是重启可 ...

  2. 连接池中 maxActive,maxWait,maxAge,maxIdel参数

    前言 连接池本质作用是为客户端提供连接复用,提升连接效率,降低系统开销.Tomcat的连接池提供了maxActive,maxWait,maxIdle,minIdle,initialSize等参数,配置 ...

  3. 连接池中的maxIdle,MaxActive,maxWait等参数详解

    转: 连接池中的maxIdle,MaxActive,maxWait等参数详解 2017年06月03日 15:16:22 阿祥小王子 阅读数:6481 版权声明:本文为博主原创文章,未经博主允许不得转载 ...

  4. 数据库连接池和Tomcat连接池的配置问题

    在做系统优化的时候师哥给我们提了一个连接池的概念,问我们有没有配置,我对这个概念一无所知,于是进行了一些研究,连接池有很多,比如WCF.EF还有数据库.CAS也可以配连接池,这些连接池用通俗的语言来说 ...

  5. Tomcat连接池配置

    1.  Tomcat c3p0连接池配置 (1)  修改conf/server.xml,在<GlobalNamingResources>标签内添加如下内容 <Resource nam ...

  6. tomcat连接池的配置与使用

    今天做接jsp的作业,在页面跳转的时候一直遇到个问题,"org.apache.commons.dbcp.SQLNestedException: Cannot create JDBC driv ...

  7. java tomcat连接池,tomcat容器的内置连接池怎么使用(按时结帐)

    tomcat容器的内置连接池怎么使用(按时结帐) tomcat容器的内置连接池怎么使用(按时结帐) 日期:2014-05-18 浏览次数:20325 次 tomcat容器的内置连接池如何使用(按时结帐 ...

  8. Redis中的连接池以及在Springboot中的使用

    1.为什么要使用连接池以及常用客户端的区别     众所周知,Redis是单线程的,那为什么还要使用连接池?首先Redis也是一种基于内存数据库,有着很高的性能,但是我们的系统使用Redis服务时需要 ...

  9. Tomcat JDBC池–连接泄漏–捕获罪魁祸首

    数据库连接泄漏是可以隐藏的东西,除非特别注意,否则将在系统高峰期最关键的阶段暴露出来. 我们将手动检查所有打开的连接是否已正确关闭. 然后,我们将提供各种代码质量插件来进行扫描和检查. 当连接通过复杂 ...

最新文章

  1. 明文存密码成惯例?Facebook 6 亿用户密码可被 2 万员工直接看
  2. 安装pyspider后运行pyspider all后遇到的问题
  3. [最新答案V0.4版]微软等数据结构+算法面试100题[第41-60题答案]
  4. 我积累的数据库操作类(ASP.NET)
  5. 百度智能云大数据全景架构图如何赋能企业数字化
  6. CTF Geek Challenge——第十一届极客大挑战Re Write Up
  7. 南昌网络赛E Interesting Series
  8. ssl1063-统计数字【哈希表】
  9. Docker有什么好处?
  10. Oracle中5个核心Sql语句的基本构造:Select、Insert、Update、Delete和Merge
  11. 用Python在Tomcat成功启动后自动打开浏览器访问Web应用
  12. Halcon算子学习:create_sheet_of_light_model
  13. Contest Hunter 0103最短Hamilton路径 【状压dp】 By cellur925
  14. 计算机国家实验教学示范中心,教育部 财政部关于批准2007年国家级实验教学示范中心建设...
  15. Linux中修改PATH环境变量(只在当前窗口下生效)
  16. 逸管家坚守诚信是中小企业走上持续发展道路的准则
  17. 【CVPR 2021】基于样本间关系的知识蒸馏:Complementary Relation Contrastive Distillation
  18. 虚拟机中windows镜像下载与安装
  19. php json转数组不成功,phpjson转数组出错
  20. 什么是深度卷积神经网络,卷积神经网络怎么学

热门文章

  1. Modeling in Blender: Low Poly Car
  2. 解决中文乱码的一些心得
  3. Macbook M1开启允许任意来源应用
  4. Navicat查看表的sql语句
  5. 前端工具之WebStorm安装破解和汉化
  6. 5g空分复用技术_【从零开始学5G】空分复用与Pre5G
  7. 椭圆参数方程,椭圆离心角和圆心角的关系
  8. 采样 -- 基本概念
  9. 【OpenCV学习】 《OpenCV3编程入门》--毛星云 01 邂逅OpenCV(OpenCV基本概念与基本架构) ROS系统上的运用(python实现)
  10. 网络基础——牛客网刷题第五波