Javax Activation Bug에 의한 WAS Hang 현상 - WAS Troubleshooting 사례(2)
백엔드
Javax Activation Bug에 의한 WAS Hang 현상 - WAS Troubleshooting 사례(2)
두줄요약
WebLogic Hang-up 원인을 GC log, Heap dump, Thread dump로 추적해 `javax.activation` 구버전과 쓰레드 누적 문제를 확인했습니다. 최신 jar를 우선 로딩하도록 바꾼 뒤 일부 서버에서 메모리 누수와 장애가 개선되었습니다.
문제 상황
- WebLogic 16대 클러스터가 1~2일마다 Hang-up에 빠지며 서비스 장애 반복
- 재기동 외에 원인을 못 찾아 서비스 안정성 저하
원인 분석
- GC log와 Heap dump에서 OutOfMemoryError와 점진적 Heap 감소 패턴 확인
- Heap의 상당 부분을 WebLogic 내부 모듈과 다수의
java.lang.Thread객체가 점유 - Thread dump에서
DataHandler.getInputStream관련 쓰레드가 7천여 개 누적 javax.activation구버전 1.1.0 사용과 비정상 종료되지 않는 Zombi Thread 의심
해결 방법
- 최신
javax.activation1.4.5 jar를PRE CLASSPATH로 지정해 우선 로딩 - 일부 운영 서버에만 적용해 메모리 누수 및 Hang-up 개선 여부 비교 검증
성능/운영 포인트
- GC log, Heap dump, Thread dump의 조합으로 JVM 장애 원인 추적
- 구버전 라이브러리 상존 여부 점검과 운영 환경 단계적 적용의 중요성
- 개선 후 메모리 누수와 재기동 없이 안정 동작 확인
