이 페이지에서는 Memcached용 Memorystore를 사용할 때의 권장사항을 설명합니다.
캐시 부적중 처리를 위한 애플리케이션 설계
캐시 부적중 및 서비스 사용 불능 처리를 위해 캐시를 설계하여 캐시 설계 권장사항을 따라야 합니다. Memcached용 Memorystore의 업타임 약정에 대한 자세한 내용은 서비스수준계약을 참조하세요.
캐시 부적중 및 임시 서비스 다운타임으로 인해 Memcached 인스턴스에서 지원되는 기본 데이터베이스에서 애플리케이션의 데이터 검색이 중지되지 않도록 애플리케이션을 설계합니다.
또한 키스페이스 사용 불능 문제가 발생하면 잠시 기다린 후 지수 백오프 사용을 재시도합니다. 재시도 전략에는 시간 제한을 설정해야 합니다.
Memcached 노드에 연결
set
, get
, delete
와 같은 명령어로 Memcached 노드를 쿼리할 경우 노드의 IP 주소에 직접 연결해야 합니다. 이러한 명령어를 자동 검색 엔드포인트에서 실행할 수 있지만 이로 인해 애플리케이션 성능이 저하되므로 실행하지 않는 것이 좋습니다.
자동 검색 권장
Memcached용 Memorystore 자동 검색 서비스를 사용하는 것이 좋습니다. 이 서비스는 클러스터에서 노드를 추가하거나 삭제할 때 클러스터 IP 주소 관리를 자동화합니다. 클러스터에 자동 검색을 설정하는 방법에 대한 안내는 자동 검색 서비스 사용을 참조하세요.
올바른 max-item-size
매개변수 구성
이 섹션에서는 max-item-size
매개변수를 구성하는 최고의 방법을 설명합니다. 이 구성 매개변수를 조정하는 단계는 Memcache 인스턴스 구성을 참조하세요.
사용 가능한 Memcached 구성 매개변수의 전체 목록은 Memcached 구성을 참조하세요.
지원되는 값 및 기본값
오픈소스 Memcached의 경우 max-item-size
의 최솟값은 1KiB
이고, 최댓값은 1 GiB
, 기본값은 1 MiB
입니다. Memcached용 Memorystore의 경우 최솟값은 512 KiB
이고, 최댓값은 128
MiB
, 기본값은 1 MiB
입니다. 또한 이 구성을 설정하는 모든 값을 512 KiB
로 균일하게 나눌 수 있어야 합니다.
구성된 max-item-size
보다 큰 항목 캐싱
구성된 max-item-size
보다 큰 항목을 캐시하려고 시도하면 Memcached에서 작업이 실패하고 false가 반환됩니다. 오류를 디버깅할 수 있도록 가능한 경우 Memcached OSS 클라이언트에서 이 오류가 나타나도록 애플리케이션에 로직을 만듭니다. 구성된 max-item-size
보다 큰 항목을 캐시하려고 시도하면 인스턴스에 높은 지연 시간이 발생할 수 있습니다.
max-item-size
를 최댓값으로 설정
max-item-size
매개변수를 최댓값으로 설정하면 일부 문제가 해결될 수 있습니다. 하지만 이는 좋은 방법이 아니므로 프로덕션에서 이 전략을 사용해서는 안 됩니다. Memcached 메모리 관리는 slab을 기반으로 합니다. slab보다 큰 항목을 저장하면 비효율적인 메모리 할당이 발생합니다.
max-item-size
구성 문제 방지
먼저 캐시에 필요한 최대 항목 크기를 확인해야 합니다. max-item-size
를 가장 큰 항목 크기보다 약간 더 크게 안전 여백으로 설정합니다.
애플리케이션에서 캐시에 작성된 값의 크기는 시간이 지남에 따라 변경될 수 있습니다. 또한 클러스터가 잘못 구성될 수도 있습니다(예: 한 환경에서 다른 환경으로 마이그레이션하는 경우). 수행할 수 있는 추가 조치는 애플리케이션에서 최대 항목 크기를 검증하여 애플리케이션이 구성된 설정보다 큰 항목을 캐시하려고 할 때 요청이 거부되도록 하는 것입니다.
불균형 Memcached 클러스터의 균형을 맞추는 방법
불균형 클러스터의 발생 및 관련 위험
드물지만 Memcached를 만들 때 인스턴스 노드가 한 리전의 영역에 균일하지 않게 배포될 수 있습니다. 이러한 문제는 클러스터를 프로비저닝하는 동시에 영역을 사용할 수 없을 때 발생합니다.
불균형 클러스터는 노드가 고르게 분산되지 않기 때문에 데이터 손실 가능성을 높입니다. 작동 중지된 영역이 다시 온라인으로 전환될 때 클러스터는 자동으로 재조정되지 않습니다.
클러스터를 재조정하는 방법
클러스터의 노드 수를 일시적으로 늘린 후 노드 수를 원래 노드 수로 줄이는 방식으로 클러스터를 재조정할 수 있습니다. 이러한 확장 및 축소 작업을 통해 Memcached용 Memorystore 시스템이 사용 가능한 영역에 노드를 균등하게 재배포할 수 있습니다.
클러스터 재조정을 위한 이 방법의 성공 여부는 문제의 영역을 사용할 수 있는지에 따라 달라집니다. Google Cloud에는 현재 사용 가능한/사용 불가능한 영역이 나열되지 않으므로, 노드가 온라인으로 전환되었을 때 확장 작업 중 노드 균형이 올바르게 조정되었는지 확인해야 합니다.
Cloud Monitoring 권장사항
시간별 캐시 성능 추적을 위해서는 Cloud Monitoring을 사용하여 몇 가지 필수적인 Memcached용 Memorystore 측정항목을 모니터링해야 합니다.
- 메모리 사용량(
memcache.googleapis.com/node/cache_memory
) - CPU 사용량 백분율(
memcache.googleapis.com/node/cpu/utilization
)
이러한 두 측정항목을 시간별로 추적하면 클러스터 사용 효율을 확인하고, 클러스터 크기를 늘리거나 줄일지 여부를 결정할 수 있습니다.
예를 들어 시간이 지나 메모리 사용량 및 CPU 사용량이 80% 이상으로 증가하면 이러한 추세가 계속될 가능성이 높습니다. 따라서 애플리케이션의 리소스 요구사항이 증가함에 따라 캐시에 새 값을 저장할 공간이 확보될 수 있도록 조기에 인스턴스 크기를 늘릴 수 있습니다.
메모리 사용량과 CPU 사용량이 80%에 도달할 때를 위해 알람을 설정하는 것이 좋습니다.
또는 이러한 측정항목을 시간별로 추적함으로써 현재 가진 공간 및 CPU 리소스가 모두 사용되고 있지 않은 것으로 확인될 수 있습니다. 이 경우에는 클러스터 크기를 줄이는 것이 비용 효율적일 수 있습니다.
다음 단계
- 자동 검색 서비스 자세히 알아보기
- 수정 가능한 Memcached 구성 매개변수 검토