1. ExceptionSorter介绍

DruidDataSource使用一种叫做ExceptionSorter的机制来处理不可恢复异常发生时把连接从连接池中去掉,避免这种“脏”连接影响整个连接池的使用。

2. OnFatalErrorMaxActive介绍

在Druid 1.1.6版本开始,提供了OnFatalErrorMaxActive配置选项,用于控制当OnFatalError发生时最大使用连接数量,用于控制异常发生时并发执行SQL的数量,减轻数据库恢复的压力。

2.1 onFatalErrorMaxActive实现描述

  • 提供参数onFatalErrorMaxActive,缺省值为0。
  • 当ExceptionSorter检测到fatalError发生,进入onFatalError状态。
  • 当有Statement.Execute(包括execute/executeQuery/executeUpdate/executeBatch)执行成功后,退出onFatalError状态。
  • 在onFatalError状态,并且参数设置onFatalErrorMaxActive > 0时,会检查activeCount是否大于onFatalErrorMaxActive,如果大于则抛异常。

3. 配置示例

  1. <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
  2. <property name="onFatalErrorMaxActive" value="1" />
  3. </bean>