c3p0连接检出有时需要15分钟才能失败

弗拉基米尔

使用c3p0遇到问题。在大多数情况下,它工作正常,但在防火墙后的产品环境中,有时无法检出连接。问题是识别连接不可用需要15分钟。池未畅通,因为在15分钟的间隔内正在检查其他连接并愉快地使用它。

日志:

23 Apr 2015 09:08:16.426 [EventProcessor-1] DEBUG c.m.v.c.i.C3P0PooledConnectionPool - Testing PooledConnection [com.mchange.v2.c3p0.impl.NewPooledConnection@5a886282] on CHECKOUT.

15分钟后:

23 Apr 2015 09:23:43.073 [EventProcessor-1] DEBUG c.m.v.c.i.C3P0PooledConnectionPool - Test of PooledConnection [com.mchange.v2.c3p0.impl.NewPooledConnection@5a886282] on CHECKOUT has FAILED. 
java.sql.SQLException: Connection is invalid
    at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.testPooledConnection(C3P0PooledConnectionPool.java:572) [c3p0-0.9.5.jar:0.9.5]
    at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.finerLoggingTestPooledConnection(C3P0PooledConnectionPool.java:451) [c3p0-0.9.5.jar:0.9.5]
    at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.finerLoggingTestPooledConnection(C3P0PooledConnectionPool.java:443) [c3p0-0.9.5.jar:0.9.5]
    at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.refurbishResourceOnCheckout(C3P0PooledConnectionPool.java:336) [c3p0-0.9.5.jar:0.9.5]
    at com.mchange.v2.resourcepool.BasicResourcePool.attemptRefurbishResourceOnCheckout(BasicResourcePool.java:1727) [c3p0-0.9.5.jar:0.9.5]
    at com.mchange.v2.resourcepool.BasicResourcePool.checkoutResource(BasicResourcePool.java:553) [c3p0-0.9.5.jar:0.9.5]
    at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool.checkoutAndMarkConnectionInUse(C3P0PooledConnectionPool.java:756) [c3p0-0.9.5.jar:0.9.5]
    at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool.checkoutPooledConnection(C3P0PooledConnectionPool.java:683) [c3p0-0.9.5.jar:0.9.5]
    at com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource.getConnection(AbstractPoolBackedDataSource.java:140) [c3p0-0.9.5.jar:0.9.5]

然后是一些日志:

23 Apr 2015 09:23:43.073 [EventProcessor-1] DEBUG c.m.v.r.BasicResourcePool - A resource could not be refurbished for checkout. [com.mchange.v2.c3p0.impl.NewPooledConnection@5a886282] 
java.sql.SQLException: Connection is invalid
...
23 Apr 2015 09:23:43.074 [EventProcessor-1] DEBUG c.m.v.r.BasicResourcePool - Resource [com.mchange.v2.c3p0.impl.NewPooledConnection@5a886282] could not be refurbished in preparation for checkout. Will try to find a better resource. 
23 Apr 2015 09:23:43.074 [C3P0PooledConnectionPoolManager[identityToken->67oy4j981qzvkd716hgow4|4177fc5c]-HelperThread-#2] DEBUG c.m.v.r.BasicResourcePool - Preparing to destroy resource: com.mchange.v2.c3p0.impl.NewPooledConnection@5a886282 
23 Apr 2015 09:23:43.074 [EventProcessor-1] DEBUG c.m.v.c.i.C3P0PooledConnectionPool - Testing PooledConnection [com.mchange.v2.c3p0.impl.NewPooledConnection@41318736] on CHECKOUT. 
23 Apr 2015 09:23:43.074 [C3P0PooledConnectionPoolManager[identityToken->67oy4j981qzvkd716hgow4|4177fc5c]-HelperThread-#2] DEBUG c.m.v.c.i.C3P0PooledConnectionPool - Preparing to destroy PooledConnection: com.mchange.v2.c3p0.impl.NewPooledConnection@5a886282 
23 Apr 2015 09:23:43.076 [C3P0PooledConnectionPoolManager[identityToken->67oy4j981qzvkd716hgow4|4177fc5c]-HelperThread-#2] DEBUG c.m.v.c3p0.impl.NewPooledConnection - Failed to close physical Connection: oracle.jdbc.driver.T4CConnection@25145762 
java.sql.SQLRecoverableException: IO Error: Broken pipe
    at oracle.jdbc.driver.T4CConnection.logoff(T4CConnection.java:612) ~[ojdbc6_g-11.2.0.1.0.jar:11.2.0.1.0]
    at oracle.jdbc.driver.PhysicalConnection.close(PhysicalConnection.java:5094) ~[ojdbc6_g-11.2.0.1.0.jar:11.2.0.1.0]
    at com.mchange.v2.c3p0.impl.NewPooledConnection.close(NewPooledConnection.java:642) [c3p0-0.9.5.jar:0.9.5]

c3p0配置:

        ComboPooledDataSource ods = new ComboPooledDataSource();
...
        ods.setInitialPoolSize(5);
        ods.setMinPoolSize(5);
        ods.setMaxPoolSize(10);
        ods.setMaxStatements(50);

        ods.setTestConnectionOnCheckout(true);

所以没有什么太奇异的了。我知道连接丢失是可能的,因此在结帐时测试连接。有什么想法为什么要花费这么长时间来验证/失败连接?我们正在使用Oracle数据库。谢谢。

弗拉基米尔

看起来好像是这样的情况:防火墙终止了连接,根本没有响应发回,即使没有数据的TCP ACK也是如此。在这种情况下,用于验证连接的查询将永远不会返回。这是在套接字/ jdbc驱动程序级别上。

解决方案:

  • 找出防火墙断开连接策略(在我们的情况下为1小时)
  • 设置c3p0.maxConnectionAge属性,以每X秒强制c3p0重新连接。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

有时Hibernate无法通过C3P0获得连接

来自分类Dev

使用c3p0连接池时,MySQL的最佳最大连接设置是多少?

来自分类Dev

在c3p0连接池中设置SQLite连接属性

来自分类Dev

Spring,Hibernate C3P0连接池,物理连接未关闭

来自分类Dev

检测传递到c3p0连接池的无效凭据

来自分类Dev

c3p0连接池错误-Oracle RAC

来自分类Dev

c3p0连接池,DataSources工厂,如何关闭池?

来自分类Dev

关闭实体管理器时,是否总是将连接检入到c3p0连接池中?

来自分类Dev

C3P0连接池使用此配置给出连接超时错误

来自分类Dev

使用c3p0连接池时,应该在休眠状态下关闭会话?

来自分类Dev

如何查找哪个应用程序创建了每个c3p0连接池?

来自分类Dev

从最近4小时开始,每15分钟间隔获取一次所有时间

来自分类Dev

使用JDBC / c3p0连接到MariaDB

来自分类Dev

正在配置TLS证书。这可能需要15分钟才能完成

来自分类Dev

具有c3p0的spring JPA在第一个请求时具有连接超时

来自分类Dev

QODBC SELECT花费> 15分钟才能返回结果

来自分类Dev

C3p0尝试创建新的连接池并失败,并显示ClassNotFoundException

来自分类Dev

简单的SQL查询需要20分钟才能运行?

来自分类Dev

mysql查询需要4分钟才能执行

来自分类Dev

Ubuntu 需要一分钟才能启动

来自分类Dev

EF6连接需要很长时间才能失败

来自分类Dev

为什么无法检出c3p0中的资源?

来自分类Dev

当达到max_size时,c3p0不释放连接

来自分类Dev

配置c3p0以在连接断开时关闭Hibernate会话

来自分类Dev

会话打开时如何使Hibernate SessionFactory从c3p0签出JDBC连接?

来自分类Dev

Java 1.5中的C3P0失败:UnsupportedClassVersionError

来自分类Dev

带有 Hibernate 和 C3P0 的 Mysql 8.0.11:如何禁用通过 SSL 的连接?

来自分类Dev

SQL将5分钟的3行分组为15分钟的单个行

来自分类Dev

c3p0似乎关闭了活动的连接

Related 相关文章

  1. 1

    有时Hibernate无法通过C3P0获得连接

  2. 2

    使用c3p0连接池时,MySQL的最佳最大连接设置是多少?

  3. 3

    在c3p0连接池中设置SQLite连接属性

  4. 4

    Spring,Hibernate C3P0连接池,物理连接未关闭

  5. 5

    检测传递到c3p0连接池的无效凭据

  6. 6

    c3p0连接池错误-Oracle RAC

  7. 7

    c3p0连接池,DataSources工厂,如何关闭池?

  8. 8

    关闭实体管理器时,是否总是将连接检入到c3p0连接池中?

  9. 9

    C3P0连接池使用此配置给出连接超时错误

  10. 10

    使用c3p0连接池时,应该在休眠状态下关闭会话?

  11. 11

    如何查找哪个应用程序创建了每个c3p0连接池?

  12. 12

    从最近4小时开始,每15分钟间隔获取一次所有时间

  13. 13

    使用JDBC / c3p0连接到MariaDB

  14. 14

    正在配置TLS证书。这可能需要15分钟才能完成

  15. 15

    具有c3p0的spring JPA在第一个请求时具有连接超时

  16. 16

    QODBC SELECT花费> 15分钟才能返回结果

  17. 17

    C3p0尝试创建新的连接池并失败,并显示ClassNotFoundException

  18. 18

    简单的SQL查询需要20分钟才能运行?

  19. 19

    mysql查询需要4分钟才能执行

  20. 20

    Ubuntu 需要一分钟才能启动

  21. 21

    EF6连接需要很长时间才能失败

  22. 22

    为什么无法检出c3p0中的资源?

  23. 23

    当达到max_size时,c3p0不释放连接

  24. 24

    配置c3p0以在连接断开时关闭Hibernate会话

  25. 25

    会话打开时如何使Hibernate SessionFactory从c3p0签出JDBC连接?

  26. 26

    Java 1.5中的C3P0失败:UnsupportedClassVersionError

  27. 27

    带有 Hibernate 和 C3P0 的 Mysql 8.0.11:如何禁用通过 SSL 的连接?

  28. 28

    SQL将5分钟的3行分组为15分钟的单个行

  29. 29

    c3p0似乎关闭了活动的连接

热门标签

归档