为什么apache.commons.dbcp2连接池在尝试创建新连接时出现套接字错误?

时间:2016-07-08 12:22:26

标签: connection-pooling

我在制作中随机出现错误。 当我们的负载激增并且应用程序试图进行大量插入时,会发生这种情况。

java.sql.SQLRecoverableException: IO Error: The Network Adapter could not establish the connection
    at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:743)
    at oracle.jdbc.driver.PhysicalConnection.connect(PhysicalConnection.java:666)
    at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32)
    at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:566)
    at org.apache.commons.dbcp2.DriverConnectionFactory.createConnection(DriverConnectionFactory.java:39)
    at org.apache.commons.dbcp2.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:205)
    at org.apache.commons.pool2.impl.GenericObjectPool.create(GenericObjectPool.java:836)
    at org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:434)
    at org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:361)
    at org.apache.commons.dbcp2.PoolingDataSource.getConnection(PoolingDataSource.java:102)
    at org.apache.commons.dbcp2.BasicDataSource.getConnection(BasicDataSource.java:1413)

如果连接池耗尽现有连接,则应该能够创建新连接。

连接池的最大限制为100

Min是8。

为什么池无法创建连接?

在我的研究中,我发现人们建议使用此参数

oracle.jdbc.ReadTimeout

但我不相信。

1 个答案:

答案 0 :(得分:0)

在浏览日志和Oracle文档后,当oracle拒绝连接时会发生此错误。在我们的案例中发生这种情况的原因是因为服务器过载(它没有用完连接)并且不接受任何新请求。