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 또는 gcs

chunkSize (기본: 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 사이 대기 후 재시도 한다.

  • backoff 1초대기 후 재시도한다. 재시도 시마다 2배씩 대기시간이 연장된다.

Note

멀티노드 동시성을 회피하기 위해 개별 노드는 0~100ms 사이의 임의의 랜덤 지터를 가진다.

retryMax (기본: 5회)

최대 재시도 횟수

properties

"properties": {
  "memoryRatioContents": 50,
  "cacheObjectSize": 900,
  "enableEmergencyMode": false,
  "enableSyncStale": true,
  "writeCountSmallFile": 0,
  "enableRrd": true
}
memoryRatioContents (기본: 50%)

RT가 사용하는 전체 메모리 중 콘텐츠 적재비율

cacheObjectSize (기본: 900bytes)

RT 캐싱객체당 메모리 크기

enableEmergencyMode (기본: false)

RT Emergency 모드 활성화

enableSyncStale (기본: true)

stale.log를 활성화하여 콘텐츠 Purge등을 선기록 후 비정상 종료 상황에도 반영한다.

writeCountSmallFile (기본: 0)

캐싱 객체의 초당 Write-Back 개수. 0인 경우 자동계산된다.

enableRrd (기본: true)

가상호스트별로 RRD 그래프를 제공한다. false 로 설정하면 기록하지 않는다.

purge

Purge계열 API 동작에 대해 설정한다.

{
  "env": {
    "rt": {
      "purge": {
        "mode": "sync"
      }
    }
  }
}
mode (기본: sync)

Purge계열 동작방식 설정

  • sync 동기로 동작한다.

  • async 비동기로 동작한다.

async

비동기 Purge 동작에 대해 설정한다.

"async": {
  "target": "pattern",
  "queueMax": "100000"
}
target (기본: pattern)

비동기 무효화로 구성된 상태라도, 요청된 URL에 따라 선별적으로 비동기 처리한다.

  • pattern 패턴요청에 대해서만 비동기 처리한다.

  • all 모든 요청을 비동기 처리한다.

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 중 매칭 아이템에 대해서만 반영한다.