如何分析 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
:
内存分析
databend-query
和 databend-meta
可以选择性地使用 jemalloc
构建,
它提供了各种内存分析功能。
目前,它在 Mac 上无法工作,无论是 Intel 还是 Arm。
启用内存分析
- 使用
memory-profiling
特性构建databend-query
:
cargo build --bin databend-query --release --features memory-profiling
- 使用环境变量
MALLOC_CONF
启用内存分析来启动databend
:
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>