목록 보기
Apache Flink 어플리케이션의 End-to-End Latency 병목 찾아내기
백엔드

Apache Flink 어플리케이션의 End-to-End Latency 병목 찾아내기

하이퍼커넥트
하이퍼커넥트
2025년 3월 28일

두줄요약

Flink 어플리케이션의 end-to-end latency 병목을 찾기 위해 operator 지표와 flame graph를 활용하는 방법을 소개했습니다. 처리 시간과 처리 외 시간을 분리해 관측하고, 병목 유형별로 다른 개선 방향을 제시했습니다.

문제 상황

  • Flink 어플리케이션의 end-to-end latency가 사용자 만족도에 직접 영향을 주는 상황
  • 트래픽 증가, 경험 개선, 비용 절감 요구로 지속적인 성능 튜닝 필요
  • 병목 구간을 정확히 찾지 못하면 개선 방향을 잘못 잡기 쉬운 상태

원인 분석

  • 기존 latency 지표가 처리 시간만 포함해 처리 외 시간을 놓치는 문제
  • 처리 시간과 처리 외 시간의 병목 원인이 서로 달라 해결 방식이 달라지는 구조
  • LatencyMarker는 실서버 사용성, 정확도, 세부 분리 측면에서 한계 존재

해결 방법

  • operator 단위로 처리 시간과 처리 외 시간을 별도 히스토그램으로 수집
  • 병목 operator를 찾은 뒤 operator flame graph로 내부 실행 구간을 프로파일링
  • 처리 시간 병목, 네트워크 I/O 병목, Flink 내부 코드 병목으로 나눠 점검

주의할 점

  • flame graph는 기본 비활성화이며 관측 시 성능 저하가 발생할 수 있음
  • 실서버보다 운영과 유사한 테스트 환경에서 활용하는 방식이 적합함
  • 수집 중인 지표가 실제 의미와 일치하는지 코드 레벨에서 재확인 필요

적용해볼 점

  • end-to-end latency를 처리 시간과 처리 외 시간으로 쪼개어 관측
  • 느린 operator를 먼저 특정한 뒤 콜 스택과 코드 레벨을 함께 점검
  • Kryo serializer처럼 내부 병목이 보이면 serializer나 네트워크 설정을 검토

댓글 0

댓글을 작성하려면 로그인이 필요합니다.

댓글을 불러오는 중...