【问题标题】:How to use ResetAbandonedTimer to avoid connection closed due to removeAbandonedTimeout如何使用 ResetAbandonedTimer 避免连接因 removeAbandonedTimeout 而关闭
【发布时间】:2018-07-07 20:30:51
【问题描述】:

我收到了 Socket 关闭异常,案例和原因来自:Getting SQLServerException socket close for one particular method in Java

为了解决这个问题,我按照建议使用了(JdbcInterceptors):WebApp (Tomcat-jdbc) Pooled DB connection throwing abandon exception

谢谢你们,但这个解决方案不适用于我的情况, 尽管如此,我还是收到了 Socket Closed 异常, 我用过jdbcInterceptors,你可以检查下面的配置...

<Resource
    name="jdbc/dev"
    auth="Container"
    type="javax.sql.DataSource"
    maxActive="100"
    maxIdle="5"
    maxWait="-1"
    driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
    url="jdbc:sqlserver://Localhost:1433;DatabaseName=outingDB"
    username="sa"
    password="local#123"
    removeAbandoned="true"
    removeAbandonedTimeout="30"
    logAbandoned="false"
    abandonWhenPercentageFull="50"
jdbcInterceptors="org.apache.tomcat.jdbc.pool.interceptor.ResetAbandonedTimer"/>

在我的情况下,我的一个 sql 查询需要更多的执行时间然后 removeAbandonedTimeout, 所以连接正在关闭,它会抛出 Socket Closed 异常。

现在我想重置 Abandoned Timer,如果正在使用连接或者是否有其他方法可以增加数据库的 Socket 超时。

请给我建议,是对是错还是有其他方法可以实现?提前谢谢。

【问题讨论】:

    标签: java sql-server jdbc tomcat7 connection-pooling


    【解决方案1】:

    根据文档,removeAbandonedTimeout 值应设置为您的应用程序可能具有的最长运行查询。因此,测量执行最长查询所需的时间并增加此参数的值。

    来源:https://tomcat.apache.org/tomcat-8.0-doc/jdbc-pool.html#Common_Attributes

    【讨论】:

      猜你喜欢
      • 2017-12-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-11
      • 1970-01-01
      • 2012-05-23
      • 2016-07-30
      • 1970-01-01
      相关资源
      最近更新 更多