pprof包通过它的HTTP服务端提供pprof可视化工具期望格式的运行时剖面文件数据服务。关于pprof的更多信息,参见http://code.google.com/p/google-perftools/

    要使用pprof,在你的程序里导入本包:

    1. import _ "net/http/pprof"

    如果你的应用还没有运行http服务器,你需要开始一个http服务器。添加”net/http”包和”log”包到你的导入列表,然后在main函数开始处添加如下代码:

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

    然后使用pprof工具查看堆剖面:go tool pprof http://localhost:6060/debug/pprof/heap
    或查看周期30秒的CPU剖面:go tool pprof http://localhost:6060/debug/pprof/profile
    或查看go程阻塞剖面:go tool pprof http://localhost:6060/debug/pprof/block
    查看所有可用的剖面:http://localhost:6060/debug/pprof/

    func Handler(name string) http.Handler

    • Handler返回一个提供name指定的剖面文件的服务的HTTP处理器

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

    • Cmdline回应执行中程序的命令行,采用NUL字节分隔的参数。本包将它注册在/debug/pprof/cmdline

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

    • Index回复请求要求的pprof格式的剖面。例如,”/debug/pprof/heap”会回复”heap”剖面。
    • Index会回复”/debug/pprof/“ 请求一个列出所有可用的剖面的HTML页面

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

    • Profile回复pprof格式的CPU剖面。本包将它注册在/debug/pprof/profile

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

    • Symbol查看请求中列出的程序计数器,回复一个映射程序计数器到函数名的表格。
    • 本包将它注册在/debug/pprof/symbol