Amazon Kinesis Data Streams용 Openflow 커넥터 성능 튜닝

Amazon Kinesis Data Streams용 Openflow 커넥터 성능 튜닝

Kinesis용 Openflow 커넥터를 최적의 성능으로 구성할 때 수집 처리량과 지연 시간에 영향을 주는 다음 핵심 요소들을 고려하세요.

출처: Snowflake 문서

본문

Flowfile 크기

최적의 성능을 위해 flowfile은 개별 소형 메시지를 담기보다 1-10MB 범위가 좋습니다. flowfile이 클수록 개별 파일 작업 수가 줄어 처리 오버헤드를 낮추고 처리량을 높입니다. 기본 설정이면 flowfile이 적정 크기 범위를 유지해야 합니다. 처리량이 낮을 때는 작은 flowfile이 예상됩니다.

높은 처리량인데 작은 flowfile이 관찰된다면 Snowflake 지원팀에 문의하세요.

네트워크 및 인프라

네트워크 지연 시간

Kinesis와 Openflow 사이의 지연 시간이 짧을수록 전체 성능이 좋아집니다. Kinesis 스트림과 Openflow를 같은 클라우드 서비스 공급자(CSP) 리전에 두는 것을 강력히 권장합니다.

노드 크기 권장 사항

다음 표는 예상 워크로드 특성에 따른 구성 권장 사항을 제공합니다. 처리량 값은 상대적이며 소스 시스템 구성, 토픽·스트림 크기, 데이터 형식 및 기타 요인에 크게 의존합니다.

노드 크기 권장 용도 메시지 레이트 용량
Small (S) 낮음~중간 처리량 시나리오 노드당 최대 27 MB/s
Medium (M) 중간~높음 처리량 시나리오 노드당 최대 135 MB/s
Large (L) 높음 처리량 시나리오 노드당 135 MB/s 초과, 최대 310 MB/s

성능 최적화 모범 사례

Max Records Per Request 튜닝

ConsumeKinesis 프로세서가 SHARED_THROUGHPUT 소비자 유형을 사용할 때, Max Records Per Request 속성은 프로세서가 단일 요청에서 Kinesis에서 가져오는 최대 레코드 수를 제어합니다. 수집 처리량이 낮은데 Openflow, Snowflake, 네트워크에서 뚜렷한 병목을 찾지 못했다면 이 값이 워크로드에 비해 너무 낮은 것일 수 있습니다.

대부분의 워크로드에서는 각 요청이 약 1MB의 데이터를 가져오도록 Max Records Per Request를 설정하는 것에서 시작하세요. 평균 Kinesis 레코드 크기로 1MB를 나누어 값을 추정하세요.

다음 표는 일반적인 평균 레코드 크기에 대한 시작 값 예시를 보여줍니다.

평균 레코드 크기 근사 계산 Max Records Per Request
1 KB 1 MB / 1 KB 1000
200 bytes 1 MB / 200 bytes 5000
5 KB 1 MB / 5 KB 200

값을 변경한 뒤 소비자 lag, 처리량, 런타임 리소스 사용량을 모니터링하세요. Kinesis 소비가 여전히 병목이라면 값을 점진적으로 늘리세요.

프로세서 동시 작업 수 조정

프로세서 성능을 최적화하기 위해 ConsumeKinesis와 PublishSnowpipeStreaming 프로세서의 동시 작업 수를 조정할 수 있습니다. 동시 작업은 프로세서가 여러 스레드를 동시에 실행하게 해, 대용량 시나리오의 처리량을 높입니다.

프로세서의 동시 작업 수를 조정하려면 다음을 수행하세요.

  • Openflow 캔버스에서 프로세서를 마우스 오른쪽 버튼으로 클릭합니다.
  • 컨텍스트 메뉴에서 Configure를 선택합니다.
  • Scheduling 탭으로 이동합니다.
  • Concurrent tasks 필드에 원하는 동시 작업 수를 입력합니다.
  • Apply를 선택해 구성을 저장합니다.
권장 동시 작업 설정
노드 크기 ConsumeKinesis 작업 수 PublishSnowpipeStreaming 작업 수
Small (S) 2 1
Medium (M) 4 2
Large (L) 6 3
중요한 고려사항
  • 메모리 사용량: 각 동시 작업은 추가 메모리를 소비합니다. 동시 작업을 늘릴 때 JVM 힙 사용량을 모니터링하세요.
  • 보수적으로 시작: 낮은 값에서 시작해 성능 메트릭을 모니터링하면서 점진적으로 늘리세요.

일반적인 성능 병목 문제 해결

소비자 lag 증가 또는 Snowflake 수집 병목

Kinesis 소비자 lag가 증가하거나 Snowflake 수집이 느리다면 다음을 수행하세요.

  • Openflow와 Kinesis 사이의 네트워크 연결과 대역폭을 확인하세요.
  • PublishSnowpipeStreaming 프로세서 앞의 큐가 증가하는지 관찰하세요.
    • 증가한다면 프로세서 동시 작업 수 조정에 제시된 범위 제한 내에서 PublishSnowpipeStreaming 프로세서의 동시 작업을 추가하는 것을 고려하세요.
    • 증가하지 않는다면 동일한 범위 제한 내에서 ConsumeKinesis 프로세서의 동시 작업을 추가하는 것을 고려하세요.
  • 더 큰 노드 유형을 사용하는 것을 고려하세요.
  • 런타임의 노드 수를 늘리는 것을 고려하세요. 런타임에서 커넥터를 중지하고, 노드 최소/최대 크기 숫자를 변경한 뒤 커넥터를 다시 시작하면 됩니다.

메모리 압박

메모리 관련 문제가 발생하면:

  • PublishSnowpipeStreaming 프로세서의 File Fragment Size와 File Fragment Count 파라미터를 변경해 배치 크기를 줄여 메모리 점유를 낮추세요.
  • ConsumeKinesis 프로세서의 동시 작업 수를 줄이세요.
  • 더 큰 노드 유형을 사용하는 것을 고려하세요.

네트워크 지연 시간 문제

높은 지연 시간이 발생하면:

  • Openflow와 외부 시스템 사이의 네트워크 구성을 확인하세요.
  • Kinesis 스트림과 같은 리전에 Openflow를 배포하는 것을 고려하세요.
  • 낮은 처리량으로 작업 중이라면 ConsumeKinesis 프로세서의 Max Batch Duration을 낮추는 것을 고려하세요.

더 알아보기 (Learn more)