import (
"github.com/sohaha/zlsgo/znet"
"github.com/sohaha/zlsgo/zpprof"
)
func main(){
r := znet.New("Go")
// 注册pprof路由,如果 token 设置为空表示不需要验证 token
zpprof.Register(r, "mytoken")
znet.Run()
}
// 启动服务后直接访问 <http://127.0.0.1:3788/debug?token=mytoken>
// 使用另外端口(原始版本)
go zpprof.ListenAndServe("0.0.0.0:8082")
// 启动服务后直接访问 <http://127.0.0.1:8082/debug/pprof/>
查看当前总览:访问 http://127.0.0.1:3788/debug/pprof/
(如设置了token自行填上)
/debug/pprof/
profiles:
0 block
5 goroutine
3 heap
0 mutex
9 threadcreate
full goroutine stack dump
这个页面中有许多子页面。
/debug/pprof/profile
,默认进行 30s 的 CPU Profiling,得到一个分析用的 profile 文件/debug/pprof/block
,查看导致阻塞同步的堆栈跟踪/debug/pprof/goroutine
,查看当前所有运行的 goroutines 堆栈跟踪/debug/pprof/heap
,查看活动对象的内存分配情况/debug/pprof/mutex
,查看导致互斥锁的竞争持有者的堆栈跟踪/debug/pprof/threadcreate
,查看创建新OS线程的堆栈跟踪终端执行 go tool pprof <http://127.0.0.1:3788/debug/pprof/profile?seconds=60
>
执行该命令后,需等待 60 秒(可调整 seconds 的值),pprof 会进行 CPU Profiling。
结束后将默认进入 pprof 的交互式命令模式,可以对分析的结果进行查看或导出。
具体可执行 pprof help 查看命令说明