Golang-go_tool_pprof性能監控

什麼是go tool pprof性能監控?怎麼用?如下會爲你一一解答,還會和java工具對比哦。html

Let's Go!


1.結論

  • Golang 自帶工具監控cpu,內存比較簡單,並提供可視化界面。
  • 學習成本較低。
  • 推薦使用。

2.是什麼?

  • 用於量化go語言性能而存在的分析工具
  • 使用可視化工具來分析服務器運行時生成的預約格式數據
  • 多種數據分析圖
  • golang package中自帶的工具

3.有什麼種類?

  • Heap Profile: 內存堆棧圖,用於分析內存使用率
  • 30-second CPU profile: 30s內的cpu使用率,包括GC時間佔比
  • Goroutine Blocking Profile: goroutine的阻塞分析圖,分析goroutine是否有泄漏
  • 5-second executable trace: 收集5s 執行足跡

4.怎麼用

啓動

創建main方法並啓動java

package main

import (
    "net/http"
    _ "net/http/pprof"
)

func main() {
    go func() {
        http.ListenAndServe("0.0.0.0:6060",nil)
    }()
}

圖形化工具 - graphviz

安裝後,才能正常顯示go的繪圖,下載地址golang

應用

  1. cmd line
  1. website

http://localhost:6060/debug/pprofweb

5.內存監控

模擬程序

  1. 啓動監控程序
  2. 初始化並讀取內存信息
  3. 循環分配大內存
  4. 再次讀取內存信息
  5. 經過makeMem分配大內存

以下圖:segmentfault

clipboard.png

結果

clipboard.png

其中包含:內存分配信息 與 統計基本信息服務器

如何閱讀

  • 從上到下,最頂端爲入口
  • 方框:大:佔用時間/資源比較多,小則與之相反
  • 線條:粗:佔用時間/資源比較多,小則與之相反
  • 立方體:佔用並無釋放的內存

6.cpu監控

模擬程序

  1. 監聽監控端口
  2. goroutine斐波拉契數列
  3. 運行斐波拉契數列

以下圖:工具

clipboard.png

結果

clipboard.png

其中包含:性能

  • 佔用cpu時間
  • 調用鏈路
  • 統計時長
  • runtime.morestack:申請棧空間

7.與java對比

對比項 Golang Java
性能工具 自帶 部分自帶
GC信息 設置環境變量並重啓程序 直接經過命令/打gc.log
堆棧信息 侵入/清晰 非侵入/清晰
CPU信息 查當作本/要求較低 查當作本/要求較高

8.更多命令

http://wiki.jikexueyuan.com/project/go-command-tutorial/0.12.html

9.參考資料

http://studygolang.com/articles/2110
http://www.javashuo.com/article/p-uxqotjnp-ea.html
http://www.cnblogs.com/yjf512/archive/2012/12/27/2835331.html
相關文章
相關標籤/搜索