'Products/Coherence'에 해당되는 글 2건

  1. 2012.04.07 [Coherence] OOM(Out Of Memory) 방지 방안
  2. 2012.04.07 [Coherence] 데이타 사이징

[Coherence] OOM(Out Of Memory) 방지 방안

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

Comments (+add yours?)

Tracbacks (+view to the desc.)

[Coherence] 데이타 사이징

View Comments

데이타를 Coherence에 저장하려 한다면 Coherence에는 최소 얼마만큼의 데이타 공간이 필요할까?

- 간단 공식
   필요한 저장공간 = ( 데이타 저장공간 ) * 2 ( 백업 개수에 따라 달라짐) + Coherence 작업 공간 ( 대략 300M )
 
- 예를 들어 100M의 데이타를 저장해야 한다면?
   필요한 저장공간 =  100M * 2 + 300M = 500M
 

거꾸로 보자. 1G Heap Memory 설정을 한 Cache Server에는 얼마의 데이타를 Heap Memory에 저장할수 있을까?

- 대략 1/3로 보면 된다.
    1/3 = 데이타 공간
    1/3 = 백업 데이타 공간
    1/3 = 작업 공간


데이타 공간에 대해서는 아래 사항에 대해 추가적으로 고려하여아 한다.
- Java Object가 저장될때 Object 유형에 따른 추가적인 데이타 저장공간
- 사용하는 serialization에 따른 추가적인 데이타 저장공간


그렇다면 정확한 데이타 사이징을 가장 쉽게 할 수 있는 방법은?

- 저장할 데이타를 실제로 Cache에 저장 한 후, JMX Monitoring을 이용하여 데이타 사이즈를 구하는 방법이 가장 쉽다.
- 이때 Cache설정 파일의 unit은 BINARY로 설정되어 있어야 데이타 사이즈를 볼수 있다.
- 기본값인 FIXED로 설정되어 있다면 데이타 건수만 볼수 있다.


참고 문서
- Coherence *Web 데이타 사이징
 http://docs.oracle.com/cd/E24290_01/coh.371/e22620/appcapacity.htm

- Coherence DataGrid 데이타 사이징
 첨부파일 참조

oracle-coherence-planning-wp-1-133787.pdf

'Products > Coherence' 카테고리의 다른 글

[Coherence] OOM(Out Of Memory) 방지 방안  (0) 2012.04.07

Comments (+add yours?)

Tracbacks (+view to the desc.)

Newer Entries Older Entries