Arthas를 활용한 FE 성능 분석
소개
Apache Doris 3.1.0 이상 버전에서는 FE 배포 디렉터리 ${DORIS_FE_HOME}/arthas에 Arthas 도구(버전 4.0.5)가 포함되어 있습니다. Arthas를 사용하면 온라인으로 flame graph를 생성하고, 함수 호출 경로를 추적하고, 함수 실행 시간을 측정하고, 함수 입력과 반환값을 관찰할 수 있어 FE의 런타임 문제를 더 쉽게 파악할 수 있습니다.
명령어에 대한 자세한 설명은 Arthas 공식 문서를 참고하세요.
지원 시스템
| 시스템 | 지원 여부 |
|---|---|
| Linux | 지원 |
| macOS | 지원 |
| Windows | 아직 지원하지 않음 |
이전 FE 버전에서 수동 설치
Doris 3.1.0 이전 버전에서는 Arthas를 수동으로 다운로드하세요.
wget https://github.com/alibaba/arthas/releases/download/arthas-all-4.0.5/arthas-bin.zip
unzip arthas-bin.zip -o ${DORIS_FE_HOME}/arthas
flame graph 생성
-
${DORIS_FE_HOME}/arthas/as.sh스크립트를 실행하고 프로세스 목록에서DorisFE프로세스의 번호를 선택하세요.bash ./as.sh
Arthas script version: 4.0.5
Found existing java process, please choose one and input the serial number of the process, eg : 1. Then hit ENTER.
* [1]: 75123 com.intellij.idea.Main
[2]: 77285 org.apache.doris.DorisFE
[3]: 76901 DorisBE
[4]: 6776 org.jetbrains.jps.cmdline.Launcher
[5]: 76265 DorisBE
[6]: 80527 org.jetbrains.jps.cmdline.Launcher
2 -
Arthas 명령줄에서 프로파일링을 시작하세요.
[arthas@77285]$ profiler start
Profiling started -
프로파일링을 중지하고 HTML 형식의 flame graph를 생성하세요.
[arthas@77285]$ profiler stop --format html
OK
profiler output file: <DORIS_FE_HOME>/arthas-output/20250627-115104.html출력 파일은
${DORIS_FE_HOME}/arthas-output/에 저장됩니다. 브라우저에서 파일을 열어 실행 비중이 높은 함수를 분석하세요.
자주 사용하는 Arthas 명령어 요약
| 명령어 | 용도 |
|---|---|
profiler start / profiler stop --format html | CPU flame graph 수집 |
trace <class> <method> | 함수 호출 경로와 실행 시간 추적 |
watch <class> <method> | 함수 입력과 반환값 관찰 |
thread | JVM 스레드 상태 확인 |
dashboard | 전반적인 JVM 런타임 지표를 실시간으로 확인 |
자주 묻는 질문
질문: DorisFE 프로세스가 as.sh 실행 시 표시되지 않습니다.
FE 프로세스가 시작되었는지, as.sh가 FE와 동일한 머신에서 실행되는지 확인하세요. 프로세스 목록에는 현재 사용자가 볼 수 있는 JVM이 표시됩니다.
질문: 생성된 flame graph가 비어 있거나 샘플이 너무 적습니다.
프로파일링 중 FE에서 쿼리나 요청이 지속적으로 처리되고 있는지 확인하세요. profiler start와 profiler stop 사이의 간격을 늘릴 수 있습니다.