권장사항

이 페이지에서는 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 리소스가 모두 사용되고 있지 않은 것으로 확인될 수 있습니다. 이 경우에는 클러스터 크기를 줄이는 것이 비용 효율적일 수 있습니다.

다음 단계