Amazon Keyspaces의 용량 관리 문제 해결 - Amazon Keyspaces(Apache Cassandra용)

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Amazon Keyspaces의 용량 관리 문제 해결

서버리스 용량에 문제가 있으신가요? 다음에서는 몇 가지 일반적인 문제와 이에 대한 해결 방법에 대해 설명합니다.

서버리스 용량 오류

이 섹션에서는 서버리스 용량 관리와 관련된 오류를 인식하는 방법과 해결 방법을 설명합니다. 예를 들어 애플리케이션이 프로비저닝된 처리량 용량을 초과하면 용량 부족 이벤트가 관찰될 수 있습니다.

Apache Cassandra는 여러 노드에서 실행되도록 설계된 클러스터 기반 소프트웨어이므로 처리량 용량과 같은 서버리스 기능과 관련된 예외 메시지가 없습니다. 대부분의 드라이버는 Apache Cassandra에서 사용할 수 있는 오류 코드만 이해하므로 Amazon Keyspaces는 호환성을 유지하기 위해 동일한 오류 코드 세트를 사용합니다.

Cassandra 오류를 기본 용량 이벤트에 매핑하려면 Amazon을 사용하여 관련 Amazon Keyspaces CloudWatch 지표를 모니터링할 수 있습니다. 클라이언트 측 오류를 초래하는 용량 부족 이벤트는 이벤트를 일으킨 리소스에 따라 다음 세 그룹으로 분류할 수 있습니다.

  • 테이블 - 테이블에 대해 프로비저닝된 용량 모드를 선택했는데 애플리케이션이 프로비저닝된 처리량을 초과하는 경우 용량 부족 오류가 발생할 수 있습니다. 자세한 설명은 Amazon Keyspaces의 읽기/쓰기 용량 모드 섹션을 참조하세요.

  • 파티션 - 특정 파티션의 트래픽이 3,000RCU 또는 1,000WCU를 초과하는 경우 용량 부족 이벤트가 발생할 수 있습니다. 트래픽을 파티션 전체에 균일하게 분배하는 것이 가장 좋습니다. 자세한 설명은 Amazon Keyspaces(Apache Cassandra용)에서의 데이터 모델링 섹션을 참조하세요.

  • 연결 - 연결당 초당 최대 작업 수의 할당량을 초과하면 처리량이 부족해질 수 있습니다. 처리량을 늘리려면 드라이버로 연결을 구성할 때 기본 연결 수를 늘릴 수 있습니다. 자세한 내용은 CQL 쿼리 처리량 조정로드 밸런싱 섹션을 참조하세요.

클라이언트 측 오류를 반환하는 용량 부족 이벤트를 일으키는 리소스를 확인하려면 Amazon Keyspaces 콘솔에서 대시보드를 확인할 수 있습니다. 기본적으로 콘솔은 테이블의 용량 탭에 있는 용량 및 관련 CloudWatch 지표 섹션에서 가장 일반적인 용량 및 트래픽 관련 지표를 집계하여 보여줍니다.

Amazon을 사용하여 자체 대시보드를 만들려면 다음 Amazon CloudWatch Keyspaces 지표를 확인하십시오.

  • PerConnectionRequestRateExceeded - 연결당 요청 속도에 대한 할당량을 초과하는 Amazon Keyspaces에 대한 요청입니다. Amazon Keyspaces에 대한 각 클라이언트 연결은 초당 최대 3000개의 CQL 요청을 지원할 수 있습니다. 여러 연결을 생성하여 초당 3000개 이상의 요청을 수행할 수 있습니다.

  • ReadThrottleEvents - 테이블의 읽기 용량을 초과하는 Amazon Keyspaces에 대한 요청입니다.

  • StoragePartitionThroughputCapacityExceeded - 파티션의 처리량 용량을 초과하는 Amazon Keyspaces 스토리지 파티션에 대한 요청입니다. Amazon Keyspaces 스토리지 파티션은 초당 최대 1000 WCU/WRU 및 초당 3000 RCU/RRU를 지원할 수 있습니다. 이러한 예외를 완화하려면 데이터 모델을 검토하여 더 많은 파티션에 읽기/쓰기 트래픽을 분산하는 것이 좋습니다.

  • WriteThrottleEvents - 테이블의 읽기 용량을 초과하는 Amazon Keyspaces에 대한 요청입니다.

자세히 CloudWatch 알아보려면 을 참조하십시오아마존을 통한 아마존 키스페이스 모니터링 CloudWatch. Amazon Keyspace에 사용할 수 있는 모든 CloudWatch 지표 목록은 을 참조하십시오. Amazon Keyspaces 지표 및 차원

클라이언트 드라이버로부터 NoHostAvailable 용량 부족 오류가 발생했습니다.

테이블에 대한 Read_Timeout 또는 Write_Timeout 예외가 표시됩니다.

용량이 충분하지 않은 상태에서 Amazon Keyspaces 테이블에 반복적으로 쓰거나 읽으려고 하면 드라이버와 관련된 클라이언트 측 오류가 발생할 수 있습니다.

프로비저닝된 처리량 지표와 실제 처리량 지표, 테이블의 용량 부족 이벤트를 모니터링하는 CloudWatch 데 사용합니다. 예를 들어 처리량 용량이 충분하지 않은 읽기 요청은 Read_Timeout 예외와 함께 실패하고 ReadThrottleEvents 지표에 게시됩니다. 처리량 용량이 충분하지 않은 쓰기 요청은 Write_Timeout 예외와 함께 실패하고 WriteThrottleEvents 지표에 게시됩니다. 이러한 지표에 대한 자세한 내용은 Amazon Keyspaces 지표 및 차원 섹션을 참조하세요.

문제를 해결하려면 다음 옵션을 고려하세요.

계정의 기본 용량 할당량을 늘려야 하는 경우 Amazon Keyspaces(Apache Cassandra용)에 대한 할당량 섹션을 참조하세요.

파티션 용량 초과와 관련된 오류가 표시됩니다.

파티션 용량이 일시적으로 초과되면 파티션 제한이 발생할 수 있습니다(조정 용량 또는 온디맨드 용량에 따라 자동으로 처리될 수 있음). 이 오류는 데이터 모델에 문제가 있는 것일 수도 있습니다. Amazon Keyspaces 스토리지 파티션은 초당 최대 1000 WCU/WRU 및 초당 3000 RCU/RRU를 지원할 수 있습니다. 읽기/쓰기 트래픽을 더 많은 파티션에 분산하도록 데이터 모델을 개선하는 방법에 대한 자세한 내용은 Amazon Keyspaces(Apache Cassandra용)에서의 데이터 모델링 섹션을 참조하세요.

동일한 논리적 파티션에 정적 및 비정적 데이터를 포함하는 동시 쓰기 작업의 비율이 높아진 경우에도 Write_Timeout 예외가 발생할 수 있습니다. 트래픽이 동일한 논리적 파티션 내에서 정적 및 비정적 데이터를 포함하는 여러 개의 동시 쓰기 작업을 실행할 것으로 예상되는 경우 정적 데이터와 비정적 데이터를 따로 쓰는 것이 좋습니다. 데이터를 별도로 쓰는 것도 처리량 비용을 최적화하는 데 도움이 됩니다.

연결 요청 속도 초과와 관련된 오류가 표시됩니다.

연결 제한은 다음 원인 중 하나로 인해 발생할 수 있습니다.

  • 세션당 구성된 연결이 충분하지 않을 수 있습니다.

  • VPC 엔드포인트 권한이 올바르게 구성되어 있지 않기 때문에 사용 가능한 피어보다 연결 수가 적을 수 있습니다. VPC 엔드포인트 정책에 대한 자세한 내용은 Amazon Keyspaces에 인터페이스 VPC 엔드포인트 사용 섹션을 참조하세요.

  • 4.x 드라이버를 사용하는 경우 호스트 이름 검증이 활성화되어 있는지 확인합니다. 드라이버는 기본적으로 TLS 호스트 이름 확인을 활성화합니다. 이 구성으로 인해 Amazon Keyspaces가 드라이버에 단일 노드 클러스터로 표시됩니다. 호스트 이름 인증을 끄는 것이 좋습니다.

다음 모범 사례를 따라 연결 및 처리량을 최적화하는 것이 좋습니다.

  • CQL 쿼리 처리량 조정 구성

    Amazon Keyspaces는 TCP 연결당 초당 최대 3,000개의 CQL 쿼리를 지원하지만 드라이버가 설정할 수 있는 연결 수에는 제한이 없습니다.

    대부분의 오픈 소스 Cassandra 드라이버는 Cassandra에 연결 풀을 설정하고 연결 풀 전체에 걸쳐 쿼리를 로드 밸런싱합니다. Amazon Keyspaces는 드라이버에게 9개의 피어 IP 주소를 노출합니다. 대부분의 드라이버의 기본 동작은 각 피어 IP 주소마다 하나의 연결을 설정하는 것입니다. 따라서 기본 설정을 사용하는 드라이버의 최대 CQL 쿼리 처리량은 초당 27,000개의 CQL 쿼리입니다.

    이 수를 늘리려면 드라이버가 연결 풀에서 유지 관리하는 IP 주소당 연결 수를 늘리는 것이 좋습니다. 예를 들어 IP 주소당 최대 연결 수를 2로 설정하면 드라이버의 최대 처리량이 초당 54,000개의 CQL 쿼리로 두 배로 늘어납니다.

  • 단일 노드 연결을 최적화합니다.

    기본적으로 대부분의 오픈 소스 Cassandra 드라이버는 세션을 설정할 때 system.peers 테이블에 표시된 모든 IP 주소에 대해 하나 이상의 연결을 설정합니다. 하지만 특정 구성에서는 드라이버가 단일 Amazon Keyspaces IP 주소에 연결될 수 있습니다. 이는 드라이버가 피어 노드 (예: DataStax Java 드라이버) 의 SSL 호스트 이름 검증을 시도하거나 VPC 엔드포인트를 통해 연결할 때 발생할 수 있습니다.

    여러 IP 주소에 연결할 때 드라이버와 동일한 가용성 및 성능을 얻으려면 다음을 수행하는 것이 좋습니다.

    • 원하는 클라이언트 처리량에 따라 IP당 연결 수를 9개 이상으로 늘립니다.

    • 동일한 노드에서 재시도가 실행되도록 하는 사용자 지정 재시도 정책을 생성합니다.

    • VPC 엔드포인트를 사용하는 경우 Amazon Keyspaces에 연결하는 데 사용되는 IAM 엔티티에 엔드포인트 및 네트워크 인터페이스 정보에 대한 VPC를 쿼리할 수 있는 액세스 권한을 부여합니다. 이렇게 하면 로드 밸런싱이 개선되고 읽기/쓰기 처리량이 늘어납니다. 자세한 설명은 인터페이스 VPC 엔드포인트 정보로 system.peers 테이블 항목 채우기 섹션을 참조하세요.

데이터를 가져오는 동안 쓰기 제한 시간 오류가 발생함

cqlsh COPY 명령을 사용하여 데이터를 업로드할 때 제한 시간 오류가 발생합니다.

Failed to import 1 rows: WriteTimeout - Error from server: code=1100 [Coordinator node timed out waiting for replica nodes' responses] message="Operation timed out - received only 0 responses." info={'received_responses': 0, 'required_responses': 2, 'write_type': 'SIMPLE', 'consistency': 'LOCAL_QUORUM'}, will retry later, attempt 1 of 100

Amazon Keyspaces는 처리량 용량이 충분하지 않아 쓰기 요청이 실패하는 경우를 나타내기 위해 ReadTimeoutWriteTimeout 예외를 사용합니다. 용량 부족 예외를 진단하는 데 도움이 되도록 Amazon Keyspace는 Amazon에 다음 지표를 게시합니다. CloudWatch

  • WriteThrottleEvents

  • ReadThrottledEvents

  • StoragePartitionThroughputCapacityExceeded

데이터 로드 중 용량 부족 오류를 해결하려면 작업자당 쓰기 속도 또는 총 수집 속도를 낮춘 다음 행 업로드를 다시 시도합니다. 자세한 설명은 4단계: cqlsh COPY FROM 설정 구성 섹션을 참조하세요. 보다 강력한 데이터 업로드 옵션을 원하면 리포지토리에서 사용할 수 있는 DSBulk를 사용해 보십시오. GitHub step-by-step지침은 을 참조하십시오자습서: DSBulk를 사용하여 Amazon Keyspaces에 데이터 로드.

키스페이스 또는 테이블의 실제 스토리지 크기를 볼 수 없음

키스페이스 또는 테이블의 실제 스토리지 크기를 볼 수 없습니다.

테이블의 행 크기 계산을 시작하여 스토리지 크기를 추정할 수 있습니다. 행 크기 계산에 대한 자세한 지침은 Amazon Keyspaces에서의 행 크기 계산에서 확인할 수 있습니다.