이 페이지에서는 Memorystore for Valkey 사용과 관련된 다음 자주 묻는 질문 (FAQ)의 답변을 확인할 수 있습니다.
- 얼마나 많은 CPU와 메모리를 사용하는 것이 좋나요?
- 사용 중인 CPU 및 메모리 양을 어떻게 모니터링하나요?
- CPU 및 메모리 사용량을 모니터링하기 위해 알림을 설정하는 방법은 무엇인가요?
- 클라이언트 애플리케이션에서 열어 두는 것이 권장되는 연결 수는 몇 개인가요?
- 인스턴스의 클라이언트 연결 수를 어떻게 모니터링하나요?
- 클라이언트 연결이 너무 많은 경우 어떻게 해야 하나요?
- 비즈니스의 트래픽을 급증시킬 예정된 이벤트가 있다고 가정해 보겠습니다. 어떻게 해야 하나요?
- 데이터는 어떻게 보호되나요?
- 클라이언트 코드에 관한 권장사항은 무엇인가요?
- 데이터 복구 옵션에는 무엇이 있나요?
- 인스턴스의 성능을 최대한 높이려면 어떻게 해야 하나요?
- 인스턴스의 고가용성을 최적화하려면 어떻게 해야 하나요?
얼마나 많은 메모리와 CPU를 사용하는 것이 좋나요?
메모리 사용량이 80%를 초과하지 않는 것이 좋습니다. 평균 CPU 사용률을 60%로 실행하는 것도 좋습니다. 따라서 전체 용량의 약 1/3인 단일 가용성 영역의 손실을 허용할 수 있습니다. 이 시나리오에서 나머지 노드의 평균 CPU 사용률은 약 90%입니다.
사용 중인 CPU 및 메모리 양을 어떻게 모니터링하나요?
기본 Memorystore for Valkey 노드와 읽기 복제본의 CPU 사용량을 모니터링하려면 /instance/cpu/maximum_utilization
측정항목을 사용하세요. 이 측정항목은 인스턴스의 모든 노드에 대한 최대 CPU 사용률을 0.0 (0%)~1.0 (100%)으로 측정합니다. 자세한 내용은 CPU 사용량 권장사항을 참고하세요.
기본 Memorystore for Valkey 노드와 읽기 복제본이 사용하는 메모리를 모니터링하려면 /instance/node/memory/utilization
측정항목을 사용하세요. 이 측정항목은 인스턴스의 단일 노드에 대한 메모리 사용률을 0.0 (0%)~1.0 (100%)으로 측정합니다.
CPU 및 메모리 사용량을 모니터링하기 위해 알림을 설정하는 방법은 무엇인가요?
CPU 및 메모리 사용량에 대한 모니터링 알림을 설정하려면 Cloud Monitoring을 사용하세요. 예를 들어 /instance/memory/maximum_utilization
측정항목이 설정한 기준을 초과하면 알리도록 알림을 설정할 수 있습니다. 자세한 내용은 메모리 사용량에 대한 모니터링 알림 설정을 참고하세요.
클라이언트 애플리케이션에서 열어 두는 것이 권장되는 연결 수는 몇 개인가요?
클라이언트의 벤치마크를 사용하여 최적의 설정을 결정하는 것이 좋습니다. 각 클라이언트에서 권장되는 시작점은 Valkey 노드당 하나의 연결입니다. 자세한 내용은 Valkey에서 연결 과부하 방지를 참고하세요.
클라이언트가 더 많은 요청을 더 빠르게 처리할 수 있도록 클라이언트의 파이프라인을 사용 설정하는 것도 좋습니다.
인스턴스의 클라이언트 연결 수를 어떻게 모니터링하나요?
사용하는 클라이언트 연결 수를 모니터링하려면 /instance/node/clients/connected_clients
측정항목을 사용합니다. 이 측정항목은 인스턴스의 각 노드에 연결된 클라이언트 수를 측정합니다.
클라이언트 연결이 너무 많은 경우 어떻게 해야 하나요?
/instance/clients/maximum_connected_clients
측정항목을 사용하여 확인할 수 있는 클라이언트 연결의 최대 수는 maxclients
매개변수와 연결된 값보다 작아야 합니다. 값이 동일한 경우 다음을 실행합니다.
client kill
명령어를 사용하여 누수되거나 불필요한 연결을 중지합니다.- 인스턴스의 노드 유형을 확인합니다. 노드 유형의 최대 클라이언트 수가 Memorystore for Valkey에서 노드 유형에 지원하는 최대 값과 동일한 경우 클라이언트의 연결 풀 크기를 변경하거나 더 큰 노드 유형을 사용하세요. 자세한 내용은 Valkey에서 연결 과부하 방지를 참고하세요.
비즈니스 트래픽이 급증할 예정된 이벤트가 있나요? 어떻게 하실 건가요?
비즈니스 요구사항에 맞게 Memorystore for Valkey를 구성할 수 있습니다. 이 시나리오에서는 다음과 같은 방법으로 인스턴스의 용량을 늘릴 수 있습니다.
- 인스턴스에 샤드를 추가할 수 있습니다. 이렇게 하면 인스턴스에서 더 많은 CPU 사용량을 사용하여 더 많은 데이터 또는 트래픽을 처리할 수 있습니다. 인스턴스의 용량은 인스턴스의 샤드 수에 따라 결정됩니다. 샤드를 추가하면 애플리케이션이 성능 저하 없이 증가한 수요를 처리할 수 있습니다.
- 노드 유형을 더 큰 노드 유형으로 변경할 수 있습니다. 이렇게 하면 인스턴스에 더 많은 메모리가 제공됩니다. 인스턴스의 용량은 인스턴스의 노드 유형에 따라 결정됩니다. 예를 들어 노드 유형을
standard-small
노드 유형에서highmem-medium
노드 유형으로 변경할 수 있습니다.
이벤트가 시작되기 며칠 전에 인스턴스의 용량을 늘리는 것이 좋습니다. 또한 인스턴스의 용량을 확장하고 인스턴스 확장 속도와 안정성을 높이려면 트래픽이 적은 기간에 인스턴스를 확장하세요. 인스턴스 트래픽을 모니터링하는 방법은 인스턴스 모니터링을 참고하세요.
데이터는 어떻게 보호되나요?
데이터를 보호하기 위해 Memorystore for Valkey는 다음과 같은 메커니즘을 제공합니다.
- Identity and Access Management (IAM) 인증: IAM을 사용하여 사용자 및 서비스 계정의 로그인 액세스를 관리합니다. IAM 기반 인증은 Valkey AUTH와 통합되어 정적 비밀번호를 사용하지 않고도 사용자 인증 정보 (IAM 토큰)를 원활하게 순환할 수 있습니다.
- 전송 중 암호화: 전송 계층 보안 (TLS) 프로토콜을 사용하여 모든 Valkey 트래픽을 암호화합니다. 전송 중인 데이터 암호화가 사용 설정되면 Valkey 클라이언트는 안전하게 연결을 통해 통신합니다. TLS에 구성되지 않은 Valkey 클라이언트는 차단됩니다.
클라이언트 코드에 관한 권장사항은 무엇인가요?
Memorystore for Valkey에서 클라이언트 코드를 최적으로 사용하려면 다음 권장사항을 따르는 것이 좋습니다.
애플리케이션을 Memorystore for Valkey 클러스터 모드 사용 설정 인스턴스에 연결하려면 valkey-go, iovalkey, valkey-py, Valkey GLIDE와 같은 권장 클라이언트를 사용하세요.
다른 클라이언트를 사용하는 경우 인스턴스에서 해시 슬롯의 맵을 해당 노드로 유지하는 클러스터 인식 Valkey 클라이언트를 사용해야 합니다. 따라서 요청을 올바른 노드로 보낼 수 있습니다. 이렇게 하면 리디렉션으로 인한 성능 오버헤드가 방지됩니다. 자세한 내용은 Valkey 클라이언트 권장사항을 참고하세요.
연결 제한 시간 간격을 5초로, 요청 제한 시간 간격을 10초로 설정하는 것이 좋습니다. 시간 제한을 더 작은 간격으로 설정하면 Memorystore for Valkey에서 재연결 폭풍이 발생하여 서비스가 위험해질 수 있습니다.
클라이언트가 요청 간 지연을 늘려 실패한 요청을 주기적으로 재시도할 때 지수 백오프를 네트워크 애플리케이션의 표준 오류 처리 전략으로 사용합니다.
클라이언트 라이브러리 코드 샘플을 사용합니다. 예를 들어 valkey-go 클라이언트의 기본값은 모든 권장사항을 충족하므로 이 클라이언트에 대해 아무것도 구성하지 않아도 됩니다.
데이터 복원력 옵션에는 무엇이 있나요?
Memorystore for Valkey는 데이터 복원력을 위해 다음과 같은 기능을 제공합니다.
고가용성: Memorystore for Valkey는 복제본 노드에 중복 용량을 제공합니다. 장애가 발생하면 Memorystore for Valkey는 이 용량을 사용하여 다운타임 없이 작동할 수 있습니다.
지속성: 환경이 예기치 않게 비정상 종료되면 Memorystore for Valkey가 환경을 자동으로 복원합니다. 이를 지속성이라고 합니다.
Memorystore for Valkey는 다음과 같은 유형의 지속성을 제공합니다.
Redis 데이터베이스 (RDB) 지속성: 내구성 있는 스토리지에 데이터 스냅샷을 저장하여 데이터를 보호합니다. 스냅샷 간격을 선택하여 스냅샷의 빈도를 선택합니다. 노드 장애가 발생하면 장애 조치가 가능하지 않은 경우에도 데이터를 복구할 수 있습니다.
추가 전용 파일 (AOF) 지속성: 데이터 내구성을 우선시하려는 경우 이 지속성 유형을 사용합니다. AOF 지속성은 모든 쓰기 명령어를 AOF 파일이라는 로그 파일에 기록하여 데이터를 내구성 있게 저장합니다. 시스템 장애나 재시작이 발생하면 서버가 AOF 파일 명령어를 순차적으로 재생하여 데이터를 복원합니다.
백업: Memorystore for Valkey 인스턴스를 특정 시점으로 수동으로 복원합니다. 또한 백업을 사용하여 데이터를 내보내고 분석할 수 있습니다.
백업은 다음과 같은 시나리오에서 유용합니다.
- 재해 복구: 재해 복구 계획의 일부로 백업을 사용합니다. 재해가 발생하면 데이터를 새 Memorystore for Valkey 인스턴스로 복원할 수 있습니다.
- 데이터 이전: 서로 다른 Memorystore for Valkey 인스턴스 간에 데이터를 이전합니다. 데이터를 통합하거나 다른 리전으로 이동할 수 있습니다. Memorystore for Valkey 인스턴스에서 백업을 복원할 수도 있습니다.
- 데이터 공유: 여러 팀 또는 애플리케이션 간에 데이터를 공유합니다. 이를 통해 공동작업, 오프라인 데이터 분석, 데이터 교환이 가능합니다.
- 규정 준수: 규정 준수 목적으로 캐시 데이터를 주기적으로 백업합니다.
- 백업 예약: 주문형 백업을 만드는 것 외에도 인스턴스의 백업 일정을 구성할 수 있습니다. 따라서 Memorystore for Valkey는 인스턴스의 정기 백업을 시작합니다.
리전 간 복제: 기본 인스턴스에서 보조 인스턴스를 만들어 여러 리전에서 인스턴스를 읽을 수 있도록 합니다. 보조 인스턴스는 리전 중단 시 재해 복구 시나리오를 위한 중복성도 제공합니다.
Memorystore for Valkey의 리전 간 복제는 다음과 같은 이점을 제공합니다.
- 재해 복구: 기본 인스턴스의 리전을 사용할 수 없게 되면 다른 리전의 보조 인스턴스로 분리하거나 전환하여 읽기 및 쓰기 요청을 처리할 수 있습니다. 보조 인스턴스는 전환 또는 분리 명령어를 실행하지 않고 읽기 요청을 처리합니다.
- 지리적으로 분산된 데이터: 데이터를 지리적으로 분산하면 데이터가 사용자에게 더 가까워지고 읽기 지연 시간이 줄어듭니다.
- 읽기 트래픽의 지리적 부하 분산: 한 리전에서 연결이 느리거나 과부하가 발생하면 트래픽을 다른 리전으로 라우팅할 수 있습니다.
인스턴스의 성능을 최적화하려면 어떻게 해야 하나요?
Memorystore for Valkey 인스턴스의 성능을 최적화하려면 다음 단계를 따르세요.
- 메모리 관리 및 CPU 사용량에 관한 권장사항을 따르세요. 이러한 권장사항을 따르면 인스턴스의 성능이 최적화됩니다.
- 감사 로그를 사용하여 인스턴스의 액세스를 모니터링합니다. 따라서 인스턴스의 관리자 활동(
Admin Activity
감사 로그) 또는 인스턴스 데이터에 액세스하는 사용자 (Data Access
감사 로그)와 관련된 문제가 있는지 확인할 수 있습니다. - 읽기 복제본을 사용합니다. Memorystore for Valkey에서 복제는 비동기식입니다. 따라서 기본 노드의 데이터가 복제본에 즉시 표시되지 않습니다. 약간 오래된 데이터를 처리할 수 있는 경우 읽기 복제본을 사용하세요. 이렇게 하면 읽기 처리량과 지연 시간이 크게 개선됩니다.
리소스 집약적인 Valkey 명령어는 사용하지 마세요. 이러한 명령어를 사용하면 다음과 같은 성능 문제가 발생할 수 있습니다.
- 긴 지연 시간 및 클라이언트 제한 시간
- 메모리 사용량을 늘리는 명령어로 인한 메모리 부족
- Valkey 기본 스레드가 차단되어 노드 복제 및 동기화 중 데이터 손실
- 상태 점검, 관측 가능성, 복제 부족
이러한 명령어를 사용하는 대신 리소스 효율성이 더 높은 명령어를 사용하세요. 예를 들어 전체 키 스페이스를 스캔하는 경우
KEYS
명령어를 사용하지 마세요. 대신SCAN
를 사용하세요.리소스 집약적인 Valkey 명령어와 리소스 효율적인 대안에 관한 자세한 내용은 리소스 집약적인 Valkey 명령어를 참고하세요.
비즈니스 요구사항에 따라 데이터의 만료 시간을 설정할 수 있는 경우 만료 시간을 설정하는 것이 좋습니다. 만료 시간을 설정하면 메모리 사용량이 줄어듭니다.
Memorystore for Valkey 인스턴스의 버전을 최신 인스턴스 버전으로 업그레이드합니다. 최신 소프트웨어 버전은 안정성과 성능이 개선되었습니다.
maxmemory-policy
매개변수의 값을 수정합니다. 이 매개변수는 인스턴스 데이터가maxmemory
한도에 도달할 때 Valkey가 따르는 동작을 지정합니다.인스턴스 메모리에 여유 공간이 없는 상태에서 새로운 쓰기가 들어오면 Valkey는 키를 삭제하여 인스턴스의
maxmemory
정책을 기반으로 쓰기를 수행할 공간을 확보합니다.
maxmemory-policy
매개변수 값이noeviction
로 설정된 경우 인스턴스가 최대 메모리에 도달하면 Memorystore for Valkey가 오류를 반환합니다. 하지만 Memorystore for Valkey는 데이터를 덮어쓰거나 삭제하지 않습니다. 인스턴스의 가용성을 개선하려면 Memorystore for Valkey가 키를 삭제할 수 있도록maxmemory-policy
매개변수의 값을 변경하세요.maxmemory-policy
매개변수에 설정할 수 있는 다양한 값에 대한 자세한 내용은 Maxmemory 정책을 참고하세요. 이 매개변수 업데이트에 대한 자세한 내용은 구성 매개변수 업데이트를 참고하세요.원하는 캐시 적중률을 갖도록 Memorystore for Valkey 인스턴스를 조정합니다. 이렇게 하면 적절한 비율의 조회수를 처리할 수 있도록 데이터베이스의 크기를 적절하게 조정할 수 있습니다.
인스턴스를 조정하려면 다음을 실행하세요.
total_keyspace_hits_count
및total_keyspace_misses_count
모니터링 측정항목을 사용하여 인스턴스의 성공한 총 키 조회 수와 인스턴스의 실패한 총 키 조회 수를 각각 확인합니다.- 총 적중 수를 총 적중 수와 누락 수로 나눕니다(즉, 적중 수/(적중 수 + 누락 수)).
몫이 적중률입니다. - 인스턴스를 조정하여 적절한 적중률을 얻으려면 인스턴스를 확장하세요. 샤드 수를 확장하거나 축소하거나 노드 유형을 상향 또는 하향 조정할 수 있습니다. 자세한 내용은 인스턴스 용량 확장 정보를 참고하세요.
적중률을 높이면 시스템의 지연 시간과 처리량이 개선됩니다. 성능, 확장, 비용 목표에 적합한 균형을 찾으세요.
기본적으로 연결 포화 없이 연결 수를 늘려 성능을 높일 수 있는지 확인하기 위해 인스턴스에 대해 성능 벤치마크를 실행하는 것이 좋습니다. 각 Valkey 노드에 하나의 연결을 열도록 클라이언트를 구성하는 것이 좋습니다.
클라이언트가 더 많은 요청을 더 빠르게 처리할 수 있도록 클라이언트의 파이프라인을 사용 설정합니다. 파이프라인을 구성하려면 클라이언트 라이브러리를 사용하세요. 자세한 내용은 이 라이브러리와 연결된 문서를 참고하세요.
인스턴스의 고가용성을 최적화하려면 어떻게 해야 하나요?
단일 영역 인스턴스와 달리 고가용성 멀티 영역 인스턴스를 만들면 안정성이 더 우수하므로 이를 만드는 것이 좋습니다.
고가용성 인스턴스를 만드는 경우 /instance/node/replication/offset
측정항목을 사용하는 것이 좋습니다. 이 측정항목을 사용하면 인스턴스의 단일 노드에 대한 복제 오프셋 (바이트)을 모니터링할 수 있습니다. 복제 오프셋은 Memorystore for Valkey가 기본 노드와 읽기 복제본 간에 복제하지 않은 바이트 수입니다.