pprof

优质
小牛编辑
132浏览
2023-12-01

import "net/http/pprof"

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

本包一般只需导入获取其注册HTTP处理器的副作用。处理器的路径以/debug/pprof/开始。

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

import _ "net/http/pprof"

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

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

然后使用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/。要学习这些运转的设施,访问:

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

  • func Handler(name string) http.Handler
  • func Cmdline(w http.ResponseWriter, r *http.Request)
  • func Index(w http.ResponseWriter, r *http.Request)
  • func Profile(w http.ResponseWriter, r *http.Request)
  • func Symbol(w http.ResponseWriter, r *http.Request)
  • func Handler

    func Handler(name string) http.Handler

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

    func Cmdline

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

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

    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查看请求中列出的程序计数器,回复一个映射程序计数器到函数名的表格。本包将它注册在/debug/pprof/symbol。