[SPRING] 풀 오류가 발생합니다. 유휴 상태의 객체를 기다리는 시간 초과입니다.
SPRING풀 오류가 발생합니다. 유휴 상태의 객체를 기다리는 시간 초과입니다.
<Resource name="jdbc/name" auth="Container" type="javax.sql.DataSource"
maxActive="100" maxIdle="30" maxWait="10000"
username="root" password="root" driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql:url?autoReconnect=true"/>
Tomcat 서버에서 위의 명령문을 사용하여 연결 풀을 생성했습니다.
일부 안드로이드 응용 프로그램은 웹 서비스를 통해 내 응용 프로그램과 연결됩니다. 웹 서비스를 통해 일부 데이터를 보내고받습니다. 오류가 발생했습니다.
SQLState: null
[2013-12-05 14:13:06,156]ERROR069688[http-8080-10] - org.hibernate.util.JDBCExceptionReporter.logExceptions(JDBCExceptionReporter.java:78) -
Cannot get a connection, pool error Timeout waiting for idle object
연결 풀 예외 : 연결을 가져올 수 없습니다. 풀 오류입니다. 유휴 개체를 기다리는 시간 초과입니다.
그러나 나를위한 아무 단서도.
그 이유는 무엇입니까?
미리 감사드립니다 ...
해결법
-
==============================
1.이 예외는, 풀 매니저가 대기 중의 리퀘 스터에게 실행 가능한 접속을 생성 할 수 없기 때문에, maxWait가 성공한 것에 따라, 타임 아웃을 방아쇠 한 것을 나타냅니다. 몇 가지 잠재적 인 원인이 있지만 대개 두 가지 범주로 나뉩니다.
이 예외는, 풀 매니저가 대기 중의 리퀘 스터에게 실행 가능한 접속을 생성 할 수 없기 때문에, maxWait가 성공한 것에 따라, 타임 아웃을 방아쇠 한 것을 나타냅니다. 몇 가지 잠재적 인 원인이 있지만 대개 두 가지 범주로 나뉩니다.
DB가 쿼리 실행을 멈추는 오류가 발생하는 경우이 시나리오를 생성하기 위해 때로는 1과 2가 사용됩니다. 그렇게되면 새 연결이 끊어 지거나 DB에 대한 쿼리가 차단되어 절대로 연결이 끊어지기 때문에 연결이 누출되는 것처럼 보입니다. 결국 모든 연결이 활성화되고 연결을 요청하는 다음 스레드는 더 이상 연결을 제공하지 않으므로 대기 대기열에 놓입니다. DB가 닫혀 있기 때문에 기다리는 대기열에서 시간 초과 한 첫 번째 요청자까지는 다른 예외가 표시되지 않습니다. 오라클 DB 백엔드가 망가 졌을 때 Oracle UCP를 사용하여이 작업을 가끔 보았습니다.
이 경우 JConsole을 사용하여 DB 풀 크기를 모니터링하고이 오류가 발생한 위의 두 범주 중 어떤 것을 결정할 것을 권장합니다. 그런 다음 연결을 수정하거나 풀 크기 / 시간 초과 매개 변수를 조작하여 실제 수요를 수용 할 수 있습니다 (응용 프로그램의 전체 수요를 줄이기 위해 Tomcat의 커넥터 매개 변수를 조작 할 수도 있음). Tomcat에서 실행중인 경우 일반적으로 JConsole (JDK bin 디렉토리에 있음)을 실행하고 Tomcat 프로세스에 연결 한 다음 JMX 콘솔을 조사하여 풀 크기를 찾을 수 있습니다. 일반적으로 데이터 원본 유형 (dbcp vs oracle ucp vs etc)에 따라 다릅니다. 그런 다음 필드 값을 두 번 클릭하여 시간의 경과에 따라 추적 할 수 있도록 그려 줄 수 있습니다.
또한 JConsole JMX 모니터링이 작동하려면 Tomcat에서 JMX를 활성화해야 할 수도 있습니다.
from https://stackoverflow.com/questions/20401254/i-am-getting-pool-error-timeout-waiting-for-idle-object by cc-by-sa and MIT license