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

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

Amazon 키스페이스의 용량 관리 문제 해결

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

서버리스 용량 오류

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

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

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

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

  • 파티션 — 특정 파티션의 트래픽이 3,000개의 RCU 또는 1,000개의 WCU를 초과할 경우 용량 부족 이벤트가 발생할 수 있습니다. 트래픽을 파티션 간에 균일하게 분산하는 것이 모범 사례입니다. 자세한 내용은 Amazon Keyspaces (Apache Cassandra용)을 참조하세요.

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

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

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

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

  • ReadThrottleEvents— Amazon 키스페이스에 대한 요청이 테이블의 읽기 용량을 초과했습니다.

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

  • WriteThrottleEvents— Amazon 키스페이스에 대한 요청이 테이블의 쓰기 용량을 초과했습니다.

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

참고

Amazon Keyspace에서 일반적으로 관찰되는 모든 메트릭을 보여주는 사용자 지정 대시보드를 시작하려면 AWS샘플 리포지토리에서 사용할 수 있는 사전 구축된 CloudWatch 템플릿을 사용할 수 있습니다. GitHub

클라이언트 드라이버에서 용량NoHostAvailable 부족 오류가 발생합니다.

테이블에 대한Read_TimeoutWrite_Timeout 예외가 표시되고 있습니다.

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

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

이 문제를 해결하기 위해 다음 옵션 중 하나를 고려합니다.

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

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

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

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

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

연결 제한은 다음 원인 중 하나 때문일 수 있습니다.

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

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

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

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

  • CQL 쿼리 처리량 튜닝을 구성합니다.

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

    대부분의 오픈 소스 Cassandra 드라이버는 Cassandra에 대한 연결 풀을 설정하고 해당 연결 풀을 통해 쿼리를 로드 밸런싱합니다. 아마존 키스페이스는 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 엔드포인트 및 네트워크 인터페이스 정보를 쿼리할 수 있는 액세스 권한을 부여하십시오. 이렇게 하면 로드 밸런싱이 향상되고 읽기/쓰기 처리량이 증가합니다. 자세한 내용은 거주하는 중system.peers인터페이스 VPC 엔드포인트 정보가 포함된 테이블 항목을 참조하세요.

데이터를 가져오는 동안 쓰기 타임아웃 오류가 발생합니다.

cqlshCOPY명령을 사용하여 데이터를 업로드할 때 시간 초과 오류가 발생합니다.

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 KeyspacesReadTimeoutWriteTimeout 예외를 사용하여 처리 용량이 부족하여 쓰기 요청이 실패하는 경우를 나타냅니다. 불충분한 용량 예외를 진단하는 데 도움이 되도록 Amazon Keyspace는 아마존에 다음과 같은 메트릭을 CloudWatch 게시합니다.

  • WriteThrottleEvents

  • ReadThrottledEvents

  • StoragePartitionThroughputCapacityExceeded

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

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

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

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