메모리 제한 기능 설정

본 장에서는 ProObject 메모리 제한 기능의 기본적인 사용방법에 대해서 설명한다.

1. 개요

사용자가 서비스 로직을 잘못 작성하면 메모리를 많이 차지하여 성능 저하가 일어날 수 있다.

ProObject는 메모리 제한 기능을 통해 서비스 메모리 한계를 설정하여 제한 메모리를 넘으면 메모리 위험성이 있다는 것을 런타임 엔진에서 사용자에게 exception으로 알려줌으로써 메모리 OOM(Out of Memory) 방지 및 안정적인 서비스 수행을 처리한다.

ProObject의 애플리케이션에 속한 서비스 그룹에서 서비스 수행 중 서비스와 라이프 사이클(Life-cycle)이 같은 입출력 데이터 맵과 컬렉션 객체 대해 메모리 계산을 해주어 제한 메모리를 넘는지 검사한 후 제한 메모리 이상 올라가면 오류를 낸다.

메모리 제한 기능을 이용하기 위해서 Project를 AOP 프로젝트로 바꾸어 컴파일 해야 한다. Application collection size 제한 기능은 aj 파일이 런타임 내에 있기 때문에 config만 설정해주면 되나 서비스그룹별 객체 제한 기능은 사용자가 직접 aj 파일을 작성해주어야 한다.

메모리 제한 기능을 사용하기 위해서 애플리케이션 설정을 해야 한다. 방법은 다음 절의 설명을 참고한다.

AOP 기능에 대한 자세한 내용은 ProObject Studio 개발자 안내서의 AOP 개발 방법을 참고한다.

2. 애플리케이션 환경설정

애플리케이션의 메모리 제한 기능은 다음의 파일에 설정한다.

${APP_HOME}/config/application.properties

다음은 application.properties의 설정항목에 대한 설명이다. 현재 애플리케이션의 Map, Set, List의 최대 사이즈를 제한할 수 있다.

APPLICATION_MAP_N_COLLECTION_LIMIT_ENABLE =[true|false]
APPLICATION_MAP_N_COLLECTION_LENGTH_LIMIT=limit_length
항목 설명

APPLICATION_MAP_N_COLLECTION_LIMIT_ENABLE

현재 노드에서 맵과 컬렉션 단위 메모리 제한 기능을 활성화할지 여부를 설정한다.

  • true : 맵과 컬렉션 단위 메모리 제한 기능이 활성화된다. 맵과 컬렉션 단위의 메모리 제한 기능의 활성화를 위해서 반드시 설정해야 한다.

  • false : 맵과 컬렉션 단위 메모리 제한 기능이 비활성화된다. (기본값)

APPLICATION_MAP_N_COLLECTION_LENGTH_LIMIT

현재 노드에서 맵과 컬렉션 최대 길이 한계를 설정한다.

(기본값: 2048, 단위: 갯수)

다음은 맵과 컬렉션 단위의 메모리 제한 기능의 활성화하는 예이다.

APPLICATION_MAP_N_COLLECTION_LIMIT_ENABLE =true