스낵 3줄 요약
- Cloudflare가 운영 중인 Workers와 Durable Objects의 CPU·메모리 프로파일을 필요할 때 수집하는 기능을 도입했습니다.
- 수집 결과를 인터랙티브 플레임그래프로 살펴보고 프로파일 파일을 내려받을 수 있습니다.
- 직접 수집을 시작해야 하며, 트래픽이 적으면 프로파일을 얻기 어렵습니다.
Cloudflare가 2026년 10월 9일, 실제 서비스에서 실행 중인 Workers와 Durable Objects의 온디맨드 CPU·메모리 프로파일링을 선보였습니다. 로그나 전체 사용량 지표만으로 원인을 찾기 어려울 때, 어느 함수가 CPU 시간을 쓰거나 메모리를 할당하는지 살펴볼 수 있습니다.

스낵걸즈 한마디
AIKO: 전체 사용량만 보면 제 첫 질문은 ‘어느 함수죠?’입니다. 원인 후보에 이름이 붙으면 제 잔소리도 구체적이겠군요.
네아: 비활성화한 줄 알았던 Prometheus 코드가 메모리를 계속 썼다는 Cloudflare 사례가 눈에 남네요. 어떤 실행 경로가 남아 있었는지 더 읽어 보고 싶어요.
분석할 버전과 수집 구간 고르기
수집은 Cloudflare 대시보드나 cf CLI에서 시작할 수 있습니다. 대시보드에서는 Build → Compute → Workers & Pages에서 Worker를 고른 뒤, Observability 탭의 메뉴에서 Flamegraph를 선택합니다.
분석할 Worker 버전과 CPU 또는 메모리 프로파일 유형, 수집 시간을 정하고 Capture Profile을 누릅니다. 지정한 시간은 샘플을 모으는 구간을 뜻하며, 전체 작업이 그 시간 안에 끝난다는 보장은 아닙니다.
TypeScript로 작성한 프로젝트라면 소스 맵을 활성화해 두는 편이 좋습니다. 소스 맵이 없으면 프로파일에 난독화된 함수 이름이 표시돼 해당 코드를 찾기 어려울 수 있습니다.

넓은 사각형에서 무거운 함수 찾기
플레임그래프의 사각형은 함수 호출을 나타내며, 너비는 선택한 유형에 따라 CPU 시간이나 메모리 할당 비중을 보여줍니다. 클릭해 특정 함수에 집중하거나 마우스를 올려 세부 정보를 볼 수 있고, 표 보기에서는 자주 나타나는 함수를 살펴볼 수 있습니다. 프로파일 파일을 내려받아 별도로 분석할 수도 있습니다.
Cloudflare는 내부 R2 바인딩 Worker에서 genericR2JsonReplacer가 JSON 구조를 중복 순회하는 문제를 찾았다고 설명했습니다. 회사에 따르면 중복 작업을 제거한 뒤 해당 함수가 2.7배 빨라졌으며, 이는 Worker 전체의 속도 향상 수치는 아닙니다.
일반 Worker를 분석할 때는 실행 중인 격리 환경(isolate) 하나가 임의로 선택됩니다. Durable Objects는 이름으로 특정 객체를 지정할 수 있어, 그 객체가 실제로 실행 중인 환경의 프로파일을 받을 수 있습니다.

트래픽이 적으면 수집이 어려워집니다
수집 대상으로는 배포돼 실제 요청을 처리하는 버전을 골라야 합니다. 프로파일을 만들기 위해 새 격리 환경을 띄우지는 않으므로, 트래픽이 너무 적으면 수집이 어려울 수 있습니다.
메모리 프로파일은 수집 구간에 발생한 할당만 보여줍니다. 수집 전에 발생한 할당이나 메모리에 남아 있는 객체 전체를 보여주지는 않으며, 애플리케이션 시작 시점의 메모리 할당도 놓칠 수 있습니다.
지금은 개발자가 직접 수집을 시작해야 하므로, 드물게 발생하는 문제의 순간을 놓칠 수 있습니다. Cloudflare는 이런 순간을 포착하기 위해 샘플을 자동으로 모으는 지속적 프로파일링을 개발 중이라고 밝혔으며, 아직 출시된 기능은 아닙니다.
출처 및 확인일: 2026년 10월 10일

댓글
0로그인 없이 남길 수 있어요. 작성한 브라우저에서 수정·삭제할 수 있어요.
전체 댓글 0
한국어 · English · 日本語아직 댓글이 없어요. 첫 이야기를 남겨 주세요.