在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
web 服务器如果你的go程序是用http包启动的web服务器,你想查看自己的web服务器的状态。这个时候就可以选择net/http/pprof。你只需要引入包_"net/http/pprof",然后就可以在浏览器中使用http://localhost:port/debug/pprof/直接看到当前web服务的状态,包括CPU占用情况和内存使用情况等。具体使用情况你可以看godoc的说明。 _ "net/http/pprof" 在浏览器中我就可以直接看prof信息了 生成CPU状态分析图下面我们想要生成CPU状态分析图, 调用go tool pprof http://localhost:3999/debug/pprof/profile 或者 go tool pprof http://localhost:3999/debug/pprof/profile --text 就会进入30秒的profile收集时间,在这段事件内猛刷新点击go-tour浏览器上的页面,尽量让cpu占用性能产生数据。 (pprof) top Total: 3 samples 1 33.3% 33.3% 1 33.3% MHeap_AllocLocked 1 33.3% 66.7% 1 33.3% os/exec.(*Cmd).closeDescriptors 1 33.3% 100.0% 1 33.3% runtime.sigprocmask 0 0.0% 100.0% 1 33.3% MCentral_Grow 0 0.0% 100.0% 2 66.7% main.Compile 0 0.0% 100.0% 2 66.7% main.compile 0 0.0% 100.0% 2 66.7% main.run 0 0.0% 100.0% 1 33.3% makeslice1 0 0.0% 100.0% 2 66.7% net/http.(*ServeMux).ServeHTTP 0 0.0% 100.0% 2 66.7% net/http.(*conn).serve
(pprof)web 服务进程如果你的go程序不是web服务器,而是一个服务进程,那么你也可以选择使用net/http/pprof包,同样引入包net/http/pprof,然后在开启另外一个goroutine来开启端口监听。 比如: go func() { log.Println(http.ListenAndServe("localhost:8080", nil)) }() 应用程序
import "runtime/pprof" func main() { f, _ := os.Create("./profile.prof") pprof.StartCPUProfile(f) defer pprof.StopCPUProfile()
各字段的含义依次是: 1. 采样点落在该函数中的次数 2. 采样点落在该函数中的百分比 3. 上一项的累积百分比 4. 采样点落在该函数,以及被它调用的函数中的总次数 5. 采样点落在该函数,以及被它调用的函数中的总次数百分比 6. 函数名
|
请发表评论