WebSphere Application Server(WAS) 운영 중 Out Of Memory(OOM) 에러 발생 시, 원인 분석을 위해 힙 덤프(HeapDump)와 자바 코어(JavaCore) 파일을 생성해야 합니다. 이를 위한 JVM Custom Properties 설정 방법과 생성 경로 변경, 그리고 AIX 환경에서의 필수 설정 사항을 정리합니다.
1. JVM Custom Properties 설정
WAS 관리 콘솔에서 JVM 인수에 직접 환경 변수를 설정하여 덤프 생성 여부와 경로를 제어할 수 있습니다.
설정 경로
Application servers > [Server Name] > Process definition > Java Virtual Machine > Custom properties
주요 속성 (Key & Value)
| Name | Value | Description |
|---|---|---|
| IBM_HEAPDUMP | true / false | 힙 덤프 생성 활성화 여부 |
| IBM_HEAPDUMP_OUTOFMEMORY | true / false | OOM 발생 시 힙 덤프 자동 생성 |
| IBM_JAVADUMP_OUTOFMEMORY | true / false | OOM 발생 시 자바 코어(Thread Dump) 자동 생성 |
| IBM_JAVA_HEAPDUMP_TEXT | true / false | 힙 덤프를 텍스트 형식으로 생성 (phd 대신) |
| JAVA_DUMP_OPTS | ONANYSIGNAL(JAVADUMP[5],HEAPDUMP[5]) | 시그널 발생 시 덤프 생성 옵션 제어 |
2. 덤프 생성 위치 변경 (Dump Path)
기본 생성 위치는 WAS 버전에 따라 다르며, 디스크 공간 부족 등의 이유로 별도 경로로 변경할 수 있습니다.
기본 생성 위치 (Default Path)
- WAS V6.0 ~ V7.0:
[Profile_Root]/logs/[Server_Name] - WAS V5.1:
[Install_Root]/logs/[Server_Name]
경로 변경 설정
위와 동일한 Custom properties 메뉴에서 아래 속성을 추가합니다.
# AIX / Linux 예시 (/waslog 디렉토리로 변경)
IBM_COREDIR /waslog
IBM_HEAPDUMPDIR /waslog
IBM_JAVACOREDIR /waslog
# Windows 예시 (D:\waslogs 디렉토리로 변경)
IBM_COREDIR D:\waslogs
IBM_HEAPDUMPDIR D:\waslogs
IBM_JAVACOREDIR D:\waslogs
3. AIX 환경 필수 설정 (Environment Setup)
AIX 환경에서는 OOM 분석을 위해 OS 레벨의 사용자 제한(ulimit) 해제와 메모리 세그먼트 설정이 중요합니다.
1) 사용자 프로세스 제한 해제 (ulimit)
덤프 파일이 잘리지 않도록 파일 크기(fsize), 코어 크기(core), 데이터 세그먼트(data) 제한을 해제합니다. (root 권한 필요)
# 사용자(user_id)에 대해 제한 해제
chuser fsize=-1 data=-1 core=-1 stack=-1 [WAS_USER_ID]
# 적용 확인 (WAS 사용자 계정으로 로그인 후)
ulimit -a
2) 메모리 할당 방식 설정 (LDR_CNTRL)
Java Heap과 Native Heap을 분리하고 공간을 확보하기 위해 환경 변수를 설정합니다. MAXDATA 값은 Java Heap 크기(Xmx)에 따라 계산해야 합니다.
# 계산 공식: 8 - (Xmx(MB) / 256)
# 예: Xmx가 512MB인 경우 -> 8 - (512/256) = 6 -> 0x60000000
export IBM_JAVA_MMAP_JAVA_HEAP=true
export LDR_CNTRL=MAXDATA=0x60000000
3) GC 로그 활성화
메모리 누수 패턴 분석을 위해 GC 로그를 반드시 활성화해야 합니다. JVM Generic Arguments에 추가합니다.
-verbose:gc
표준 에러(stderr)가 파일로 리다이렉션 되도록 설정되어 있는지 확인하십시오. (native_stderr.log 등)
Next Step:
생성된 .phd 또는 .txt 형식의 힙 덤프 파일은 IBM HeapAnalyzer나 Eclipse Memory Analyzer (MAT) 도구를 사용하여 분석할 수 있습니다.