2016-07-20 5 views
0

WebSphere 환경에 2 개의 노드 에이전트와 4 개의 응용 프로그램 서버가 있습니다. 트래픽이 많을 때 응용 프로그램 서버 중 하나가 요청에 대한 응답을 중지하고 최대 웹 컨테이너 스레드 수로 이동합니다.
스레드 덤프를 분석 할 때 스레드의 약 60 %가 실행 가능 상태이고 대기 및 주차 상태가 각각 20 % 인 것으로 나타났습니다.
스레드 덤프에 교착 상태 경고가 표시되지 않습니다.WebSphere 웹 컨테이너 스레드가 실행 가능한 최대 스레드 상태로 끊어졌습니다.

Owns Monitor Lock on com/ibm/ws/classloader/[email protected] 

누군가가 위의 오류와 그 해결의 이해에 도움이 될 수 : 에 밀접하게 우리가 웹 컨테이너 스레드 중 하나가 아래의 메시지와 함께 잠금을 소유 한 것으로 나타났습니다 보면?

+0

Websphere 로그에 오류가 있습니까? –

+0

ffdc 오류와 같은 더 많은 데이터를 제공 할 수 있습니까? –

+0

로그에서 데이터베이스 인스턴스의 문제 또는 확장 성 문제가 발생했습니다. 대량 트래픽으로 인해 데이터베이스 응답 시간이 증가하는 것을 볼 수 있는데 1 초에서 5 초 사이입니다. 즉각적인 해석은 천천히 그리고 결국 앱 서버를 최대 용량으로 가져가는 데이터베이스를 질식시키는 것이 었습니다. 우리는 데이터베이스의 끝에서 자원을 두 배로 늘 렸지만 문제는 여전히 지속됩니다. 이제 우리는 스레드 덤프 로그에서 위의 오류를 봅니다. –

답변

1

잠금을 소유 한 스레드의 스택 추적을보고 해당 잠금을 대기중인 다른 모든 스레드의 스택 추적을 살펴 보는 것이 중요합니다. ExtJarClassLoader의 경우, 모든 스레드가 loadClass 조작을 수행하려고 시도한다는 것을 거의 확실하게 의미합니다. 많은 스레드가이를 시도하고 차단되는 경우 일반적으로 실행중인 코드가 loadClass 작업에 실패하여 ClassNotFoundException을 catch하고 계속 시도하고 있음을 의미합니다. ClassNotFoundException을 생성하고 던지는 것은 비용이 많이 들기 때문에 일반적으로 전체 결과를 캐시하도록 코드를 수정해야합니다 (예 : 클래스로드 시퀀스를 시도하는 경우 긍정적/부정적인 결과가 어떻게 든 캐시되어야합니다). loadClass를 호출하는 코드가 타사 라이브러리 인 경우 물론 복잡합니다.

+0

추가 지원이 필요한 경우 모든 javacore 파일을 하나의 zip 파일로 압축하여 https://wait.ibm.com/으로 업로드하십시오. 스레드 덤프 및 응용 프로그램 병목 현상을보고합니다. –