매뉴얼웍스의 자바 힙 메모리 최적화

매뉴얼웍스는 자바로 만든 소프트웨어입니다. 성능 향상을 위해 자바 힙 메모리에 데이터를 캐싱하는데 데이터가 많아지면 java.lang.OutOfMemoryError 예외가 발생할 수 있습니다. 이를 예방하는 방법을 설명합니다.

자바 힙 메모리 사용량 확인하기

<관리 | 서버 관리 | 서버 속성> 메뉴의 <Java Heap Memories> 탭에서 현재의 자바 힙 메모리 사용량을 확인합니다. 또는 콘솔에서 다음 명령어로 확인할 수도 있습니다.

java-heap

GC(Garbage Collection)를 하려면 콘솔에서 다음 명령어를 실행합니다.

java-gc

<관리 | 서버 관리 | 모니터> 메뉴에서 일자별 자바 힙 메모리 사용량을 모니터링할 수도 있습니다.

java.lang.OutOfMemoryError 예외 발생

자바 힙 메모리가 부족하면 java.lang.OutOfMemoryError 예외가 발생합니다. 이 때는 매뉴얼웍스가 정상적으로 동작하지 않을 수 있습니다. 다음 방법으로 이 문제를 해결합니다.

자바 힙 메모리 크기 증가

설정한 자바 힙 메모리 크기가 절대적으로 작다면 다음 가이드를 참고해서 자바 힙 메모리 크기를 늘려줍니다.

자바 힙 메모리에 상주하는 캐시 데이터 제한하기

매뉴얼웍스 6.0.4 버전부터 지원합니다.

데이터 캐싱

매뉴얼웍스는 성능 향상을 위해 자바 힙 메모리에 많은 데이터를 저장합니다. 대표적으로 다음 데이터가 있습니다.

문서 차례(문서 데이터)

웹 뷰어 차례를 구성하거나 상호 참조 처리를 위해 부, 장, 제목1~5 단락 등의 문서 차례 데이터를 자바 힙 메모리에 캐싱합니다. 캐시 데이터 크기는 문서와 태그 숫자에 비례합니다.

장 내용(웹 캐시)

웹 뷰어에서 보는 장 내용을 자바 힙 메모리에 캐싱합니다. 캐시 데이터 크기는 장 숫자에 비례합니다.

캐시를 통해 성능 개선을 할 수 있지만 문서와 장이 많을 때 java.lang.OutOfMemoryError 예외가 발생할 가능성도 높아집니다. 따라서 캐시 크기를 제한하여 이를 예방해야 합니다.

문서 차례 캐시 사이즈 제한하기

콘솔에서 다음 명령어로 임계치를 설정합니다.

set-preference -name MAX_DOC_CACHE_SIZE -value 100

기본 임계치 값은 무제한으로 크기를 제한하지 않습니다.

임계치를 넘으면 오래 전에 사용된 데이터 순으로 자바 힙 메모리에서 삭제합니다. value 값은 주기적으로 자바 힙 메모리 상태를 모니터링해서 결정합니다.

장 내용 캐시 사이즈 제한하기

콘솔에서 다음 명령어로 임계치를 설정합니다.

set-preference -name MAX_WEB_CACHE_SIZE -value 1000

기본 임계치 값은 무제한으로 크기를 제한하지 않습니다.

임계치를 넘으면 오래 전에 사용된 데이터 순으로 자바 힙 메모리에서 삭제합니다. value 값은 주기적으로 자바 힙 메모리 상태를 모니터링해서 결정합니다.