[Coherence] OOM(Out Of Memory) 방지 방안
Products/Coherence View Comments
Coherence는 데이타 저장공간으로 기본, 권장으로 Java Heap 메모리를 사용한다.
그렇다면 당연 발생할 수 있는 장애 중 하나는 OOM이다. 근본적으로는 효율적인 구조 및 데이타 사이징을 잘 하여 OOM 발생을 막아야 하겠지만, 예측 못 한 케이스를 위해 OOM을 예방하는 구조를 가져가 보도록 하자.
OOM이 발생한다면 어떤 장애를 유발할 수 있을까?
- 예상 장애패턴 1
Cache Server들의 연쇄적인 OOM 발생
~ Cache Server #1에 OOM 발생
~ #1이 비정상 상태에 빠지며, 나머지 Cache Server #2~#N 까지 저장 데이타에 대한 구성을 새로함.
~ #1의 데이타 백업 데이타를 가지고 있던 #2는 해당 데이타를 분산하여 각 멤버에 저장
~ #N의 데이타를 #1이 백업하고 있었는데, 해당 백업 역할을 #2가 맡음.
~ 각각의 Cache Server 데이타 저장공간이 #1이 빠진만큼 더 필요함.
~ 백업도 마찬가지로 #1이 빠진만큼 더 필요함.
~ 이 과정에서 각 멤버의 데이타 저장공간이 여유롭지 않은 상황이었다면 연쇄적인 OOM 발생
- 예상 장애패턴 2
멤버간의 통신 장애 유발
~ #1이 OOM 발생 이후 비정상 상태임에도 불구하고 프로세스가 다운되지 않고, 지속적으로 멤버들간의 통신에 끼어듬.
~ 정상적인 멤버들까지 비정상 상태에 빠질 수 있음.
그렇다면, 다음과 같이 두가지 측면을 고려해서 OOM을 예방하자.
- Coherence 구성
Cache에 저장될 Max Data 건수, Max Data Size 추가 설정
~ Max Data 건수 설정 예
데이타를 1000건까지 저장할 수 있으며 추가 데이타 저장 요청시 750건으로 정리한다.
데이타 정리는 LUR 알고리즘에 따른다.
....
<eviction-policy>LRU</eviction-policy>
<high-units>1000</high-units>
<low-units>750</low-units>
<unit-calculator>FIXED</unit-calculator>
....
~ Max Data Size 설정 예
데이타를 100M 까지 저장할 수 있으며 추가 데이타 저장 요청시 70M로 정리한다.
데이타 정리는 LUR 알고리즘에 따른다.
....
<eviction-policy>LRU</eviction-policy>
<high-units>100M</high-units>
<low-units>70M</low-units>
<unit-calculator>BINARY</unit-calculator>
....
- Application 구성
실제 데이타를 저장하는 위치는 Application이다.
Application에서 다음과 같은 1차적인 고려를 하자.
~ Max 건수, Size이상의 데이타는 Coherence가 아닌 DB에 직접 Access처리
참고 문서
- Cache 설정
http://docs.oracle.com/cd/E24290_01/coh.371/e22837/cache_config.htm
- Max Data Size 샘플 캐시 설정 파일
첨부파일
HeapSizeLimited-cache-config.xml
'Products > Coherence' 카테고리의 다른 글
[Coherence] 데이타 사이징 (0) | 2012.04.07 |
---|
Recent Comments