非常教程

Go参考手册

net/http

net/http/pprof

  • import "net/http/pprof"
  • 概述
  • 索引

概述

软件包pprof通过其HTTP服务器运行时分析数据以pprof可视化工具预期的格式提供服务。

该软件包通常只是为了注册HTTP处理程序的副作用而导入。处理路径全部以/debug/pprof/开头。

要使用pprof,请将此软件包链接到您的程序中:

import _ "net/http/pprof"

如果您的应用程序尚未运行http服务器,则需要启动一个。将“net/http”和“log”添加到您的导入,并将以下代码添加到主函数中:

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

或者在程序中调用runtime.SetBlockProfileRate之后查看goroutine阻止配置文件:

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

或者收集5秒钟的执行轨迹:

wget http://localhost:6060/debug/pprof/trace?seconds=5

或者在程序中调用runtime.SetMutexProfileFraction之后查看争用互斥锁的持有者:

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

要查看所有可用的配置文件,请在浏览器中打开http://localhost:6060/debug/pprof/。

欲了解该设施的实际情况,请访问

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

索引

  • func Cmdline(w http.ResponseWriter, r *http.Request)
  • func Handler(name string) http.Handler
  • 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 Trace(w http.ResponseWriter, r *http.Request)

文件包

pprof.go

func Cmdline(显示源文件)

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

Cmdline用正在运行的程序的命令行响应,参数用NUL字节分隔。软件包初始化将其注册为/debug/pprof/cmdline。

func Handler(显示源文件)

func Handler(name string) http.Handler

处理程序返回一个HTTP处理程序来提供指定的配置文件。

func Index(显示源文件)

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

索引使用请求命名的pprof格式的配置文件进行响应。例如,“/debug/pprof/heap”服务于“堆”配置文件。索引通过列出可用配置文件的HTML页面响应“/debug/pprof/”的请求。

func Profile(显示源文件)

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

配置文件使用pprof格式的cpu配置文件进行响应。软件包初始化将其注册为/debug/pprof/profile。

func Symbol(显示源文件)

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

Symbol查找请求中列出的程序计数器,并使用表映射程序计数器响应函数名称。软件包初始化将其注册为/ /debug/pprof/symbol。

func Trace(显示源文件)

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

Trace以二进制形式执行跟踪。跟踪持续时间指定以秒为单位的GET参数,如果未指定,则持续1秒。软件包初始化将其注册为/debug/pprof/trace。

Go

Go 是一种编译型语言,它结合了解释型语言的游刃有余,动态类型语言的开发效率,以及静态类型的安全性。它也打算成为现代的,支持网络与多核计算的语言。要满足这些目标,需要解决一些语言上的问题:一个富有表达能力但轻量级的类型系统,并发与垃圾回收机制,严格的依赖规范等等。这些无法通过库或工具解决好,因此Go也就应运而生了。

主页 https://golang.org/
源码 https://go.googlesource.com/go
发布版本 1.9.2

Go目录

1.档案 | archive
2.缓冲区 | bufio
3.内置 | builtin
4.字节 | bytes
5.压缩 | compress
6.容器 | container
7.上下文 | context
8.加密 | crypto
9.数据库 | database
10.调试 | debug
11.编码 | encoding
12.错误 | errors
13. expvar
14.flag
15. fmt
16. go
17.散列 | hash
18.html
19.图像 | image
20.索引 | index
21.io
22.日志 | log
23.数学 | math
24. math/big
25.math/bits
26.math/cmplx
27.math/rand
28.拟态 | mime
29.net
30.net/http
31. net/mail
32. net/rpc
33.net/smtp
34. net/textproto
35. net/url
36.os
37.路径 | path
38.插件 | plugin
39.反射 | reflect
40.正则表达式 | regexp
41.运行时 | runtime
42.排序算法 | sort
43.转换 | strconv
44.字符串 | strings
45.同步 | sync
46.系统调用 | syscall
47.测试 | testing
48.文本 | text
49.时间戳 | time
50.unicode
51.不安全性 | unsafe
52.Go 语言数据类型
53.Go 语言基础语法
54.Go 语言结构
55.Go 语言 select 语句
56.Go 语言 switch 语句
57.Go 语言 if 语句嵌套
58.Go 语言 if…else 语句
59.Go 语言 if 语句
60.Go 语言运算符
61.Go 语言常量
62.Go 语言函数闭包
63.Go 语言函数作为实参
64.Go 语言函数引用传递值
65.Go 语言函数值传递值
66.Go 语言函数
67.Go 语言 goto 语句
68.Go 语言 continue 语句
69.Go 语言 break 语句
70.Go 语言循环嵌套
71.Go 语言 for 循环
72.Go 语言结构体
73.Go 语言指针作为函数参数
74.Go 语言指向指针的指针
75.Go 语言指针数组
76.Go 语言指针
77.Go 语言向函数传递数组
78.Go 语言多维数组
79.Go 语言变量作用域
80.Go 语言函数方法
81.Go 错误处理
82.Go 语言接口
83.Go 语言类型转换
84.Go 语言递归函数
85.Go 语言Map(集合)
86.Go 语言范围(Range)
87.Go 语言切片(Slice)
88.Go 并发
89.Go fmt.Sprintf 格式化字符串