본문으로 건너뛰기
최종 수정: 에

FE Profiler로 플레임 그래프 생성

소개​

Apache Doris 2.1.4 이상 버전에서는 FE 배포 디렉터리 ${DORIS_FE_HOME}/bin에 profile_fe.sh 스크립트가 포함되어 있습니다. 이 스크립트는 async-profiler를 사용해 FE의 플레임 그래프를 생성하므로 FE 성능 병목을 찾을 수 있습니다.

지원 운영 체제​

운영 체제지원 여부
Linux지원
macOS지원
Windows아직 지원하지 않음

사용 방법​

1. profile_fe.sh 실행​

# Profile the FE for 10 seconds by default and generate a flame graph
${DORIS_FE_HOME}/bin/profile_fe.sh

# Profile the FE for 30 seconds and generate a flame graph
PROFILE_SECONDS=30 ${DORIS_FE_HOME}/bin/profile_fe.sh
환경 변수의미기본값
PROFILE_SECONDSasync-profiler 샘플링 시간(초)10

2. 워크로드 실행​

명령을 실행하면 async-profiler가 지정된 시간 동안 샘플링을 계속합니다. 이 시간 동안 대상 쿼리를 FE에 반복해서 전송하여 async-profiler가 대상 코드 경로의 스택 프레임을 수집할 수 있도록 하세요.

3. 플레임 그래프 확인​

샘플링이 끝나면 스크립트가 ${DORIS_FE_HOME}/log 디렉터리에 HTML 플레임 그래프 파일을 생성합니다. FE 성능 병목은 보통 "평탄한 구간"(높이가 낮고 폭이 넓은 형태)으로 나타납니다. 해당 스택 프레임에 대응하는 코드를 최적화하세요.

플레임 그래프 예시:

이전 FE 버전에서 async-profiler 사용​

Doris 2.1.4 이전 버전에서는 다음 두 파일을 수동으로 다운로드하세요.

  1. ap-loader-all-3.0-8.jar를 ${DORIS_FE_HOME}/lib 디렉터리에 다운로드합니다.
  2. profile_fe.sh를 ${DORIS_FE_HOME}/bin 디렉터리에 다운로드합니다.
  3. profile_fe.sh를 실행해 플레임 그래프를 생성합니다.

자주 묻는 질문​

질문: 샘플링 중 대상 함수의 스택 프레임이 플레임 그래프에 나타나지 않습니다.

대개 샘플링 중에 해당 쿼리 경로가 실행되지 않았기 때문입니다. profile_fe.sh가 실행되는 동안 대상 SQL을 직접 또는 스크립트로 반복 실행하거나, PROFILE_SECONDS=30으로 샘플링 시간을 늘리세요.

질문: FE Profiler와 Arthas 중 무엇을 선택해야 하나요?

  • profile_fe.sh: 샘플링 시간이 고정된 스크립트 기반 방식으로, 일회성 플레임 그래프를 빠르게 생성하는 데 적합합니다.
  • Arthas: trace, watch 등을 통해 실행 중 동작을 더 세밀하게 관찰할 수 있는 대화형 터미널로, 심층 분석에 적합합니다.