Memorystore for Valkey FAQ

이 페이지에서는 Memorystore for Valkey 사용과 관련된 자주 묻는 질문 (FAQ)의 답변을 확인할 수 있습니다.

권장되는 메모리 및 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 매개변수와 연결된 값보다 작아야 합니다. 값이 같으면 다음 단계를 따르세요.

비즈니스의 트래픽이 급증하는 예정된 이벤트가 있다고 가정해 보겠습니다. 어떻게 해야 할까요?

비즈니스 요구사항을 충족하도록 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에서 재연결 폭풍이 발생하여 서비스가 위험에 처할 수 있습니다.

  • 클라이언트가 요청 간 지연 증가와 함께 실패한 요청을 주기적으로 재시도할 때 지수 백오프를 네트워크 애플리케이션의 표준 오류 처리 전략으로 사용합니다.

  • Google 클라이언트 라이브러리 코드 샘플을 사용합니다. 예를 들어 valkey-go 클라이언트의 기본값은 모든 권장사항을 충족하므로 이 클라이언트에 대해 아무것도 구성할 필요가 없습니다.

데이터 복원력 옵션에는 무엇이 있나요?

Memorystore for Valkey는 데이터 복원력을 위해 다음과 같은 기능을 제공합니다.

  • 고가용성: Memorystore for Valkey는 복제본 노드에 중복 용량을 제공합니다. 장애가 발생하면 Memorystore for Valkey는 이 용량을 사용하여 다운타임 없이 작동할 수 있습니다.

  • **지속성**: 환경이 예기치 않게 비정상 종료되면 Memorystore for Valkey가 환경을 자동으로 복원합니다. 이를 지속성 이라고 합니다.

    Memorystore for Valkey는 다음과 같은 유형의 지속성을 제공합니다.

    • Redis 데이터베이스 (RDB) 지속성: 내구성 있는 스토리지에 데이터 스냅샷 을 저장하여 데이터를 보호합니다. 스냅샷 간격을 선택하여 스냅샷의 빈도를 선택합니다 스냅샷 간격. 노드 장애가 발생하면 장애 조치가 가능하지 않은 경우에도 데이터를 복구할 수 있습니다.

    • Append-Only File (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 인스턴스를 조정합니다. 이렇게 하면 적절한 적중률을 처리할 수 있도록 데이터베이스의 크기를 적절하게 조정할 수 있습니다.

    인스턴스를 조정하려면 다음 단계를 따르세요.

    1. total_keyspace_hits_counttotal_keyspace_misses_count 모니터링 측정항목을 사용하여 인스턴스의 키 조회 성공 횟수와 인스턴스의 키 조회 실패 횟수를 각각 확인합니다.
    2. 총 적중 횟수를 총 적중 횟수와 누락 횟수로 나눕니다.
      즉, 적중/(적중 + 누락)입니다. 몫은 적중률입니다.
    3. 적합한 적중률을 얻도록 인스턴스를 조정하려면 인스턴스를 확장합니다. 샤드 수를 확장하거나 축소하거나 노드 유형을 확장하거나 축소할 수 있습니다. 자세한 내용은 인스턴스 용량 확장에 관해 알아보기을 참고하세요.

    적중률을 높이면 시스템의 지연 시간과 처리량이 개선됩니다. 성능, 확장, 비용 목표에 적합한 균형을 찾으세요.

  • 기본적으로 연결 포화 없이 연결 수를 늘리면 성능이 향상되는지 확인하기 위해 인스턴스에 대해 성능 벤치마크를 실행하는 것이 좋습니다. 권장되는 시작점은 각 Valkey 노드에 하나의 연결을 열도록 클라이언트를 구성하는 것입니다.

  • 클라이언트가 더 많은 요청을 더 빠르게 처리할 수 있도록 클라이언트에 파이프라이닝을 사용 설정합니다. 파이프라이닝을 구성하려면 클라이언트 라이브러리를 사용하세요. 자세한 내용은 이 라이브러리와 연결된 문서를 참고하세요.

인스턴스의 고가용성을 최적화하려면 어떻게 해야 하나요?

단일 영역 인스턴스와 달리 고가용성 멀티 영역 인스턴스를 만들면 안정성이 더 우수하므로 이를 만드는 것이 좋습니다.

고가용성 인스턴스를 만드는 경우 /instance/node/replication/offset 측정항목을 사용하는 것이 좋습니다. 이 측정항목을 사용하면 인스턴스의 단일 노드에 대한 복제 오프셋 (바이트)을 모니터링할 수 있습니다. 복제 오프셋 은 Memorystore for Valkey에서 기본 노드와 읽기 복제본 간에 복제하지 않은 바이트 수입니다.