Kinesis Data Streams에서 조절 오류를 해결하려면 어떻게 해야 합니까?
최종 업데이트 날짜: 2020년 3월 30일
Amazon Kinesis 데이터 스트림이 조절되고 있습니다. 하지만 스트림이 데이터 제한을 초과하지 않았습니다. "Rate Exceeded" 또는 "WriteProvisionedThroughputExceeded" 오류를 감지하려면 어떻게 해야 합니까?
간략한 설명
다음을 수행하여 Kinesis 데이터 스트림의 조절 오류를 감지하고 해결할 수 있습니다.
- 확장 모니터링을 활성화하고 IncomingBytes 값을 비교합니다.
- 전체 레코드를 로깅하여 스트림 수 및 크기 확인을 수행합니다.
- 임의 파티션 키를 사용합니다.
- Amazon CloudWatch 지표에 모호한 지표 또는 마이크로 스파이크가 있는지 확인합니다.
해결 방법
Kinesis 데이터 스트림에서 "Rate Exceeded" 또는 "WriteProvisionedThroughputExceeded" 오류를 방지하려면 다음과 같이 해보십시오.
확장 모니터링 활성화 및 IncomingBytes 값 비교
핫 샤드가 있는지 확인하려면 Kinesis 데이터 스트림에 대해 확장 모니터링을 활성화합니다. Kinesis 데이터 스트림에서 샤드 수준 모니터링을 활성화하면 샤드를 개별적으로 검사할 수 있습니다. 샤드별로 스트림을 검사하여 더 많은 트래픽을 수신하거나 서비스 제한을 위반하는 샤드를 식별할 수 있습니다.
참고: 확장 모니터링 설정이 비활성화되면 핫 샤드가 Kinesis 데이터 스트림 지표에서 제외되는 경우가 많습니다. 핫 샤드에 대한 자세한 내용은 리샤딩 전략을 참조하십시오.
또한 IncomingBytes 평균값과 최대값을 비교하여 스트림에 핫 샤드가 있는지 확인할 수도 있습니다. 확장 모니터링이 활성화된 경우 평균에서 벗어난 특정 샤드를 찾아낼 수도 있습니다.
스트림 수 및 크기 확인을 수행하기 위해 전체 레코드 로깅
스트림 제한을 위반하는 마이크로 스파이크 또는 모호한 지표를 식별하려면 전체 레코드 또는 사용자 지정 코드를 로깅하여 스트림 수 및 크기 확인을 수행합니다. 그런 다음 Kinesis 데이터 스트림으로 전송되는 레코드의 수와 크기를 평가합니다. 이는 데이터 제한을 위반하는 스파이크를 식별하는 데 도움이 될 수 있습니다.
1분 데이터 포인트에서 값을 가져와 60으로 나눌 수도 있습니다. 이렇게 하면 초당 평균 값이 계산되므로 지정된 기간 내에 조절이 발생하는지 확인할 수 있습니다. 성공 횟수가 제한을 위반하지 않으면 IncomingRecords 지표를 WriteProvisionedThroughputExceeded 지표에 추가하고 계산을 다시 시도합니다. IncomingRecords 지표는 성공 또는 수락된 레코드에 신호를 보내는 반면 WriteProvisionedThroughputExceeded 지표는 조절된 레코드 수를 나타냅니다.
참고: 생산자로부터 전송된 레코드의 크기와 수를 확인하십시오. 수신 레코드와 조절된 레코드의 합계가 스트림 제한보다 큰 경우 레코드 수를 변경하는 것이 좋습니다.
PutRecord.Success 지표도 실패한 작업을 나타내는 유용한 지표입니다. 성공 지표가 낮아지면 데이터 생산자 로그를 조사하여 실패의 근본 원인을 찾습니다. 조절이 발생하는 경우 데이터 생산자 측에서 로깅을 설정하여 제출된 레코드의 총 수량과 크기를 화인합니다. PutRecord.Success 지표의 총 레코드 수가 스트림 제한을 위반하면 Kinesis 데이터 스트림이 조절됩니다. Kinesis 스트림 제한에 대한 자세한 내용은 Kinesis Data Streams 할당량을 참조하십시오.
임의 파티션 키 사용
Kinesis 데이터 스트림에 핫 샤드가 있는 경우 임의 파티션 키를 사용하여 레코드를 수집합니다. 작업에 이미 임의 파티션 키가 사용되는 경우 키를 조정하여 분포를 수정합니다. 그런 다음 키에서 IncomingBytes 및 IncomingRecords와 같은 지표의 변경 사항을 모니터링합니다. 최대 패턴과 평균 패턴이 서로 가까운 경우 핫 샤드가 없는 것입니다.
Amazon CloudWatch 지표에 모호한 지표 또는 마이크로 스파이크가 있는지 확인
데이터에 위반 또는 마이크로 스파이크를 명확하게 나타내지 않는 CloudWatch 지표가 있는 경우 다음 해결 방법을 시도해 보십시오.
- 샤드 수를 늘린 다음 로그 레코드의 크기를 분할합니다.
- 생산자 출력과 일치하도록 Kinesis 데이터 스트림을 조정합니다.
- 생산자 로직에 지수 백오프 및 재시도 메커니즘을 사용합니다.
- 쓰기 속도가 낮아지도록 생산자에 대한 구성 설정을 변경합니다.
- 스트림의 용량과 일치하도록 생산자의 요청 속도 및 전송된 레코드 수(초당)를 제한합니다.
스트림 할당량에 대한 자세한 내용은 Kinesis Data Streams 할당량을 참조하십시오.