使用 Go pprof

使用方式 1

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>

使用方式 2

// 使用另外端口(原始版本)

go zpprof.ListenAndServe("0.0.0.0:8082")

// 启动服务后直接访问 <http://127.0.0.1:8082/debug/pprof/>

通过 Web 界面分析

查看当前总览:访问 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

这个页面中有许多子页面。

通过交互式终端分析

终端执行 go tool pprof <http://127.0.0.1:3788/debug/pprof/profile?seconds=60>

执行该命令后,需等待 60 秒(可调整 seconds 的值),pprof 会进行 CPU Profiling。

结束后将默认进入 pprof 的交互式命令模式,可以对分析的结果进行查看或导出。

具体可执行 pprof help 查看命令说明