go效能調優之火焰圖
瞭解到go中有pprof包來做程式碼的效能監控,可以檢視堆疊、cpu資訊等。在兩個地方有包:
net/http/pprof
runtime/pprof
但是使用起來並不是特別好用(不是特別直觀)。之前在接觸systemtap的時候,瞭解到火焰圖這個東西。後來瞭解到uber開源了一個生成火焰圖的工具——go-torch。
下面整理下,之前使用分析的一個過程。
1 新增pprof程式碼
首先我們要在例項的main函式中新增pprof的相關的程式碼:
package main
import (
...
_"net/http/pprof"
"github.com/astaxie/beego"
"os/exec"
"net/http"
)
func main() {
go func(){
http.ListenAndServe(":6789", nil)
}()
這樣我們可以通過訪問URL:http://<ip>:6789/debug/pprof/得到堆疊資訊
通過訪問URl:http://<ip>:6789/debug/pprof/profile獲得函式呼叫CPU消耗的情況(不是特別直觀,一堆文字)
2 生成火焰圖工具安裝
需要安裝兩個工具:FlameGraph指令碼和go-torch
git clone https://github.com/brendangregg/FlameGraph.git
cp flamegraph.pl /usr/local/bin
或
export FlameGraph所在的path
go get -v github.com/uber/go-torch
3 測試
完成安裝之後,執行測試程式和測試工具:
go-torch -u http://<ip>:6789 -t60 -p > profile-local.svg
表示採集60s的資料(預設30s),完了後會在當前目錄生成一張火焰圖,可以用瀏覽器開啟:
4 如何看圖
參考:https://blog.csdn.net/wwwasw/article/details/52137630
每個框代表一個棧裡的一個函式 Y軸代表棧深度(棧楨數)。最頂端的框顯示正在執行的函式,這之下的框都是呼叫者。在下面的函式是上面函式的父函式 X軸代表取樣總量。從左到右並不代表時間變化,從左到右也不具備順序性 框的寬度代表佔用CPU總時間。寬的框代表的函式可能比窄的執行慢,或者被呼叫了更多次數。框的顏色深淺也沒有任何意義 如果是多執行緒同時取樣,取樣總數會超過總時間
相關文章
- 程式設計師精進之路:效能調優利器--火焰圖程式設計師
- linux 效能調優工具perf + 火焰圖 常用命令Linux
- JAVA效能分析之使用火焰圖Java
- 效能調優學習之硬體調優
- 如何讀懂火焰圖?+ 例項講解程式效能優化優化
- Flame Graph 火焰圖分析 Java 效能Java
- Linux程式效能分析和火焰圖Linux
- perf及火焰圖的使用,效能分析
- linux效能分析工具之火焰圖Linux
- 效能調優命令之jstackJS
- Linux系統效能調優之效能分析Linux
- openresty使用火焰圖排查效能問題REST
- Linux效能調優命令之freeLinux
- Android效能調優工具之 TraceViewAndroidView
- 效能工具perf的用法以及如何繪製效能火焰圖
- Rust效能分析之測試及火焰圖,附(lru,lfu,arc)測試Rust
- Web效能優化之圖片優化Web優化
- MySQL調優效能監控之show profileMySql
- MySQL調優效能監控之performance schemaMySqlORM
- iOS效能調優之Analyze靜態分析iOS
- Oracle效能調優之FreeList和HWMOracle
- Oracle效能調優 之FreeList和HWMOracle
- Spark 效能調優--資源調優Spark
- Spark 效能調優--Shuffle調優 SortShuffleManagerSpark
- 【效能調優】效能測試、分析與調優基礎
- Liferay前端效能調優(5)sprite圖片前端
- oracle筆記整理13——效能調優之SQL優化Oracle筆記SQL優化
- Golang火焰圖Golang
- Chrome 火焰圖Chrome
- ElasticSearch效能調優Elasticsearch
- Nginx 效能調優Nginx
- iOS效能調優iOS
- php效能調優PHP
- Java效能調優Java
- Spark效能調優Spark
- oracle效能調優Oracle
- Linux火焰圖效能分析文章及視訊演示Linux
- 使用火焰圖進行Java應用效能分析Java