Tomcat JDBC Pool使用说明
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缺省 |
Tomcat JDBC Pool使用说明相关推荐
- 聊聊tomcat jdbc pool的默认参数及poolSweeper
序 本文主要研究一下tomcat jdbc pool的默认参数及poolSweeper tomcat jdbc pool 参数默认值 initialSize = 10(默认值) maxActive=1 ...
- 聊聊hikari与tomcat jdbc pool的fail fast
序 本文主要研究在中途数据库挂的情况下,hikari与tomcat jdbc pool的fail fast情况. 实验代码 @Testpublic void testDatabaseDownAndUp ...
- tomcat7 mysql 连接池_Tomcat7 新的数据库连接池Tomcat jdbc pool介绍和配置
Tomcat 在 7.0 以前的版本都是使用commons-dbcp做为连接池的实现,但是 dbcp存在一些问题: (1)dbcp 是单线程的,为了保证线程安全会锁整个连接池 (2)dbcp 性能不佳 ...
- Tomcat JDBC池–连接泄漏–捕获罪魁祸首
数据库连接泄漏是可以隐藏的东西,除非特别注意,否则将在系统高峰期最关键的阶段暴露出来. 我们将手动检查所有打开的连接是否已正确关闭. 然后,我们将提供各种代码质量插件来进行扫描和检查. 当连接通过复杂 ...
- 在独立Java应用程序中使用Tomcat JDBC连接池
这是从我们的客人文章W4G伙伴克拉伦斯豪的作者临春3从A按. 您可能会在文章结尾找到本书的折扣券代码,仅适用于Java Code Geeks的读者! 请享用! 在需要数据访问权限的独立Java应用程序 ...
- tomcat jdbc SlowQueryReport的实现解读
为什么80%的码农都做不了架构师?>>> ##序 tomcat提供了JdbcInterceptor可以用来监控jdbc的执行情况,默认提供了好几个现成的interceptor可 ...
- C3P0数据源和Tomcat jdbc数据源的基本配置
在项目中我们经常需要使用数据源,数据源存储所有建立数据库连接的信息.就象通过指定文件名你可以在文件系统中找到文件一样,通过提供正确的数据源名称,你可以找到相应的数据库连接.下面分别对C3P0数据源和T ...
- tomcat jdbc连接池配置属性详解之参数说明
driverClassName 数据库驱动类,针对mysql填com.mysql.jdbc.Driver username 用户名 password 密码 maxActive 最大允许的连接数 max ...
- tomcat jdbc连接池的suspect、abandon操作解析
为什么80%的码农都做不了架构师?>>> ##Connection has been marked suspect Connection has been marked sus ...
最新文章
- 一直想测试的NGINX变量输出,最于有办法了。
- Android R.mipmap(或drawable或其他).变量
- zookeeper的设计猜想-防止单点故障
- Android 数据库制作APP,在Android 中使用Anko框架制作一个完整的App,第二集
- eclipse Android 开发基础 Activity 窗体 界面
- localStorage、sessionStorage用法总结
- 在多节点集群中运行Cassandra
- python卡方检验关键词,特征选择——卡方检验(使用Python sklearn进行实现)
- 从零开始学习音视频编程技术--转自雲天之巔
- snagit 10.0.1.58和Patch_SnagIt.exe汉化补丁安装流程图
- python掷骰子小游戏编程入门_MicroPython实战:开发一款掷骰子小游戏
- ecshop二次开发攻略
- 测试从零开始-No.9-软件配置管理介绍
- 读《470个建筑设计创意发想》
- 高翔orbslam_高翔Slambook第七讲代码解读(特征点提取)
- C++学习之路抓紧跑路版(七)-动态申请内存空间
- Win11WSA无法启动的解决办法
- unity 2d角色移动卡住的原因
- C#毕业设计——基于C#+vc.net+Access的报名管理信息系统设计与实现(毕业论文+程序源码)——报名管理信息系统
- bootstrapvalidator已定义的验证规则