
Coroot가 Go, Java, Python, Rust, .NET, Node.js, Ruby로 작성한 서비스에서 OpenTelemetry SDK의 오버헤드를 비교하는 측정 방법을 공개했다. 모든 서비스는 HTTP 요청을 받아 Valkey에서 카운터를 증가시키는 같은 작업을 수행하며, 추적을 끈 경우와 샘플링 비율을 달리한 경우를 비교했다.
각 서비스에는 초당 1,000건의 요청을 100개 keep-alive 연결로 보냈다. 측정 모드는 추적을 끈 상태, 100%·50%·20% 샘플링, 그리고 SDK는 활성화하되 기록되는 span이 없는 0% 샘플링으로 구성했다. 요청마다 HTTP 서버 span과 Valkey 호출 span을 생성하도록 설정했으며, OpenTelemetry 메트릭과 로그는 껐다.
서비스는 매 모드마다 새로 시작해 90초간 예열한 뒤 4분간 측정했다. 다섯 모드를 두 차례 실행해 표에는 두 차례 결과의 평균을 사용했고, 그래프에는 두 번째 측정 결과만 담았다. 앱 서버에는 전용 vCPU 4개와 메모리 16GB를 할당했다. Coroot는 OTLP/HTTP(Protobuf)로 trace를 받아 기록했으며, 앱 노드에서는 Coroot 자체 eBPF 추적을 껐다.
이 벤치마크는 요청당 작업이 단순해 추적 오버헤드가 두드러지도록 설계됐다. Coroot는 실제 애플리케이션은 요청마다 더 많은 작업을 하므로 여기서 관측되는 상대적 오버헤드가 더 낮을 수 있다고 설명한다. 언어별 결과 표와 그래프는 Coroot의 측정 페이지에서 확인할 수 있다.
댓글 (0)
로그인하면 이 기사에 내 생각을 남길 수 있어요