rt¶
/usr/local/m2/setting.json 다음 영역에 대해 기술한다.
{
"env": {
"rt": {
...
}
}
}
localCacheStorage¶
{
"env": {
"rt": {
"localCacheStorage": {
...
}
}
}
}
meta¶
"meta": {
"diskFailSec": 60,
"diskFailCount": 10,
"onCrash": "hang"
}
diskFailSec (기본: 60초)디스크 실패 누적시간
diskFailCount (기본: 10회)디스크 실패 누적 시간동안
diskFailCount만큼 실패하면 디스크를 배제한다.onCrash (기본: hang)모든 디스크 장애시 동작모드.
hang,bypass,selfkill중 택 1
disks¶
"disks": [
{
"mount": "/user/cache1"
},
{
"mount": "/user/cache3",
"quota": 100,
"quotaUnit": "size",
"cleanupSize": 0
}
]
mount마운트 경로
quota디스크당 최대 사용량
quotaUnit디스크당 사용량 단위.
size (단위: GB)또는ratio (범위: 1~100%)cleanupSize (기본: 0, 단위: GB)디스크 공간부족시 정리용량. 값이
0보다 클 경우 동작한다.
cleanup¶
"cleanup": {
"time": "02:00",
"age": 0,
"emptyDir": "delete",
"fileCount": 0,
"defaultDiskCleanupSize": 0
}
time (기본: 02:00)rt 캐싱엔진 최적화 수행시간
age (기본: 0일)0보다 큰 경우, 일정 기간동안 한번도 접근되지 않은 콘텐츠를 삭제한다. 디스크를 미리 확보하여 서비스 시간 중 디스크 부족이 발생할 확률을 줄이기 위함이다.
emptyDir (기본: delete)Cleanup 시점에 비어있는 디렉토리 삭제여부.
delete인 경우 삭제,keep인 경우 미삭제.fileCount (기본: 0)디스크 정리 시점에 한번에 정리할 캐싱객체의 절대개수. 0인 경우 자동계산된다.
defaultDiskCleanupSize (기본: 0, 단위: GB)각 디스크당 공간부족시 정리용량. 값이
0보다 클 경우 동작한다.
remoteCacheStorage¶
AWS S3 인터페이스의 Object Storage를 사용하여 캐싱한다.
{
"env": {
"rt": {
"remoteCacheStorage": {
...
}
}
}
}
Note
백업대상은 RT의 다음 API로 제공된다.
/monitoring/backup?marker=...&chunksize=1000
meta¶
"meta": {
"enable": true,
"type": "oci",
"chunkSize": 1000
}
enable (기본: true)활성화 (동적 변경가능)
type (기본: oci)타입.
oci또는aws_s3또는gcschunkSize (기본: 1000)한번에 조회할 최대 크기(개수)
Hint
#server.xml - <Server><Cache> <BackupChunkSize>1000</BackupChunkSize>
auth¶
"auth": {
"region": "ap-northeast-2",
"accessKey": "__my_access_key__",
"secretKey": "__my_secret_key__"
}
region리젼
accessKey액세스 키
secretKey시크릿 키
Note
bucket 은 가상호스트명과 같다.
upload¶
"upload": {
"concurrent": 8,
"priority": "size",
"filter": null
}
concurrent (기본: 8, 최대: 32)동시 업로드 개수
priority (size)업로드 우선순위
size (기본)파일 크기순asc백업대상에 지정된 순서.desc백업대상에 지정된 순서의 역순.
filter필터 ( ansible.builtin.find module – Return a list of files based on specific criteria 참고)
Hint
RT로부터 다운로드 받은
X-M2X-Cache-FileMeta헤더 값이 메타 데이터로 저장되어야 한다.개발 후 릴리스 시점에 정리한다. “최소 크기” 조건만 있어도 서비스에 문제가 없다.
multipart¶
"multipart": {
"enable": true,
"size": 100
}
enable (기본: true)멀티파트 업로드 활성화
size (기본: 100MB)멀티파트 업로드 최소 크기로
concurrent의 1/2 세션개수로 업로드한다.
download¶
"download": { }
Hint
메타 데이터를
X-M2X-Cache-FileMeta헤더로 RT에 응답해주어야한다.
throttling¶
Object Storage 가용량 한계( 429 Too Many Requests 응답등)상황이 발생할 경우 작업량 쓰로틀링 정책을 설정한다.
"throttling": {
"enable": true,
"policy": "retry",
"retryMax": 5
}
enable (기본: true)활성화. 비활성화(
false)시 에러로 처리하고 계속 진행한다.
policy (기본: true)
retry랜덤하게 0~100ms 사이 대기 후 재시도 한다.
backoff1초대기 후 재시도한다. 재시도 시마다 2배씩 대기시간이 연장된다.Note
멀티노드 동시성을 회피하기 위해 개별 노드는 0~100ms 사이의 임의의 랜덤 지터를 가진다.
retryMax (기본: 5회)최대 재시도 횟수
properties¶
"properties": {
"memoryRatioContents": 50,
"cacheObjectSize": 900,
"enableEmergencyMode": false,
"enableSyncStale": true,
"writeCountSmallFile": 300,
"enableRrd": true
}
memoryRatioContents (기본: 50%)RT가 사용하는 전체 메모리 중 콘텐츠 적재비율
cacheObjectSize (기본: 900bytes)RT 캐싱객체당 메모리 크기
enableEmergencyMode (기본: false)RT Emergency 모드 활성화
enableSyncStale (기본: true)stale.log를 활성화하여 콘텐츠 Purge등을 선기록 후 비정상 종료 상황에도 반영한다.
writeCountSmallFile (기본: 300)캐싱 객체의 초당 Write-Back 개수. 0인 경우 Write-Back하지 않고 즉시 I/O를 발생시킨다.
enableRrd (기본: true)가상호스트별로 RRD 그래프를 제공한다.
false로 설정하면 기록하지 않는다.
purge¶
Purge계열 API 동작에 대해 설정한다.
{
"env": {
"rt": {
"purge": {
"mode": "sync"
}
}
}
}
mode (기본: sync)Purge계열 동작방식 설정
sync동기로 동작한다.async비동기로 동작한다.
async¶
비동기 Purge 동작에 대해 설정한다.
"async": {
"target": "pattern",
"concurrent": 1,
"queueMax": "100000"
}
target (기본: pattern)비동기 무효화로 구성된 상태라도, 요청된 URL에 따라 선별적으로 비동기 처리한다.
pattern패턴요청에 대해서만 비동기 처리한다.all모든 요청을 비동기 처리한다.
concurrent (기본: 1)비동기 무효화 동시처리 수. 많이 설정할수록 서비스 Throughput이 저하될 수 있다. 최대 수행개수는
CPU 코어수 - 2이다.queueMax (기본: 100000)비동기 무효화 최대 저장개수
비동기로 동작하는 경우 무효화 요청은 큐에 저장되며 백그라운드로 수행된다.
Note
백그라운드 수행 이전이라도 접근되는 콘텐츠가 무효화 대상이라면 즉시 만료된다.
비동기 API를 호출했으나 동기로 처리되었다면
201 Created로 응답한다.
preCacheControl¶
비동기 Purge 관리 및 반영정책을 설정한다.
"preCacheControl": {
"enable": true,
"matchMax": 5000,
"matchFirstOnly": false
}
enable (기본: true)접근되는 콘텐츠에 대해 저장된 비동기 무효화를 매칭한다.
matchMax (기본: 5000)최대 매칭 개수
matchFirstOnly (기본: false)
false큐잉된 비동기 Purge 전체를 스캔한다.
true큐잉된 비동기 Purge 중 매칭 아이템에 대해서만 반영한다.