AI Briefing

Cloudflare, Workers 및 Durable Objects용 on-demand 프로파일링 기능 출시

·2026.10.09 22:00

핵심 내용

Cloudflare가 Workers와 Durable Objects용 on-demand 프로파일링 기능을 출시했다.

자세히 보기

Cloudflare가 Workers와 Durable Objects에 대한 on-demand CPU 및 메모리 프로파일링 기능을 지원한다고 발표했다. 개발자는 Workers Observability 페이지나 CLI를 통해 활성 프로덕션 인스턴스의 프로파일을 요청할 수 있으며, 결과를 인터랙티브 flamegraphs로 시각화해 리소스를 소비하는 정확한 함수를 파악할 수 있다.

작동 방식

프로파일링은 Cloudflare Dashboard나 cf CLI를 통해 시작한다. 사용자가 특정 Worker 버전과 기간을 선택하고 Capture Profile을 클릭하면, flamegraph가 함수 호출을 직사각형으로 표시하며 너비는 CPU 시간이나 메모리 사용량에 비례한다. TypeScript 프로젝트에서는 함수 이름이 난독화되는 것을 방지하기 위해 source maps를 활성화하는 것이 권장된다.

이 아키텍처는 Workers의 분산 특성을 고려한다. 요청이 가장 가까운 데이터 센터로 라우팅되고 Workers가 여러 금속(metals)에 복제되므로, 시스템은 먼저 올바른 isolate를 식별해야 한다. 상태가 있고 이름이 지정된 Durable Objects의 경우 런타임은 해당 actor를 소유한 특정 metal로 요청을 라우팅한다. 프로파일러는 생명주기 작업 중에만 isolate lock을 유지하므로 샘플링 중에도 정상적인 요청 실행이 계속된다.

실제 영향

Cloudflare 팀은 이 도구를 사용해 성능을 최적화하고 메모리 문제를 해결했다. 한 사례에서 R2 binding Worker의 CPU 프로파일링 결과 genericR2JsonReplacer가 JSON 트리를 불필요하게 재귀적으로 순회하는 것으로 드러났다. 이 중복 작업을 수정하자 해당 함수가 2.7배 빨라졌다. 다른 최적화에서는 CPU 시간의 **1%**를 차지하는 무거운 metrics 호출을 캐싱했다.

메모리 문제의 경우, P999에서 128 MB 제한 대비 133 MB로 빈번한 Exceeded Memory 오류가 발생한 Worker를 pprof로 프로파일링했다. 분석 결과 부분적으로 비활성화된 Prometheus 코드가 할당의 **66.7%**를 차지했다. 이 코드 경로를 제거하자 P999 메모리 사용량이 118 MB로 줄어들어 필요한 여유 공간이 확보되었다.

제한 사항 및 향후 계획

현재 제한 사항에는 명시적인 세션 시작이 필요해 일시적인 문제를 놓칠 수 있다는 점과 Worker 시작 시 발생하는 할당을 캡처할 수 없다는 점이 포함된다. Cloudflare는 이러한 공백을 해결하고 희귀한 이벤트 탐색을 쉽게 하기 위해 샘플을 자동으로 캡처하는 continuous profiling을 개발 중이다.

이 한국어 요약은 AI가 자동으로 만들었습니다. 원문의 주장과 맥락은 원문에서 확인해 주세요. 저작권은 원저작자에게 있습니다.

AI 처리 방식을 확인하거나, 요약 오류와 출처 표기 문제, 삭제 요청을 문의 · 건의로 알려주세요.