tomcat jdbc pool 连接池配置

来源:互联网 发布:mysql nosql 编辑:程序博客网 时间:2024/05/18 15:50
Tomcat 在 7.0 以前的版本都是使用commons-dbcp做为连接池的实现,但是 dbcp存在一些问题: 
(1)dbcp 是单线程的,为了保证线程安全会锁整个连接池 
(2)dbcp 性能不佳 
(3)dbcp 太复杂,超过 60 个类,发展滞后。 
因此,通常J2EE中还会使用其它的高性能连接池,如 C3P0,还有阿里系的 druid 等。为此,Tomcat 从 7.0 开始引入一个新的模块: Tomcat jdbc pool 
tomcat jdbc pool 近乎兼容 dbcp ,性能更高 
异步方式获取连接 
tomcat jdbc pool 是 tomcat 的一个模块,基于 tomcat JULI,使用 Tomcat 的日志框架 
使用 javax.sql.PooledConnection 接口获取连接 
支持高并发应用环境 
超简单,核心文件只有8个,比 c3p0 还少 
更好的空闲连接处理机制 
支持 JMX 
支持 XA Connection。 
tomcat jdbc pool 可在 Tomcat 中直接使用,也可以在独立的应用中使用。 

  • name 连接池的名称

  • defaultAutoCommit 指定由连接池所创建的连接的自动提交(auto-commit)状态。

  • DefaultReadOnly 由连接池所创建的连接对数据库的只读属性

  • DefaultTransactionIsolation
    指定由连接池所创建的连接的事务级别(TransactionIsolation)。可用值为下列之一:(详情可见javadoc)
    NONEREAD_COMMITTEDREAD_UNCOMMITTEDREPEATABLE_READSERIALIZABLE

  • MinEvictableIdleTimeMillis

  • JmxEnabled 开启jmx的管理功能

  • TestWhileIdle 会使用测试线程,测试池中连接是否能够正常使用。

  • ValidationQuery
    指定连接进入空闲状态时是否经过空闲对象驱逐进程的校验(如果存在空闲对象驱逐进程)。如果校验未通过,则该连接被连接池断掉。
    注意:要想值为true时该设置生效,则validationQuery参数必须为一个非空字串。

  • TestOnBorrow
    指定连接被调用时是否经过校验。如果校验未通过,则该连接被连接池断掉,并由连接池尝试调用另一个连接。
    指定连接返回到池中时是否经过校验。
    注意:要想值为true时该设置生效,则validationQuery参数必须为一个非空字串。

  • TestOnReturn
    指定连接返回到池中时是否经过校验。
    注意:要想值为true时该设置生效,则validationQuery参数必须为一个非空字串。

  • ValidationInterval 以毫秒为单位验证时间间隔。

  • TimeBetweenEvictionRunsMillis 以毫秒表示的空闲对象驱逐进程由运行状态进入休眠状态的数值。值为非正数时表示不运行任何空闲对象驱逐进程。

  • MaxActive 池中 工作连接的最大个数,此值为非正数是表述不限制

  • InitialSize 以毫秒表示的当连接池中没有可用连接时等待可用连接返回的时间,超时则抛出异常,值为-1时无限期等待。

  • MaxWait 以毫秒表示的当连接池中没有可用连接时等待可用连接返回的时间,超时则抛出异常,值为-1时无限期等待。

  • MinIdle 池中最小空闲连接数,当连接数少于此值时,池会创建连接来补充到该值的数量

  • MaxIdle 池中允许的最大连接数,值为非正数时表示不限制

  • NumTestsPerEvictionRun 连接池检查每个空闲对象驱逐进程的对象数量(如果存在空闲对象驱逐进程)

  • MinEvictableIdleTimeMillis 以毫秒表示的连接被空闲对象驱逐进程驱逐前在池中保持空闲状态的最小时间(如果存在空闲对象驱逐进程)。

  • LogAbandoned
    当清除无效连接时是否在日志中记录清除信息的标志。 记录无效的语句和连接,并附加每个连接开启或新建一个语句的系统开销。如果你启用了“removeAbandoned”,可能会导致被设为无效的连接被连接池回收。
    这个机制将会在满足下列两个条件时启动:(getNumIdle() < 2) 和 (getNumActive() > getMaxActive() - 3)
    例如:假设maxActive=20,而当前已经拥有18个活动连接,1个空闲连接,“removeAbandoned”机制将会启动。 但是只有在活动连接没有使用的时长超过“removeAbandonedTimeout”(默认为300秒)的连接被清除。在遍历结果集时,所使用的连接不会被标为活动连接。

  • RemoveAbandoned
    是否清除已经超过“removeAbandonedTimout”设置的无效连接。
    如果值为“true”则超过“removeAbandonedTimout”设置的无效连接将会被清除。设置此属性可以从那些没有合适关闭连接的程序中恢复数据库的连接。
    记录无效的语句和连接,并附加每个连接开启或新建一个语句的系统开销。

  • RemoveAbandonedTimeout 以秒表示的清除无效连接的时限。

  • JdbcInterceptors
    设置 tomcat jdbc 连接池的拦截器。
    内置的拦截器: org.apache.tomcat.jdbc.pool.interceptor.ConnectionState
    追踪自动提交、只读状态、catalog和事务隔离等级等状态

0 0
原创粉丝点击