Add 14.6.md syntax highlighting

This commit is contained in:
vCaesar
2016-12-18 17:12:40 +08:00
parent 54eca74c99
commit 2a19f961b8

View File

@@ -1,23 +1,26 @@
# 14.6 pprof支持
Go语言有一个非常棒的设计就是标准库里面带有代码的性能监控工具在两个地方有包
```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。
- 首先在beego.Run函数中根据变量是否自动加载性能包
```Go
if PprofOn {
BeeApp.RegisterController(`/debug/pprof`, &ProfController{})
BeeApp.RegisterController(`/debug/pprof/:pp([\w]+)`, &ProfController{})
}
```
- 设计ProfConterller
```Go
package beego
@@ -45,13 +48,14 @@ Go语言有一个非常棒的设计就是标准库里面带有代码的性能监
this.Ctx.ResponseWriter.WriteHeader(200)
}
```
## 使用入门
通过上面的设计你可以通过如下代码开启pprof
```Go
beego.PprofOn = true
```
然后你就可以在浏览器中打开如下URL就看到如下界面
![](images/14.6.pprof.png?raw=true)
@@ -64,9 +68,10 @@ Go语言有一个非常棒的设计就是标准库里面带有代码的性能监
图14.8 显示当前goroutine的详细信息
我们还可以通过命令行获取更多详细的信息
```Go
go tool pprof http://localhost:8080/debug/pprof/profile
```
这时候程序就会进入30秒的profile收集时间在这段时间内拼命刷新浏览器上的页面尽量让cpu占用性能产生数据。
(pprof) top10