Java+Tomcat,죽어가는 데이터베이스 연결?
문제
내가 바람둥이 인스턴스에는 설치 하지만 데이터베이스 연결 구성에서 context.xml
죽어가는 계속 기간 후지 않습니다.
면 내가 로그를 확인에 나는 다음과 같은 오류가:
com.mysql.jdbc.예외가 있습니다.jdbc4.CommunicationsException:마지막 패킷을 성공적으로 서버에서 받은 초 was68051 전입니다.마지막 패킷을 전송 성공적으로 서버에 있었 68051 초 전는 이상 서버의 구성 값 'wait_timeout'.고려해야 할 중 하나 만료 및/또 테스트 연결의 유효기 전에 응용 프로그램에서 사용할 증가 서버 구성된 값은 클라이언트 시간 제한하거나 사용하는 커넥터/J 연결 속'autoReconnect=true'이 문제를 방지 할 수 있습니다.
여기에서 구성 context.xml:
<Resource name="dataSourceName"
auth="Container"
type="javax.sql.DataSource"
maxActive="100"
maxIdle="30"
maxWait="10000"
username="username"
password="********"
removeAbandoned = "true"
logAbandoned = "true"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://127.0.0.1:3306/databasename?autoReconnect=true&useEncoding=true&characterEncoding=UTF-8" />
내가 사용하고 autoReconnect=true
같은 오류가 표시를 할,하지만 연결을 유지 죽어가고 있다.나는 본 적이 없는 일이다.
나는가도 확인하는 모든 데이터베이스 연결이 닫히고 있다.
해결책
DBCP 사용하여 자카르타-공 데이터베이스 연결을 수 있습니다.그것은에 의존하수 자카르타 공용 구성 요소:
* Jakarta-Commons DBCP
* Jakarta-Commons Collections
* Jakarta-Commons Pool
이 특성은 당신을 도울 수 있습니다.
removeAbandonedTimeout="60"
내가 사용하여 동일한 연결을 풀링을 물고 나는 이러한 속성을 설정하는 같은 일을 방지하기 그것은 단지 구성을 통해 tomcat.하지만 경우에는 먼저 작동하지 않을 시도한다.
testWhileIdle=true
timeBetweenEvictionRunsMillis=300000
다른 팁
그냥 무엇인지 명확하게 실제로 되었습니다.MySQL 과 기본적으로 종료 열린 연결 후 8 시간의 활동.그러나 데이터베이스 연결에 수영장을 유지에 대한 연결 이상입니다.
도록 설정하여 timeBetweenEvictionRunsMillis=300000 당신이 지시 연결이 수영장 등을 통해 실행하는 연결을 제거하고 가까운 유휴 상태는 사람마다 5 분.
지 모르겠어 위의 대답을 기본적으로 같은 일을,하지만 일부 시스템을 사용하여 DB 연결에 대한 일주일에 한 번 봤어요 우리가 제공하는 a-Otimeout 깃발의 종류를 mysql 연결을 설정한다.