2014-09-30 3 views
0

약 7-8 일마다이 오류가 표시됩니다. 그래서이 문제를 디버깅하기 위해 스레드 덤프 파일을 다운로드했습니다. 주소가 null이고 포트가 8080 인 커넥터에 대해 생성 된 최대 스레드 수 (200)

"http-8080-198" daemon prio=10 tid=0x08a62c00 nid=0x3a78 in Object.wait() [0x66467000] 
    java.lang.Thread.State: WAITING (on object monitor) 
    at java.lang.Object.wait(Native Method) 
    - waiting on <0x87097728> (a org.apache.commons.pool.impl.GenericObjectPool$Latch) 
    at java.lang.Object.wait(Object.java:485) 
    at   org.apache.commons.pool.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:1104) 
    - locked <0x87097728> (a org.apache.commons.pool.impl.GenericObjectPool$Latch) 

그래서 제 질문은 다음과 같습니다 : 때문에 MySQL의 연결 풀의 예외가

  1. 가이 파일은 스레드 상태 다음 100 번이있다? 그렇다면 문제를 해결하려면 어떻게해야합니까? 내 MAX-Active 값은 50이고 MinIdle 값은 1입니다.

  2. 그렇다면 어떤 기능이 스레드를 보유하고 있는지 어떻게 알 수 있습니까?

답변

0

나는 대략 매 7-8일에서 자극에이 오류를 얻고있다.

대부분의 경우 리소스를 결정적으로 정리하지 않아서 (예 : 완료 한 경우) 연결이 풀로 반환 될 수 있습니다. GC는 주기적으로 연결을 정리하지만 충분하지 않을 때가 있습니다. 즉, 항상 연결을 재활용하고 있는지 확인하십시오 (죽은 경우 제외)

mysql 연결 풀 때문에이 예외가 있습니까?

예외는 아니지만 덤프를 요청한 스택 추적입니다. 실제로 스레드 덤프에서 예외를 볼 수있는 방법은 없습니다 (예외적 인 경우를 제외하고는 매우 드문 경우 제외)

그렇다면 어떤 기능이 보유되고 있는지 어떻게 알 수 있습니까? 스레드?

이 스레드는 아무 관계가 없기 때문에이 상태에 있습니다. 어떤 일을해야하는 다른 스레드가 너무 오래 걸리기 때문에 가능성이 큽니다. 응용 프로그램을 막을 수있는 것을보기 위해 실행중인 스레드 나 코드에서 기다리는 스레드를 살펴 보는 것이 좋습니다.

+0

피터 나는 내 머리글 오류 "최대 null 수 (200) 커넥터에 대해 만든 주소 null 및 포트 8080"이야기입니다. – vikas27

+0

@vikasTheJavaDeveloper이 예외를보고 한 코드 부분을 나타내는 스택 추적을 가지고 있습니까? Java에는 많은 메시지가 없습니다. –

+0

@vikasTheJavaDeveloper 내 대답을 업데이트했습니다. –