내용으로 건너뛰기

자체 관리형 ElastiCache 클러스터에 “네트워크 허용량 초과” 지표가 있는 이유는 무엇입니까?

4분 분량
0

Amazon ElastiCache 환경에 “네트워크 허용량 초과” 지표가 표시됩니다.

간략한 설명

애플리케이션 워크로드가 기본 ElastiCache 노드의 네트워크 용량을 초과하면 트래픽 쉐이핑이 발생할 수 있습니다. 트래픽 쉐이핑을 추적하려면 다음 지표를 사용합니다.

  • NetworkBandwidthInAllowanceExceeded 및 NetworkBandwidthOutAllowanceExceeded
  • NetworkPacketsPerSecondAllowanceExceeded
  • NetworkConntrackAllowanceExceeded

해결 방법

NetworkBandwidthInAllowanceExceeded 및 NetworkBandwidthOutAllowanceExceeded

NetworkBandwidthInAllowanceExceededNetworkBandwidthOutAllowanceExceeded 지표는 처리량이 집계된 대역폭 제한을 초과할 때 ElastiCache가 쉐이핑하는 네트워크 패킷 수를 추적합니다.

NetworkBandwidthInAllowanceExceededNetworkBandwidthOutAllowanceExceeded를 검토할 때 Amazon CloudWatch에서 NetworkBytesInNetworkBytesOut 지표도 검토해야 합니다. CloudWatch 대역폭 사용량 지표인 NetworkBytesInNetworkBytesOut가 노드 수준 제한보다 낮으면 네트워크 성능 지표에 ElastiCache 허용량 초과가 표시될 수 있습니다. 자세한 내용은 인스턴스 대역폭 모니터링을 참조하십시오.

참고: 평균 대역폭이 한도 내에 있더라도 트래픽이 조금이라도 급증하면 트래픽 쉐이핑이 발생할 수 있습니다. 이러한 대역폭 허용량 메트릭이 애플리케이션 측에 영향을 주지 않고 가끔씩 급증하는 경우에는 추가 조치가 필요하지 않습니다. Valkey와 Redis OSS는 TCP를 사용하기 때문에 TCP는 삭제된 패킷을 재전송합니다.

이러한 대역폭 허용량 지표가 지속적으로 높고 애플리케이션에서 지연 시간 문제가 발생하는 경우 지연 문제의 타임스탬프를 검토하십시오. 오류 타임스탬프가 지표 급증 시간과 일치하면 클러스터를 스케일 업하십시오. 자세한 내용은 자체 설계 클러스터 스케일링을 참조하십시오.

또한 클러스터의 캐시 노드 유형을 검토하십시오. 애플리케이션 워크로드로 인해 지속적으로 네트워크 사용량이 기준 대역폭을 초과하여 급증하면 트래픽 쉐이핑이 발생할 수 있습니다. 자세한 내용은 사용 가능한 인스턴스 대역폭을 참조하십시오.

참고: ElastiCache가 기본 노드에 쓰는 모든 바이트에 대해 ElastiCache는 동일한 정보를 다른 모든 복제본에 복제합니다. 클러스터에서 복제 백로그를 처리하려고 하면 노드 유형이 작고, 복제본이 여러 개 있고, 쓰기 요청이 많은 클러스터에서 문제가 발생할 수 있습니다. 이러한 백로그로 인해 기본 노드의 NetworkBandwidthOutAllowanceExceeded 값이 높아질 수 있습니다.

애플리케이션 측에서 지표가 급증한 원인을 파악하려면 여러 키에서 작동하는 명령을 찾아보십시오. 여기에는 다음과 같은 예시가 포함됩니다.

  • MGET
  • MSET
  • HGETALL

대형 JSON 객체 또는 해시 값과 같은 여러 개의 대형 키를 사용하는 경우 노드 유형의 대역폭 제한을 초과할 수 있습니다. 그러면 ElastiCache가 초과 트래픽을 드롭하거나 현재 부하를 기반으로 대기열에 추가합니다.

NetworkPacketsPerSecondAllowanceExceeded

이 지표의 값이 0이 아닌 경우 기본 캐시 노드의 네트워크 사용량이 초당 패킷(PPS) 제한을 초과한 것입니다. 이 제한은 사용하는 노드 유형에 따라 다릅니다. ElastiCache는 노드 제한을 초과하는 초과 패킷을 드롭하거나 대기열에 추가합니다.

소규모 요청의 초당 쿼리 수(QPS)를 높이는 애플리케이션의 경우 노드가 PPS 제한을 초과할 수 있습니다. 명령 실행 속도를 확인하려면 각 명령 데이터 유형에 대한 CloudWatch 지표를 사용하십시오. 자세한 내용은 Valkey 및 Redis OSS의 지표를 참조하십시오.

이 문제를 해결하려면 클러스터를 더 큰 노드 유형으로 일시적으로 스케일 업할 수 있습니다. 읽기 작업이 많으면 클러스터나 샤드에 읽기 전용 복제본을 추가하여 부하를 분산할 수 있습니다. 클러스터 모드 사용(CME) 클러스터의 경우 작업에 쓰기 작업이 많으면 샤드를 추가하여 클러스터를 스케일 아웃하십시오.

참고: 클러스터 모드 미사용(CMD) 클러스터의 경우 쓰기 작업을 스케일링하려면 클러스터를 더 큰 노드로 이동해야 합니다.

NetworkConntrackAllowanceExceeded

이 지표의 값이 0이 아닌 경우 ElastiCache는 모든 노드의 보안 그룹에서 추적된 최대 연결 수를 초과한 것입니다. 연결 제한에 도달하면 ElastiCache가 기존 연결을 종료할 때까지 새 연결이 실패합니다. 자세한 내용은 Amazon Elastic Compute Cloud(Amazon EC2) 보안 그룹 연결 추적을 참조하십시오.

워크로드로 인해 많은 수의 네트워크 연결이 생성되고 연결을 제대로 닫지 않으면 서버 측에서 연결이 열린 상태로 유지됩니다. 이러한 연결은 유휴 상태로 유지되며 conntrack이 소진됩니다. 그러면 ElastiCache는 기존 연결을 닫을 때까지 ElastiCache는 새 연결을 수락할 수 없습니다.

ElastiCache에서 이 문제를 해결하려면 timeout 파라미터를 사용하여 유휴 연결 제한 시간을 검토하고 수정하십시오. 유휴 기간이 지나면 연결을 닫도록 ElastiCache 서버의 파라미터를 구성합니다.

애플리케이션 측에서 이 문제를 해결하려면 연결 풀 설정을 사용하여 기존 연결을 재사용하고 NewConnections 비율을 줄이십시오. 자세한 내용은 모범 사례: Redis 클라이언트 및 Amazon ElastiCache for Redis를 참조하십시오.

참고: 서버 측의 timeout 파라미터와 클라이언트 측의 연결 풀 설정은 모두 연결 설정을 관리하며 애플리케이션의 부하 테스트가 필요합니다. 애플리케이션 부하 테스트를 통해 제한 시간 및 연결 풀 설정 모두에 대한 최적의 구성을 결정하십시오.

관련 정보

CloudWatch 지표를 사용하는 모니터링

ElastiCache 스케일링

네트워크

Redis OSS 2.6.13 파라미터

Amazon EC2 인스턴스 수준 네트워크 성능 지표로 새로운 통찰력 얻기

AWS 공식업데이트됨 일 년 전
댓글 없음