백프레셔 모니터링

백프레셔 모니터링 (Monitoring Back Pressure)

Flink의 웹 인터페이스는 실행 중인 작업의 백프레셔(back pressure) 동작을 모니터링하는 탭을 제공합니다. 작업의 병렬 인스턴스가 백프레셔, 유휴(idle), 바쁨(busy) 상태를 나타내는 메트릭을 통해 병목 지점을 찾을 수 있습니다.

출처: 문서

본문

Flink의 웹 인터페이스는 실행 중인 작업의 백프레셔 동작을 모니터링하는 탭을 제공합니다.

백프레셔 (Back Pressure)

작업에 대해 백프레셔 경고(예: High)가 보이면, 이는 다운스트림 연산자가 소비할 수 있는 것보다 데이터를 더 빨리 생산하고 있다는 뜻입니다. 작업의 레코드는 하류(downstream, 예: 소스에서 싱크로)로 흐르며 백프레셔는 반대 방향, 즉 상류(upstream)로 전파됩니다.

간단한 Source -> Sink 작업을 예로 들어보겠습니다. Source에 경고가 보이면 SinkSource가 생산하는 것보다 데이터를 더 느리게 소비하고 있다는 뜻입니다. Sink가 상류 연산자 Source에 백프레셔를 가하고 있는 것입니다.

작업 성능 메트릭 (Task performance metrics)

작업의 각 병렬 인스턴스(서브태스크)는 세 가지 메트릭 그룹을 노출합니다:

  • backPressuredTimeMsPerSecond, 서브태스크가 백프레셔를 받는 데 보낸 시간
  • idleTimeMsPerSecond, 서브태스크가 처리할 것을 기다리며 보낸 시간
  • busyTimeMsPerSecond, 서브태스크가 실제 작업을 하느라 바쁘게 보낸 시간

어떤 시점이든 이 세 메트릭은 대략 1000ms에 합산됩니다.

이 메트릭들은 몇 초마다 갱신되며, 보고되는 값은 서브태스크가 지난 몇 초 동안 백프레셔(또는 유휴 또는 바쁨) 상태였던 평균 시간을 나타냅니다. 작업의 부하가 변동한다면 이 점을 기억하세요. 예를 들어, 부하가 50%로 일정한 서브태스크와 매초 완전 부하와 유휴를 번갈아 하는 서브태스크는 둘 다 busyTimeMsPerSecond 값이 동일하게 500ms 근처가 됩니다.

내부적으로 백프레셔는 출력 버퍼의 가용성에 기반하여 판단됩니다. 작업에 사용 가능한 출력 버퍼가 없으면 그 작업은 백프레셔를 받는 것으로 간주됩니다. 반면 유휴(idleness)는 입력이 사용 가능한지 여부로 결정됩니다.

예시 (Example)

WebUI는 모든 서브태스크의 백프레셔와 바쁨 메트릭의 최대 값을 집계하여 JobGraph 안에 그 집계 값을 표시합니다. 원시 값을 표시하는 것 외에도 작업은 조사를 더 쉽게 하기 위해 색상으로 구분됩니다.

유휴 작업은 파란색, 완전히 백프레셔를 받은 작업은 검은색, 완전히 바쁜 작업은 빨간색입니다. 그 사이의 모든 값은 세 가지 색 사이의 음영으로 표현됩니다.

백프레셔 상태 (Back Pressure Status)

작업 개요 옆의 Back Pressure 탭에서 더 자세한 메트릭을 찾을 수 있습니다.

상태가 OK인 서브태스크는 백프레셔 징후가 없습니다. 반대로 HIGH는 서브태스크가 백프레셔를 받고 있다는 뜻입니다. 상태는 다음과 같이 정의됩니다:

  • OK: 0% <= 백프레셔 <= 10%
  • LOW: 10% < 백프레셔 <= 50%
  • HIGH: 50% < 백프레셔 <= 100%

추가로, 각 서브태스크가 백프레셔, 유휴, 바쁨 상태였던 시간의 백분율을 찾을 수 있습니다.

더 알아보기 (Learn more)