properties¶
/usr/local/m2/setting.json
다음 영역에 대해 기술한다.
{
"env": {
"properties": {
...
}
}
}
memoryUsage¶
"memoryUsage": {
"totalUsableRatio": 100,
"workingRatio": 60,
"partition": "1:1"
},
totalUsableRatio (기본: 100%)
전체 시스템 메모리를 기준으로 M2 가용 메모리 비율
workingRatio (기본: 60%)
totalUsableRatio
가 반영된 메모리 중 M2가 사용할 메모리 비율Note
기본으로 40%는 OS가 성능을 낼 수 있도록 사용하지 않는다.
partition (기본: 1:1)
M2 가용메모리 중 내부 컴포넌트
RT : Core
의 메모리 사용 분배정책
process¶
프로세스 역할별 개수와 메모리 가용량을 설정한다.
"process": {
"core": {
"memory": "auto",
"concurrent": 0,
"respawnable": 1,
"keepalive": {
"maxcount": 0,
"maxage": "0s",
"timewait": "1m"
}
},
"transcoder": {
"memory": "auto",
"concurrent": 2,
"respawnable": 1,
"keepalive": {
"maxage": "0s",
"timewait": "1m"
}
},
"render": {
"memory": "auto",
"concurrent": 4,
"respawnable": 1,
"keepalive": {
"maxcount": 1000,
"maxage": "1h",
"timewait": "1m",
}
},
"hyperdims": {
"memory": "3G",
"concurrent": 0,
"keepalive": {
"maxcount": 0,
"maxage": "24h",
"timewait": "60s"
}
},
"rt": {
"memory": "auto",
"respawnable": {
"scheduled": "03:00-04:00",
"recovery": 0,
"clearCoredump": false
}
}
}
memory
할당된 최대메모리.
"auto"
는 프로세스별로 잔여 메모리 또는 코어 수에 따라 자동으로 결정된다."120%"
는auto
기준 비율로 결정된다."1024m"
등 구체적인 숫자가 지정되면 해당 메모리를 넘지 않도록 프로세스 개수가 조정된다.
Note
auto
설정 시 각 프로세스 별로 다음과 같이 메모리 설정을 가진다.
프로세스
메모리 설정
core
memoryUsage 을 통해 할당된 core 메모리로 설정한다.
transcoder
M2 가용 메모리를 제외한 여유 메모리를 기준으로 결정한다.
여유 메모리
3GB
이상일 때2GB
, 이하일 때1GB
로 설정한다.
render
M2 가용 메모리를 제외한 여유 메모리를 기준으로 결정한다.
여유 메모리
3GB
이상 시1GB
, 이하 시500MB
로 설정한다.
hyperdims
다음과 같은 계산식을 통해 메모리 가용량을 결정한다.
core 가용 메모리
-core 사용 메모리(core메모리 X core 수)
+hyperdims 기본 메모리(전체 메모리 / 6)
concurrent
최대 실행 가능한 동일 프로세스 개수.
0
이라면 메모리 크기에 맞추어 자동 조정된다. 최대 CPU 개수를 넘을 수 없다.
respawnable
동시 재가동되는 최대 개수. 급작스럽게 많은 프로스세가 동시에
respawnable
될 경우 성능저하 및 메모리 점유율 상승으로 이어질 수 있다.Note
rt.respawnable
은 다른 동작체계와 설정을 제공한다. cluster 를 통해 무중단 서비스 구성이 가능하다.rt.memory
설정에 의한 무중단 서비스 재가동은 cluster 활성화시에만 동작한다.rt.memory (기본: auto)
설정이auto
라면 메모리 사용량에 따른 재가동을 수행하지 않는다.rt.memory
설정이 지정되어 있다면 초과시rt.respawnable.scheduled (기본: 03:00 - 04:00)
시간 안에 1회 재가동한다.rt
의 비정상 종료 상황시rt.respawnable.recovery (기본: 0)
회 재가동한다.rt.respawnable.clearCoredump (기본: false)
가true
라면 비정상 종료로 생성된 coredump 파일을 삭제한다.
keepalive
프로세스 생존, 재가동 조건
maxcount
지정된 개수의 트랜잭션을 처리했다면 재가동한다. 0 이라면 제한하지 않는다.
maxage
프로세스 가동시간이 지정된 시간을 초과했다면 재가동한다. 0 이라면 제한하지 않는다.
timewait
진행 중인 트랜잭션이 없다면 즉시 재가동한다. 만약 있다면 지정된 최대 시간만큼 대기한다. 시간이 초고되면 강제로 재가동한다.
Warning
재가동되는 프로세스는 concurrent
개수에 포함되지 않는다.
즉 동형의 프로세스는 keepalive.timewait
시간동안 최대 concurrent + respawnable
개수만큼 유지될 수 있다.
inspection¶
{
"env": {
"properties": {
"inspection": {
...
}
}
}
}
process¶
"process": {
"enable": true,
"retention": 14,
"schedule":"5 * * * * *",
"dir": "log/process"
},
enable (기본: true)
프로세스 모니터링 기록 활성화
retention (기본: 14)
기록 유지 갯수
schedule (기본: 5 * * * * *)
기록 스케줄
dir (기본: log/process)
기록 경로