성능 모범 사례 - Managed Service for Apache Flink

Amazon Managed Service for Apache Flink는 이전에 Amazon Kinesis Data Analytics for Apache Flink로 알려졌습니다.

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

성능 모범 사례

이 섹션은 성능을 위한 애플리케이션을 설계할 때 특별히 고려해야 할 사항에 대해 설명합니다.

적절한 크기 조정

이 섹션은 애플리케이션 수준 및 운영자 수준 조정 관리에 대한 정보가 포함되어 있습니다.

애플리케이션 스케일링을 적절하게 관리

자동 크기 조정을 사용하여 애플리케이션 활동의 예상치 못한 급증을 처리할 수 있습니다. 다음 기준이 충족되면 애플리케이션의 KPU가 자동으로 증가합니다.

  • 애플리케이션에 자동 크기 조정이 활성화되어 있습니다.

  • 15분 동안 CPU 사용량이 75% 이상을 유지합니다.

자동 크기 조정이 활성화되어 있지만 CPU 사용량이 이 임계값을 유지하지 않는 경우 애플리케이션은 KPU를 스케일 업하지 않습니다. CPU 사용량이 이 임계값을 충족하지 못하거나 heapMemoryUtilization와(과) 같은 다른 사용량 지표에서 급증하는 경우 애플리케이션이 활동 급증을 처리할 수 있도록 수동으로 스케일링을 늘리세요.

참고

애플리케이션이 Auto Scaling을 통해 더 많은 리소스를 자동으로 추가한 경우 일정 기간 동안 사용하지 않으면 새 리소스를 릴리스합니다. 리소스 다운스케일링은 일시적으로 성능에 영향을 미칩니다.

스케일링에 대한 자세한 내용은 스케일링을(를) 참조하세요.

연산자 스케일링을 적절하게 관리

애플리케이션의 워크로드가 작업자 프로세스에 균등하게 분배되고 애플리케이션의 운영자가 안정적이고 성능을 유지하는 데 필요한 시스템 리소스를 보유하고 있는지 확인하여 애플리케이션의 성능을 개선할 수 있습니다.

parallelism 설정을 사용하여 애플리케이션 코드의 각 연산자에 대한 병렬성을 설정할 수 있습니다. 연산자의 병렬성을 설정하지 않으면 애플리케이션 수준의 병렬성 설정이 사용됩니다. 애플리케이션 수준의 병렬성 처리 설정을 사용하는 연산자는 애플리케이션에 사용할 수 있는 모든 시스템 리소스를 사용할 수 있으므로 애플리케이션이 불안정해질 수 있습니다.

각 연산자의 병렬성을 가장 잘 결정하려면 애플리케이션의 다른 연산자와 비교하여 상대적인 리소스 요구 사항을 고려하세요. 리소스를 많이 사용하는 연산자를 리소스 사용량이 적은 연산자보다 높은 연산자 병렬성 설정으로 설정하세요.

애플리케이션의 전체 연산자 병렬성은 애플리케이션의 모든 연산자에 대한 병렬성의 합계입니다. 애플리케이션에 사용할 수 있는 전체 작업 슬롯과 가장 적합한 비율을 결정하여 애플리케이션의 전체 연산자 병렬성을 조정합니다. 작업 슬롯에 대한 전체 연산자 병렬성의 일반적인 안정적인 비율은 4:1 입니다. 즉, 애플리케이션에는 사용 가능한 연산자 하위 작업 4개당 작업 슬롯 1개가 있습니다. 리소스를 많이 사용하는 연산자가 있는 애플리케이션에는 3:1 또는 2:1 의 비율이 필요할 수 있지만, 리소스를 덜 사용하는 애플리케이션에서는 비율이 10:1 이면 안정적일 수 있습니다.

런타임 속성을(를) 사용하여 연산자의 비율을 설정할 수 있으므로 애플리케이션 코드를 컴파일하고 업로드하지 않고도 연산자의 병렬성을 조정할 수 있습니다.

다음 코드 예제는 연산자 병렬성을 현재 애플리케이션 병렬성의 조정 가능한 비율로 설정하는 방법을 보여줍니다.

Map<String, Properties> applicationProperties = KinesisAnalyticsRuntime.getApplicationProperties(); operatorParallelism = StreamExecutionEnvironment.getParallelism() / Integer.getInteger( applicationProperties.get("OperatorProperties").getProperty("MyOperatorParallelismRatio") );

하위 작업, 작업 슬롯 및 기타 애플리케이션 리소스에 대한 자세한 내용은 애플리케이션 리소스을(를) 참조하세요.

애플리케이션의 작업자 프로세스 전반에 걸친 워크로드 분배를 제어하려면 Parallelism 설정과 KeyBy 파티션 방법을 사용하세요. 자세한 내용은 Apache Flink 설명서에서 다음 주제를 참조하세요.

외부 종속성 리소스 사용량 모니터링

대상(예: Kinesis Streams, Kinesis Data Firehose, DynamoDB 또는 OpenSearch Service) 에 성능 병목 현상이 있는 경우 애플리케이션에 역압이 발생합니다. 외부 종속성이 애플리케이션 처리량에 맞게 적절하게 프로비저닝되었는지 확인하세요.

참고

다른 서비스에 장애가 발생하면 애플리케이션에 장애가 발생할 수 있습니다. 애플리케이션에서 장애가 발생하는 경우 대상 서비스의 CloudWatch 로그에서 장애가 있는지 확인하세요.

Apache Flink 애플리케이션을 로컬에서 실행

메모리 문제를 해결하려면 로컬 Flink 설치에서 애플리케이션을 실행할 수 있습니다. 이렇게 하면 Managed Service for Apache Flink에서 애플리케이션을 실행할 때 사용할 수 없는 스택 트레이스 및 힙 덤프와 같은 디버깅 도구에 액세스할 수 있습니다.

로컬 Flink 설치를 만드는 방법에 대한 자세한 내용은 Apache Flink 설명서로컬 설치 자습서를 참조하세요.