Databend 性能剖析方法與工具
Databend 整合了一些性能剖析工具,可以方便進(jìn)行深入分析。本文將會(huì)介紹如何進(jìn)行 CPU / Memory Profiling。CPU Profiling
CPU Profiling
CPU 分析,按照一定的頻率采集所監(jiān)聽(tīng)的應(yīng)用程序 CPU(含寄存器)的使用情況,可確定應(yīng)用程序在主動(dòng)消耗 CPU 周期時(shí)花費(fèi)時(shí)間的位置。
pprof 是 Google 開(kāi)源的代碼性能分析工具,可以直接生成代碼分析報(bào)告,不僅支持通過(guò)命令式交互查看,也便于可視化展示。Databend 使用?pprof-rs[1]?完成對(duì) pprof 工具的支持。
必備工作:
CPU 分析屬于 Databend 的內(nèi)置能力,部署一個(gè) Databend 實(shí)例即可開(kāi)始使用。
命令行交互:
若 http 端口為 8080 ,采樣時(shí)間為 20 秒,結(jié)果示例如下:
可視化:
執(zhí)行下述命令可以進(jìn)行可視化:
例如,執(zhí)行下述語(yǔ)句可以在 8088 端口開(kāi)啟 WEB UI 。
訪問(wèn) http://0.0.0.0:8088/ui/flamegraph 即可得到火焰圖。

注意事項(xiàng):
Databend 暫時(shí)不支持在 musl 平臺(tái)上運(yùn)行 pprof 。
Memory Profiling
內(nèi)存分析,在應(yīng)用程序進(jìn)行堆分配時(shí)記錄堆棧追蹤,用于監(jiān)視當(dāng)前和歷史內(nèi)存使用情況,以及檢查內(nèi)存泄漏。通過(guò)與?jemalloc
?的集成,Databend 得以整合多種內(nèi)存分析能力。這里使用?jeprof
?進(jìn)行內(nèi)存分析。
必備工作:
安裝 Jemalloc,并啟用其剖析能力?./configure --enable-prof
在構(gòu)建二進(jìn)制文件時(shí)啟用 memory-profiling 特性:cargo build --features memory-profiling
在創(chuàng)建 Databend 實(shí)例時(shí),設(shè)置環(huán)境變量 MALLOC_CONF=prof:true 以啟用內(nèi)存分析。示例:
堆快照轉(zhuǎn)儲(chǔ):
下面的例子選用 debug 模式下編譯的 databend-query 作為 target,端口為 8080,結(jié)果如下所示:
生成內(nèi)存分配調(diào)用圖:
常見(jiàn)的用例之一是查找內(nèi)存泄漏,通過(guò)比較間隔前后的內(nèi)存畫像即可完成這一工作。在下面的命令行中,以 10 s 為間隔,獲取前后兩個(gè)時(shí)間節(jié)點(diǎn)的內(nèi)存畫像。
接著,可以利用這兩份內(nèi)存畫像來(lái)生成 pdf 格式的內(nèi)存分配調(diào)用圖。
同樣選用 debug 模式下編譯的 databend-query 作為 target,端口為 8080,結(jié)果如圖所示:

目前無(wú)法在 Mac 上進(jìn)行內(nèi)存分析,不管是 x86_64 還是 aarch64 平臺(tái)。引用鏈接
引用鏈接
[1]
?pprof-rs:?https://crates.io/crates/pprof
關(guān)于 Databend
Databend 是一款開(kāi)源、彈性、低成本,基于對(duì)象存儲(chǔ)也可以做實(shí)時(shí)分析的新式數(shù)倉(cāng)。期待您的關(guān)注,一起探索云原生數(shù)倉(cāng)解決方案,打造新一代開(kāi)源 Data Cloud。
Databend 文檔:https://databend.rs/
Twitter:https://twitter.com/Datafuse_Labs
Slack:https://datafusecloud.slack.com/
Wechat:Databend
GitHub :https://github.com/datafuselabs/databend
