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

前言

连接池本质作用是为客户端提供连接复用,提升连接效率,降低系统开销。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:表示从连接池获取连接的超时等待时间,单位毫秒,需要注意这个参数只管理获取连接的超时。 获取连接等待的直接原因是池子里没有可用连接, 具体包括:连接池未初始化,连接长久未使用已被释放,连接使用中需要新建连接,或连接池已耗尽需等待连接用完后归还。指定时间内没有获取到连接则会抛出异常。
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"/>
  • 12
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
德鲁伊连接池是一个开源的Java数据库连接池,它提供了一种高效、可靠的方式来管理数据库连接。下面是德鲁伊连接池的一些常用配置参数的详解: 1. url:数据库的连接地址。 2. username:数据库的用户名。 3. password:数据库的密码。 4. driverClassName:数据库驱动的类名。 5. initialSize:连接池的初始大小,即连接池启动时创建的连接数。 6. maxActive连接池最大的活动连接数。 7. minIdle:连接池最小的空闲连接数。 8. maxWait:获取连接的最大等待时间,超过这个时间将抛出异常。 9. validationQuery:用于检测连接是否有效的SQL语句。 10. testOnBorrow:在从连接池获取连接时是否进行连接有效性检测。 11. testOnReturn:在将连接归还到连接池时是否进行连接有效性检测。 12. testWhileIdle:在连接池空闲时是否进行连接有效性检测。 13. timeBetweenEvictionRunsMillis:连接池空闲连接的检测周期。 14. minEvictableIdleTimeMillis:连接池连接的最小空闲时间,超过这个时间将被回收。 15. maxEvictableIdleTimeMillis:连接池连接的最大空闲时间,超过这个时间将被回收。 16. filters:连接池的过滤器,用于对连接进行一些额外的处理,如监控、统计等。 以上是一些常用的德鲁伊连接池配置参数的详解,你可以根据自己的需求进行配置。如果你需要更详细的配置信息,可以参考德鲁伊连接池的官方文档或者相关的教程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值