how-to-profiling
CPU profiling
go tool pprof -http="0.0.0.0:8081" http://localhost:8080/debug/pprof/profile?seconds=30
打开 <your-ip>:8081
并在站点标题的 VIEW 菜单中选择 Flame Graph
:

Memory profiling
databend-query
和 databend-meta
可以选择使用 jemalloc
构建,
它提供了各种内存 profiling 功能。
目前,它在 Mac 上不起作用,无论 intel 还是 Arm。
启用内存 profiling
- 构建启用
memory-profiling
功能的databend-query
:
cargo build --bin databend-query --release --features memory-profiling
- 启动
databend
,使用环境变量MALLOC_CONF
启用内存 profiling:
MALLOC_CONF=prof:true,lg_prof_interval:30 ./target/release/databend-query
生成堆 profile
在 pdf
中生成一个调用图,说明此间隔期间的内存分配:
jeprof --pdf ./target/release/databend-query heap.prof > heap.pdf

Fast 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>