2009-11-13 2 views
1

최대 절전 모드 3을 사용하고 있으며 연결이 닫히는 것과 관련된 문제가 있습니다.최대 절전 모드로 인해 time_wait 연결이 너무 많이 발생했습니다.

나는 c3p0-0.9.1.2.jar를 사용 중이고 최대 절전 모드로 열린 데이터베이스 서버에 대한 연결을 확인한 결과 숫자 5의 연결이 있음을 발견했다. 서버의 일부 TCP 포트에서 (아래 로그 참조).

그러나 이러한 연결은 설정되어있는 TCP 포트를 계속 변경하여 포트가 사용하는 이전 포트를 해제하므로 이러한 포트는 TIME_WAIT 상태 (닫히지 않고)로 만듭니다.

계속해서 계속해서 수백 개를 계산합니다. TIME_WAIT 조건의 연결에 사용됩니다.

나는 무슨 일이 일어나고 있는지, 그리고 포트가 Established에서 TIME_WAIT로 전환되고 이전의 포트가 닫히지 않는 이유가 확실하지 않습니다.

다음은 NETSTAT -ano | find "x.9"를 실행 한 샘플입니다. 여기서 x.9는 데이터베이스 서버 IP입니다.

TCP  x.124.x.66:4379  x.124.x.9:1433  TIME_WAIT  0 

TCP  x.124.x.66:4381  x.124.x.9:1433  TIME_WAIT  0 

TCP  x.124.x.66:4382  x.124.x.9:1433  TIME_WAIT  0 

TCP  x.124.x.66:4383  x.124.x.9:1433  TIME_WAIT  0 

TCP  x.124.x.66:4384  x.124.x.9:1433  TIME_WAIT  0 

TCP  x.124.x.66:4385  x.124.x.9:1433  TIME_WAIT  0 

TCP  x.124.x.66:4386  x.124.x.9:1433  ESTABLISHED  5916 

TCP  x.124.x.66:4387  x.124.x.9:1433  ESTABLISHED  5916 

TCP  x.124.x.66:4388  x.124.x.9:1433  ESTABLISHED  5916 

TCP  x.124.x.66:4389  x.124.x.9:1433  ESTABLISHED  5916 

TCP  x.124.x.66:4390  x.124.x.9:1433  ESTABLISHED  5916 

나를 사용하는 Hibernate.properties 파일.

hibernate.c3p0.min_size=5 
hibernate.c3p0.timeout=2 
hibernate.c3p0.max_size=50 
hibernate.c3p0.idle_test_period=10000 
hibernate.connection.release_mode=auto 

도움 주셔서 감사합니다.

답변

3

TIME_WAIT은 한쪽 또는 양쪽이 이미 연결을 종료했지만 아직 닫히지 않은 상태입니다. 운영 체제에 따라 TIME_WAIT에서 연결 시간을 미세 조정할 수 있습니다. 따라서 나쁜 의미는 아니며 새로운 연결을 만들지 못하는 것이 많으면 성능에 영향을 미치지 않습니다.

질문의 다른 부분에서 클라이언트가 호스트 이름과 대상 포트로 지정된 서버에 연결하면 클라이언트 측의 연결이 포트에 할당됩니다. 그 이유는 연결이 네 가지로 식별된다는 것입니다 : 대상 호스트, 대상 포트, 원본 호스트, 원본 포트.

netstat 출력에서 ​​볼 수있는 바로 그 것입니다. 풀에서 생성 된 5 개의 연결이 있고 TIME_WAIT 상태에서 몇 개의 곧 닫을 연결이 있습니다. 각 포트에는 범위에서 동적으로 할당 된 자체 소스 포트가 있습니다. 이것은 정상입니다.

관련 문제