Maven依赖

<dependency><groupId>org.apache.tomcat</groupId><artifactId>tomcat-jdbc</artifactId><version>8.5.9</version>
</dependency>

最新版本为9.0,推荐使用8.5.9稳定版

常用配置

连接池配置项很多,下面只列出了推荐配置,项目组可根据自身情况进行增减

<bean id="dataSpource" class="org.apache.tomcat.jdbc.pool.DataSource" destroy-method="close"><property name="driverClassName" value="${spring.db.driverClassName}" /><property name="url" value="${spring.db.url}" /><property name="username" value="${spring.db.username}" /><property name="password" value="${spring.db.password}" /><!-- 连接器启动时创建的初始连接数。默认为 10 --><property name="initialSize" value="${spring.db.initialSize}" /><!-- 最大连接数 默认100 --><property name="maxActive" value="${spring.db.maxActive}" /><!-- 最大空闲连接数 默认100 --><property name="maxIdle" value="${spring.db.maxIdle}" /><!-- 最小连接数,一般与initialSize一致即可 。默认值取自 initialSize --><property name="minIdle" value="${spring.db.minIdle}" /><!--连接池中连接用完时,新的请求的等待时间,超时返回异常,毫秒 默认30000--><property name="maxWait" value="${spring.db.maxWait}" /><!-- 连接进入空闲状态时是否经过空闲对象驱逐进程同时进行校验,默认false,依赖validationQuery --><property name="testWhileIdle" value="${spring.db.testWhileIdle}" /><!-- 在连接返回给调用者前用于校验连接是否有效的SQL语句,必须为一个SELECT语句,且至少有一行结果 --><property name="validationQuery" value="${spring.db.validationQuery}" /><!-- 连接验证的超时时间,单位:秒 --><property name="validationQueryTimeout" value="${spring.db.validationQueryTimeout}" /><!-- 检查连接可用性的时间间隔,单位:毫秒 默认30000 --><property name="validationInterval" value="${spring.db.validationInterval}" /><!-- 空闲对象驱逐检查时间间隔单位毫秒,默认5000 --><property name="timeBetweenEvictionRunsMillis" value="${spring.db.timeBetweenEvictionRunsMillis}" /><!-- 连接被空闲对象驱逐进程驱逐前在池中保持空闲状态的最小时间,单位毫秒,默认60000 --><property name="minEvictableIdleTimeMillis" value="${spring.db.minEvictableIdleTimeMillis}" /><!-- 连接池所创建的连接默认自动提交状态,默认为JDBC缺省值 --><property name="defaultAutoCommit" value="${spring.db.defaultAutoCommit}" /><!--是否利用 JMX 注册连接池,默认:true--><property name="jmxEnabled" value="${spring.db.jmxEnabled}" /><!-- 配置增加查询超时设置(另可配置慢查询自动记录,请查看文档) --><property name="jdbcInterceptors" value="QueryTimeoutInterceptor(queryTimeout=${spring.db.queryTimeout});SlowQueryReport(threshold=${spring.db.threshold})" />
</bean>

推荐参数值:(只用于访问量不是很高的项目,项目组根据情况调整)

spring.db.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver
spring.db.url=jdbc:sqlserver://10.8.1.112:1433;DatabaseName=xxx;sendStringParametersAsUnicode=false
spring.db.username=test
spring.db.password=test
spring.db.initialSize=5
spring.db.maxActive=50
spring.db.maxIdle=30
spring.db.minIdle=5
spring.db.maxWait=10000
spring.db.testWhileIdle=true
spring.db.validationQuery=select 1
spring.db.validationQueryTimeout=1
spring.db.validationInterval=30000
spring.db.timeBetweenEvictionRunsMillis=10000
spring.db.minEvictableIdleTimeMillis=60000
spring.db.defaultAutoCommit=true
spring.db.jmxEnabled=true
#慢查询超时阈值,单位秒
spring.db.queryTimeout=5
#慢查询语句自动记录阈值,注意单位毫秒
spring.db.threshold=3000

参数说明

属性名 描述 默认值
driverClassName 用户名 -
url 密码 -
username 建立连接的url -
password 数据库驱动的完整类名 -
initialSize 连接器启动时创建的初始连接数 10
maxActive 最大连接数,通常为常规访问的最大数据库并发数,建议根据后期jmx监控逐渐调优 100
maxIdle 最大空闲连接数,比较难把握的一个参数,许多连接池也已经移除了此属性(如Druid),访问峰值比较集中的系统如考勤可以设置小一点节省大部分时段的连接资源,过小也可能导致连接频繁创建关闭也会影响性能,建议一般系统不低于maxActive的50% 100
minIdle 最小连接数,一般与initialSize一致即可 10
maxWait 连接池中连接用完时,新的请求的等待时间,超时返回异常,单位毫秒 默认30000
testWhileIdle 连接进入空闲状态时是否经过空闲对象驱逐进程同时进行校验,推荐的校验方法,依赖validationQuery false
validationQuery 在连接返回给调用者前用于校验连接是否有效的SQL语句,必须为一个SELECT语句,且至少有一行结果 -
validationQueryTimeout 连接验证的超时时间,单位秒,注:池本身并不会让查询超时,完全是依靠JDBC驱动来强制查询超时 -
validationInterval TomcatJDBC特有属性,检查连接可用性的时间间隔,防止testOnBorrow和testOnReturn为true时检查过于频繁,单位毫秒 30000
timeBetweenEvictionRunsMillis 空闲对象驱逐检查时间间隔,单位毫秒 5000
minEvictableIdleTimeMillis 连接被空闲对象驱逐进程驱逐前在池中保持空闲状态的最小时间,单位毫秒 60000
defaultAutoCommit 连接池所创建的连接默认自动提交状态(JDBC缺省值意思是默认不会调用setAutoCommit方法) JDBC缺省值
jmxEnabled 是否利用 JMX 注册连接池 true
jdbcInterceptors TomcatJDBC特有属性, QueryTimeoutInterceptor(查询超时拦截器,属性queryTimeout,单位秒,默认1秒),SlowQueryReport(慢查询记录,属性threshold超时纪录阈值单位毫秒,默认1000),多个用拦截器用;分隔,示例:QueryTimeoutInterceptor(queryTimeout=5);SlowQueryReport(threshold=3000)注:当新语句创建时,自动调用Statement.setQueryTimeout(seconds)。池本身并不会让查询超时,完全是依靠JDBC驱动来强制查询超时,更详细的信息请查看官方文档 -
testOnBorrow 连接被调用时是否校验,依赖validationQuery,对性能有一定影响,不推荐使用 false
testOnReturn 连接返回到池中是时是否校验,依赖validationQuery,对性能有一定影响,不推荐使用 false
removeAbandoned 是否清除已经超过 removeAbandonedTimeout 设置的连接,可用于排查一些事务未提交的问题(正式环境谨慎使用,对性能有一定影响),不推荐使用,可用QueryTimeOut拦截器替代 false
removeAbandonedTimeout 清除无效连接的时间,单位秒 与removeAbandoned联合使用 60
defaultReadOnly 连接池创建的连接是否是否为只读,需要说明的是设置了true只是告诉数据库连接是只读,便于数据库做一些优化(例如不安排数据库锁),并非不能执行更新操作,只是对数据的一致性的保护并不强而已(这跟spring的只读事务类似) JDBC缺省
本文转自 独孤环宇 51CTO博客,原文链接:http://blog.51cto.com/snowtiger/1966602

Tomcat JDBC Pool使用说明相关推荐

  1. 聊聊tomcat jdbc pool的默认参数及poolSweeper

    序 本文主要研究一下tomcat jdbc pool的默认参数及poolSweeper tomcat jdbc pool 参数默认值 initialSize = 10(默认值) maxActive=1 ...

  2. 聊聊hikari与tomcat jdbc pool的fail fast

    序 本文主要研究在中途数据库挂的情况下,hikari与tomcat jdbc pool的fail fast情况. 实验代码 @Testpublic void testDatabaseDownAndUp ...

  3. tomcat7 mysql 连接池_Tomcat7 新的数据库连接池Tomcat jdbc pool介绍和配置

    Tomcat 在 7.0 以前的版本都是使用commons-dbcp做为连接池的实现,但是 dbcp存在一些问题: (1)dbcp 是单线程的,为了保证线程安全会锁整个连接池 (2)dbcp 性能不佳 ...

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

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

  5. 在独立Java应用程序中使用Tomcat JDBC连接池

    这是从我们的客人文章W4G伙伴克拉伦斯豪的作者临春3从A按. 您可能会在文章结尾找到本书的折扣券代码,仅适用于Java Code Geeks的读者! 请享用! 在需要数据访问权限的独立Java应用程序 ...

  6. tomcat jdbc SlowQueryReport的实现解读

    为什么80%的码农都做不了架构师?>>>    ##序 tomcat提供了JdbcInterceptor可以用来监控jdbc的执行情况,默认提供了好几个现成的interceptor可 ...

  7. C3P0数据源和Tomcat jdbc数据源的基本配置

    在项目中我们经常需要使用数据源,数据源存储所有建立数据库连接的信息.就象通过指定文件名你可以在文件系统中找到文件一样,通过提供正确的数据源名称,你可以找到相应的数据库连接.下面分别对C3P0数据源和T ...

  8. tomcat jdbc连接池配置属性详解之参数说明

    driverClassName 数据库驱动类,针对mysql填com.mysql.jdbc.Driver username 用户名 password 密码 maxActive 最大允许的连接数 max ...

  9. tomcat jdbc连接池的suspect、abandon操作解析

    为什么80%的码农都做不了架构师?>>>    ##Connection has been marked suspect Connection has been marked sus ...

最新文章

  1. 一直想测试的NGINX变量输出,最于有办法了。
  2. Android R.mipmap(或drawable或其他).变量
  3. zookeeper的设计猜想-防止单点故障
  4. Android 数据库制作APP,在Android 中使用Anko框架制作一个完整的App,第二集
  5. eclipse Android 开发基础 Activity 窗体 界面
  6. localStorage、sessionStorage用法总结
  7. 在多节点集群中运行Cassandra
  8. python卡方检验关键词,特征选择——卡方检验(使用Python sklearn进行实现)
  9. 从零开始学习音视频编程技术--转自雲天之巔
  10. snagit 10.0.1.58和Patch_SnagIt.exe汉化补丁安装流程图
  11. python掷骰子小游戏编程入门_MicroPython实战:开发一款掷骰子小游戏
  12. ecshop二次开发攻略
  13. 测试从零开始-No.9-软件配置管理介绍
  14. 读《470个建筑设计创意发想》
  15. 高翔orbslam_高翔Slambook第七讲代码解读(特征点提取)
  16. C++学习之路抓紧跑路版(七)-动态申请内存空间
  17. Win11WSA无法启动的解决办法
  18. unity 2d角色移动卡住的原因
  19. C#毕业设计——基于C#+vc.net+Access的报名管理信息系统设计与实现(毕业论文+程序源码)——报名管理信息系统
  20. bootstrapvalidator已定义的验证规则

热门文章

  1. 计算机操作系统 - 内存管理
  2. 靶场练习第二天~vulnhub靶场之 THE PLANETS: EARTH
  3. CodeGym一个学习平台
  4. 分享一个ZPL指令在线测试网址
  5. 重磅!实在智能首创“智能融合拾取”技术!
  6. 微信支付调用第三方系统无返回值的问题
  7. “啪”一炮就通!管道疏通神器终于诞生,马桶、下水道再也不怕堵!
  8. iOS App 名字国际化的办法
  9. ZYNQ-7000概述
  10. 道翰天琼认知智能为您解密:Rust语言杀疯了!前有谷歌高薪争夺 Rust 人才,Facebook再官宣加入Rust基金会