如何对 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>

