본문 바로가기

WAS/WebLogic

[weblogic] IBM JAVA - LOA(Large Object Area) 사이즈 지정하기

Heap Memory 4GB로 운영중인 서버이다.

전체 Heap Memory 중 Nursery 영역에 할당된 Memory는 약 1GB.

Nursery 영역에 할당할 Memory가 부족하여 Minor GC가 끊임없이 수행 중인 상태

 

아래 이미지에서

Needed 항목은 사용자 request를 처리하기 위해 필요한 Memory 용량이다. (KB단위)

해당 request를 처리하기 위한 Memory를 배정해야 하는데,

Free Nursery Memory 용량이 0 인 상태이다.

해당 시점 이전부터 대용량 request가 끊임없이 들어오고 있었기 때문.

 

Free Nursery Memory 용량을 확보하기 위해

Minor GC가 끊임없이 수행 중이다.

 

 


 

Oracle JAVA라면 Young 영역 사이즈를 늘이는 것으로 세부적인 튜닝이 가능하지만

IBM JAVA는 Young과 Old 영역 구분이 없음.

 

IBM JAVA에서는

대용량 request를 Heap Memory 영역 내에서 Large Object Area 라는 곳으로 보낸다.

Large Object Area 사이즈를 증설해야 할 필요가 있음

 


 

-Xloa
이 옵션을 사용하면 대형 오브젝트 영역(LOA)를 사용할 수 있습니다.

-Xloainitial
LOA(Large Object Area)에 할당된 현재 보유 공간의 초기 백분율(0 - 0.95)을 지정합니다.

-Xloamaximum
LOA(Large Object Area)에 할당된 현재 보유 공간의 최대 백분율(0 - 0.95)을 지정합니다.

-Xloaminimum
LOA(Large Object Area)에 할당된 현재 보유 공간의 최소 백분율(0 - 0.95)을 지정합니다.

 


 

-Xloainitial0.25 -Xloamaximum0.5 -Xloaminimum0.25

해당 고객사의 WebLogic 상황을 고려하였을 시

최소 사이즈는 전체 Heap Size의 25%

최대 사이즈는 전체 Heap Size의 50% 로 세팅하면 적당할 듯

 

예시

#heap memory options
JAVA_OPTIONS="${JAVA_OPTIONS} -Xms1024m -Xmx1024m -XX:PermSize=256M -XX:MaxPermSize=256M -Xloa -Xloainitial0.25 -Xloamaximum0.5 -Xloaminimum0.25"