pprof介绍
最后更新于:2022-04-02 04:56:31
mac下的Graphviz安装及使用
一.安装
Graphviz http://www.graphviz.org/
mac用户建议直接用homebrew来安装,官网上版本比较旧
1.安装homebrew
打开终端复制、粘贴以下命令:
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
2.安装Graphviz
homebrew安装完毕后运行 brew install graphviz 即可
注:运行第2步时可能会提示-bash: brew: command not found
解决办法:
终端输入sudo vim .bash_profile,
输入i进入输入模式,
添加export PATH="/usr/local/bin:$PATH" ,
按esc键退出输入模式,
输入:wq退出并保存
最后输入source .bash_profile使配置生效。
(注意: 和空格也要输入,bash_profile保存时可能会警告,:w!强制保存即可,更多vim命令参考http://www.cnblogs.com/usergaojie/p/4583796.html
**关于pprof**
pprof是golang程序一个性能分析的工具,可以查看堆栈、cpu信息等。
**源码示例**
~~~
package main
import (
"flag"
"log"
"net/http"
_ "net/http/pprof"
"sync"
"time"
)
func Counter(wg *sync.WaitGroup) {
time.Sleep(time.Second)
var counter int
for i := 0; i < 1000000; i++ {
time.Sleep(time.Millisecond * 200)
counter++
}
wg.Done()
}
func main() {
flag.Parse()
//远程获取pprof数据
go func() {
log.Println(http.ListenAndServe("localhost:8080", nil))
}()
var wg sync.WaitGroup
wg.Add(10)
for i := 0; i < 10; i++ {
go Counter(&wg)
}
wg.Wait()
// sleep 10mins, 在程序退出之前可以查看性能参数.
time.Sleep(60 * time.Second)
}
~~~
编译运行:
~~~
go run main.go
~~~
通过网页查看overview
http://localhost:8080/debug/pprof/
通过终端命令查看各参数:
1)查看堆栈信息
~~~
go tool pprof http://localhost:8080/debug/pprof/heap
top10 #命令查看了堆栈空间最大的10个函数调用
~~~
2)查看cpu性能信息
~~~
go tool pprof http://localhost:8080/debug/pprof/profile
top10 #命令查看了堆栈空间最大的10个函数调用
~~~
';