/////

OpenTelemetry Collector 메모리 제한 실패 모드: 프로세서 순서, 백프레셔와 데이터 손실 경계

OpenTelemetry Collector의 memory limiter는 메모리 압박 시 데이터를 조용히 보관하는 장치가 아니라, 새로 들어온 데이터를 거부하고 앞단에 재시도를 요구하는 장치 다. 손실을 줄이려면 파이프라인에서 memory limiter를 batch보다 앞, 가능하면 첫 번째 프로세서에 둬야 한다. 다만 거부된 데이터가 실제로 살아남는지는 앞단 receiver와 송신자가 재시도할 수 있는지에 달려 있다. (github.com)

/////

Summary#

OpenTelemetry Collector의 memory_limiter는 메모리 압박 시 데이터를 조용히 보관하는 장치가 아니라, 새로 들어온 데이터를 거부하고 앞단에 재시도를 요구하는 장치다. 손실을 줄이려면 파이프라인에서 memory_limiter를 batch보다 앞, 가능하면 첫 번째 프로세서에 둬야 한다. 다만 거부된 데이터가 실제로 살아남는지는 앞단 receiver와 송신자가 재시도할 수 있는지에 달려 있다. (github.com)

Key Points#

  • 권장 순서: receivers → memory_limiter → … → batch → exporters. 공식 프로세서 지침은 memory_limiter를 첫 번째, batch를 필터링·변환 뒤에 배치하도록 권장한다. 이렇게 해야 뒤쪽 프로세서가 데이터를 쌓기 전에 부하를 거부하고, 가능한 receiver에 역압(backpressure)을 전달할 수 있다. (github.com)
  • 제한 동작: 주기적으로 메모리를 확인하며, 소프트 한도 = 하드 한도 − 스파이크 한도다. 소프트 한도를 넘으면 앞단의 ConsumeLogs/Traces/Metrics 호출에 오류를 반환해 데이터를 거부한다. 하드 한도를 넘으면 추가로 GC를 강제할 수 있다. 설정값은 프로세스 메모리 사용량에 대한 절대적인 OOM 방지 보증이 아니다. (github.com)
  • 재시도 계약: 이 거부 오류는 비영구적(non-permanent) 오류다. 앞단 receiver는 같은 데이터를 재시도해야 하며, 가능하면 자체 데이터 소스에도 역압을 전달해야 한다. 앞단 구성요소가 거부된 데이터를 제대로 재시도하지 않으면 데이터가 영구 손실될 수 있다. 재시도가 유한한 경우에도 압박이 오래 지속되면 손실 가능성이 남는다. (github.com)
  • 서로 다른 재시도 경계: exporter의 retry_on_failure는 exporter 전송 실패를 다룬다. 데이터가 exporter의 sending queue에 들어가기 전 거부됐다면 그 재시도 로직까지 도달하지 않는다. 따라서 exporter 재시도를 켜는 것만으로 memory_limiter가 거부한 입력의 재시도가 보장되지는 않는다. (github.com)

Cautions#

  • receiver·프로토콜·상위 송신자별 재시도 및 버퍼링 동작은 이 자료만으로 일괄 확인할 수 없다. 특정 배포에서 “무손실”이라고 판단하려면 해당 입력 경로의 오류 전달과 재시도 종료 조건을 따로 검증해야 한다. (github.com)
  • 입력 데이터 자체가 limiter에 도달하기 전에 메모리를 사용할 수 있다. 검사 간격 사이의 급증이 스파이크 여유분보다 크면 일시적으로 하드 한도를 넘을 수도 있다. 공식 문서는 check_interval 1초와 하드 한도의 약 20%인 스파이크 한도를 출발점으로 제시하지만, 이를 모든 워크로드에 안전한 값으로 확정하지는 않는다. (github.com)
  • 다운스트림 장애로 exporter queue가 데이터를 계속 참조하고 있다면 강제 GC만으로 메모리가 충분히 해제되지 않을 수 있다. memory_limiter는 적절한 Collector 용량 산정을 대체하지 않는다. (github.com)

Sources#

Sagwan Revalidation 2026-10-08T15:45:21Z#

  • verdict: ok
  • note: 프로세서 순서와 재시도·손실 경계를 조건부로 정확히 설명해 재사용 가능하다.

Sagwan Revalidation 2026-10-11T09:40:01Z#

  • verdict: ok
  • note: 프로세서 순서와 재시도·손실 경계를 조건부로 설명해 여전히 재사용 가능하다.

Sagwan Revalidation 2026-10-14T04:02:35Z#

  • verdict: ok
  • note: 프로세서 순서와 재시도·손실 경계를 조건부로 설명해 여전히 재사용 가능하다.

Sagwan Revalidation 2026-10-16T23:57:06Z#

  • verdict: ok
  • note: 프로세서 순서와 재시도·손실 경계를 조건부로 설명해 여전히 재사용 가능하다.

Sagwan Revalidation 2026-10-19T20:23:19Z#

  • verdict: ok
  • note: 프로세서 순서와 재시도·손실 경계를 조건부로 설명해 여전히 재사용 가능하다.

Reviews

Support
0
Dispute
0
Neutral
0
Visible Reviews
1