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
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。