어제 AWS의 RDS가 내려갔습니다. Google 데이터베이스도 마찬가지였습니다.c3p0에 대한 getConnection() 시간 초과를 설정하는 방법은 무엇입니까?
이 경우 C3P0은 데이터베이스 연결을 시도하고 중단됩니다. 분명히 응답을 영원히 기다리지 않고 내 애플리케이션이 이러한 인스턴스에서 오류 페이지를 반환하는 것이 분명합니다.
ComboPooledDataSource db = new ComboPooledDataSource();
...
Connection conn = db.getConnection();
방법 C3P0의 연결 풀에서 연결을 얻기위한 시간 제한을 설정할 수 있습니다
다음은 코드가 어떻게 생겼는지입니까?
나는 checkoutTimeout()이 될 것이라고 생각했지만 - 그렇지 않습니다. "getConnection()을 호출 한 클라이언트가 풀이 고갈되었을 때 Connection이 체크인 또는 획득 될 때까지 기다리는 시간 (밀리 초)입니다." 수영장은 소진되지 않았으므로 (단지 사용할 수 없음) 적용되지 않습니다.
setAcquireRetryAttempts 및 setAcquireIncrement도 작동한다고 생각했지만 연결에 실패하지 않았기 때문에 응답하지 않습니다. 이 포장 마차 곳
나는 전체 스택을 뽑아이다 : 나는 "socketRead0 타임 아웃"과 "socketRead0 요령"을 봤SocketInputStream.socketRead0(FileDescriptor, byte[], int, int, int) line: not available [native method]
SocketInputStream.read(byte[], int, int) line: 129
ReadAheadInputStream.fill(int) line: 113
ReadAheadInputStream.readFromUnderlyingStreamIfNecessary(byte[], int, int) line: 160
ReadAheadInputStream.read(byte[], int, int) line: 188
MysqlIO.readFully(InputStream, byte[], int, int) line: 2428
MysqlIO.reuseAndReadPacket(Buffer, int) line: 2882
MysqlIO.reuseAndReadPacket(Buffer) line: 2871
MysqlIO.checkErrorPacket(int) line: 3414
MysqlIO.sendCommand(int, String, Buffer, boolean, String) line: 1936
MysqlIO.sqlQueryDirect(StatementImpl, String, String, Buffer, int, int, int, boolean, String, Field[]) line: 2060
JDBC4Connection(ConnectionImpl).execSQL(StatementImpl, String, int, Buffer, int, int, boolean, String, Field[], boolean) line: 2542
JDBC4PreparedStatement(PreparedStatement).executeInternal(int, Buffer, boolean, boolean, Field[], boolean) line: 1734
JDBC4PreparedStatement(PreparedStatement).executeQuery() line: 1885
NewProxyPreparedStatement.executeQuery() line: 76
C3P0PooledConnectionPoolManager.initializeAutomaticTestTable(String, DbAuth) line: 799
C3P0PooledConnectionPoolManager.createPooledConnectionPool(DbAuth) line: 696
C3P0PooledConnectionPoolManager.getPool(DbAuth) line: 257
C3P0PooledConnectionPoolManager.getPool() line: 271
ComboPooledDataSource(AbstractPoolBackedDataSource).getNumThreadsAwaitingCheckoutDefaultUser() line: 203
NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method]
NativeMethodAccessorImpl.invoke(Object, Object[]) line: 39
DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25
Method.invoke(Object, Object...) line: 597
BeansUtils.extractAccessiblePropertiesToMap(Map, Object, Collection) line: 359
BeansUtils.appendPropNamesAndValues(StringBuffer, Object, Collection) line: 324
ComboPooledDataSource.toString() line: 539
ComboPooledDataSource(AbstractPoolBackedDataSource).getPoolManager() line: 462
ComboPooledDataSource(AbstractPoolBackedDataSource).getConnection() line: 128
- 난 문제가 있지만 실제 솔루션을 많이 참조하십시오.
여기서 제한 시간을 적용 할 수있는 방법이 있습니까?
감사합니다.