如何对 Databend 进行性能分析
CPU 性能分析
go tool pprof -http="0.0.0.0:8081" http://localhost:8080/debug/pprof/profile?seconds=30
打开 <your-ip>:8081
,并从网站头部的 VIEW 菜单中选择 Flame Graph
:

查询级别的 CPU 性能分析
EXPLAIN PERF <statement>
也可用于 CPU 性能分析,它专注于特定查询,并从其他节点收集 CPU 分析数据,以帮助分析查询性能。更多细节请查阅 EXPLAIN PERF。
内存性能分析
databend-query
和 databend-meta
可以选择性地使用 jemalloc
进行构建,jemalloc
提供了多种内存性能分析功能。
目前,它在 Mac(无论是 Intel 还是 Arm 芯片)上无法工作。
启用内存性能分析
- 启用
memory-profiling
功能来构建databend-query
:
cargo build --bin databend-query --release --features memory-profiling
- 启动
databend
,使用环境变量MALLOC_CONF
来启用内存性能分析:
MALLOC_CONF=prof:true,lg_prof_interval:30 ./target/release/databend-query
生成堆分析报告
生成一个 pdf
格式的调用图,展示此时间间隔内的内存分配情况:
jeprof --pdf ./target/release/databend-query heap.prof > heap.pdf

快速 jeprof
对于大型堆分析,jeprof 非常慢,瓶颈在于 addr2line
。如果你想从 30 分钟 加速到 3 秒,请使用:
git clone https://github.com/gimli-rs/addr2line
cd addr2line
cargo b --examples -r
cp ./target/release/examples/addr2line <your-addr2line-find-with-whereis-addr2line>