go web编程--go语言基础教程,go语言做网站-文字版, go电子书, 和go 有关的电子书:

14.6 pprof支持

14.6 pprof支持

Go语言有一个非常棒的设计就是标准库里面带有代码的性能监控工具,在两个地方有包:

net/http/pprof

runtime/pprof

其实net/http/pprof中只是使用runtime/pprof包来进行封装了一下,并在http端口上暴露出来

beego支持pprof

目前beego框架新增了pprof,该特性默认是不开启的,如果你需要测试性能,查看相应的执行goroutine之类的信息,其实Go的默认包"net/http/pprof"已经具有该功能,如果按照Go默认的方式执行Web,默认就可以使用,但是由于beego重新封装了ServHTTP函数,所以如果你默认的包含是无法开启该功能的,所以需要对beego的内部改造支持pprof。

使用入门

通过上面的设计,你可以通过如下代码开启pprof:

beego.PprofOn = true

然后你就可以在浏览器中打开如下URL就看到如下界面:

图14.7 系统当前goroutine、heap、thread信息

点击goroutine我们可以看到很多详细的信息:

图14.8 显示当前goroutine的详细信息

我们还可以通过命令行获取更多详细的信息

go tool pprof http://localhost:8080/debug/pprof/profile

这时候程序就会进入30秒的profile收集时间,在这段时间内拼命刷新浏览器上的页面,尽量让cpu占用性能产生数据。

(pprof) top10

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

图14.9 展示的执行流程信息

欢迎转载,转载请注明来自一手册:http://yishouce.com/book/4/11406.html
友情链接It题库(ittiku.com)| 版权归yishouce.com所有| 友链等可联系 admin#yishouce.com|粤ICP备16001685号-1