내 GUI 응용 프로그램과 함께 c3po 풀링을 사용했습니다. 나는c3po 헬퍼 스레드가 교착 상태가 됨
overrides.put("maxStatementsPerConnection", 30);
overrides.put("maxPoolSize",70);
overrides.put("checkoutTimeout", 50000);
때때로 나는 내가 다른 연결이 열려 확신 비록 시도가
java.sql.SQLException: An attempt by a client to checkout a Connection has timed out.
at com.mchange.v2.sql.SqlUtils.toSQLException(SqlUtils.java:106)
at com.mchange.v2.sql.SqlUtils.toSQLException(SqlUtils.java:65)
at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool.checkoutPooledConnection(C3P0PooledConnectionPool.java:527)
at com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource.getConnection(AbstractPoolBackedDataSource.java:128)
at com.jthink.jaikoz.db.Db.createConnection(Db.java:402)
밖으로 연결 시간을 얻을 수있는 상황에 들어가 다음과 같은 구성을 가지고있다. 실제로 몇 가지 추가 옵션 (debugUnreturnedConnectionStackTraces
, unreturnedConnectionTimeout
)을 사용하여 연결을 닫지 않는 문제를 확인하고 아무런 문제도 발견하지 못했습니다. 이 문제는 거의 발생하지 않으며 얼마 동안 실행 한 후에 만 발생합니다. 임베디드 Derby
데이터베이스와 함께 사용하고 있습니다.
운이 좋다면 이번에는 실패했을 때 Yourkit
프로파일 러가 활성화되어 있고 모니터 프로파일 링을 할 수 있었고 서로를 기다리고있는 3 개의 c3po 스레드가 있다는 것을 알았습니다. 그래서 나는 생각합니다 이 교착 상태가 여기
com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread#0
com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread#1
com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread#2
실제로이 numHelperThreads
의 설정과 유사하다?
의 SCREENDUMP했다?
미안하지만 c3po 란 무엇입니까? 다른 스타 워즈 로봇? – Iznogood
@Iznogood c3p0은 PooledConnection 라이브러리입니다. http://www.mchange.com/projects/c3p0/index.html –
@DanW 감사합니다 !!! – Iznogood