...

Package pprof

import "net/http/pprof"
概览
索引

概览 ▾

pprof 包通过提供HTTP服务返回runtime的统计数据,这个数据是以pprof可视化工具规定的返回格式返回的. 了解更多的pprof的知识,请参考:http://code.google.com/p/google-perftools/

导入这个包就会在HTTP服务端的handlers注册这个包自己的处理器。 处理的路径全是以/debug/pprof/开头的。

使用pprof,只要将这个包引入到你的程序中:

import _ "net/http/pprof"

如果你的应用并不是运行在http server上,你需要开启一个http服务。 开启方法就是增加"net/http"和"log"包到你的imports中,然后增加下面的方法到你的main函数中。

go func() {
	log.Println(http.ListenAndServe("localhost:6060", nil))
}()

然后使用pprof工具查看heap统计:

go tool pprof http://localhost:6060/debug/pprof/heap

或者查看30秒内的CPU统计:

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

也可以查看阻塞中的goroutine统计:

go tool pprof http://localhost:6060/debug/pprof/block

要查看所有的可查看的统计,在浏览器中打开http://localhost:6060/debug/pprof/

要进一步了解profile的功能,请浏览

http://blog.golang.org/2011/06/profiling-go-programs.html

func Cmdline

func Cmdline(w http.ResponseWriter, r *http.Request)

Cmdline返回正在运行的程序的命令行结构,包括被空字节分隔的参数。 这个包的初始化函数将这个函数注册为/debug/pprof/cmdline的处理函数。

func Handler

func Handler(name string) http.Handler

Handler返回HTTP handler,这个handler会处理参数name的统计。

func Index

func Index(w http.ResponseWriter, r *http.Request)

Index 返回请求处理中格式化的pprof的统计数据。 例如,“/debug/pprof/heap” 展示的是“heap”统计信息。 Index对请求“/debug/pprof/”返回一个HTML页面,这个页面展示了所有可见的统计。

func Profile

func Profile(w http.ResponseWriter, r *http.Request)

Profile返回pprof格式的cpu统计信息。 这个包的初始化函数将这个函数注册为/debug/pprof/profile的处理函数。

func Symbol

func Symbol(w http.ResponseWriter, r *http.Request)

Symbol查询当前请求的程序计数器(PC), 返回的是一个程序计数器和函数名字的映射表。 这个包的初始化函数将这个函数注册为/debug/pprof/symbol的处理函数。

func Trace

func Trace(w http.ResponseWriter, r *http.Request)

Trace responds with the execution trace in binary form. Tracing lasts for duration specified in seconds GET parameter, or for 1 second if not specified. The package initialization registers it as /debug/pprof/trace.