2016-07-08 2 views
0

프로덕션 환경에서 임의로 오류가 발생했습니다. 로드가 급증하고 응용 프로그램에서 많은 양의 삽입 작업을 시도 할 때 이런 현상이 발생합니다.새 연결을 만들 때 apache.commons.dbcp2 연결 풀에서 소켓 오류가 발생하는 이유는 무엇입니까?

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

최소 8.

왜 풀에서 연결을 만들 수 없습니다입니까?

나의 연구에서는 나는 사람들이이 매개 변수를

oracle.jdbc.ReadTimeout 

를 사용하도록 제안하지만 확신하지 않다 발견했다.

답변

0

로그 및 Oracle 설명서를 살펴본 후 oracle이 연결을 거부하면이 오류가 발생합니다. 이유는 서버가 과부하되어 (연결이 끊어지지 않았기 때문에) 새로운 요청을 받아들이지 않았기 때문입니다.