Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

【why】version:1.0.26 db:oracle 未自动识别生效的ExceptionSorter #1476

Closed
yuleizhuai opened this issue Nov 8, 2016 · 5 comments
Closed
Labels
Milestone

Comments

@yuleizhuai
Copy link

使用druid1.0.26在数据库oracle单机或rac下,通过webStat看* 连接有效性检查类名 与 * ExceptionSorter类名 为 null。当在应用服务空闲一段时间后使用了不可用连接,请问文少。如何配置生效,我看介绍说是不需要配置的!
image

@yuleizhuai
Copy link
Author

yuleizhuai commented Nov 8, 2016

为了解决长时间不访问应用,再访问又连接不上了数据库了的问题可以使用以下方法:

1)<!-- 默认值是 true ,当从连接池取连接时,验证这个连接是否有效 -->
<property name="testOnBorrow" value="true" />
2)配置minIdle=0能解决此问题

@tsubasa617
Copy link

感觉这个和#1473是一个case,不过是两个不同文件。
这个文件是OracleValidConnectionChecker,里面的重载方法(isValidConnection)名字不对(validConnection),导致在校验连接的时候使用了父类的实现。
要使用父类实现,需要配置validationQuery(默认是null),不然永远返回true(认为已经连接)

@wenshao wenshao added the Bug label Nov 15, 2016
@wenshao wenshao added this to the 1.0.27 milestone Nov 15, 2016
@yuleizhuai
Copy link
Author

@tsubasa617 我配置了validationQuery了。详见如下:

     <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
        <!-- 基本属性 driver、url、user、password -->
        <property name="driverClassName" value="${jdbc.driverClassName}" />
        <property name="url" value="${jdbc.url}" />
        <property name="username" value="${jdbc.username}" />
        <property name="password" value="${jdbc.password}" />

        <!-- 初始化时建立物理连接的个数。初始化发生在显示调用init方法,或者第一次getConnection时 -->
        <property name="initialSize" value="10" />
        <!-- 最小连接池数量 --> 
        <property name="minIdle" value="20" /> 
        <!-- 最大连接池数量 -->
        <property name="maxActive" value="500" />

        <!-- 获取连接时最大等待时间,单位毫秒。这里是60秒 -->
        <property name="maxWait" value="60000" />

        <!-- 间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒。这里是60秒 -->
        <property name="timeBetweenEvictionRunsMillis" value="60000" />

        <!-- 一个连接在池中最小生存的时间或连接保持空闲而不被驱逐的最长时间,单位是毫秒。这里是5分钟 -->
        <property name="minEvictableIdleTimeMillis" value="300000" />

        <!-- 用来检测连接是否有效的sql -->
        <property name="validationQuery" value="SELECT COUNT(*) FROM DUAL" />
        <!-- 建议配置为true,不影响性能,并且保证安全性。申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效。 -->
        <property name="testWhileIdle" value="true" />
        <!-- 申请连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。 -->
        <property name="testOnBorrow" value="false" />
        <!-- 归还连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能 -->
        <property name="testOnReturn" value="false" />

        <!-- 打开removeAbandoned连接泄漏监测功能 -->
        <property name="removeAbandoned" value="true" /> 
        <!-- 1800秒,也就是30分钟 -->
        <property name="removeAbandonedTimeout" value="1800" /> 
        <!-- 关闭abanded连接时输出错误日志 -->
        <property name="logAbandoned" value="true" /> 

        <!-- 打开PSCache,并且指定每个连接上PSCache的大小 -->
        <property name="poolPreparedStatements" value="true" />
        <property name="maxPoolPreparedStatementPerConnectionSize" value="20" />

        <!-- 定期把监控数据输出到日志中,单位是毫秒。这里是30秒 -->
        <property name="timeBetweenLogStatsMillis" value="30000" />

        <!-- 配置监控统计拦截的filters -->
        <property name="filters" value="stat" />

        <!-- 用来配置SQL慢的标准,执行时间超过slowSqlMillis的就是慢,这里设置为5秒 -->
        <property name="connectionProperties" value="druid.stat.slowSqlMillis=5000" />

        <property name="statLogger" ref="myStatLogger" />

    </bean>

    <bean id="myStatLogger" class="xt.common.log.XTLogger">
    </bean>

@wenshao wenshao closed this as completed Nov 26, 2016
@wenshao
Copy link
Member

wenshao commented Nov 26, 2016

已经修复,请使用1.0.27版本

@yuleizhuai
Copy link
Author

@wenshao 我使用了1.0.27 最新版本,还是显示为null。 如下图:
qq 20161128101706
qq 20161128101815

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants