매뉴얼웍스는 자바로 만든 소프트웨어입니다. 성능 향상을 위해 자바 힙 메모리에 데이터를 캐싱하는데 데이터가 많아지면 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
값은 주기적으로 자바 힙 메모리 상태를 모니터링해서 결정합니다.