Go pprof
2024-10-11 本文已影响0人
晚歌歌
示例代码
package main
import (
"log"
"net/http"
_ "net/http/pprof" // 导入 pprof 包
)
func main() {
// 启动 HTTP 服务器
go func() {
log.Println("Starting pprof server on :6060")
if err := http.ListenAndServe("localhost:6060", nil); err != nil {
log.Fatalf("Failed to start pprof server: %v", err)
}
}()
// 你的主程序逻辑
log.Println("Main application is running...")
select {} // 阻塞主 goroutine 以保持程序运行
}
生成分析文件
打开浏览器并访问以下 URL:
http://localhost:6060/debug/pprof/
CPU 分析: •http://localhost:6060/debug/pprof/profile:生成 CPU 分析文件。
内存分析: •http://localhost:6060/debug/pprof/heap:生成堆内存分析文件。
Goroutine 分析: •http://localhost:6060/debug/pprof/goroutine:生成 goroutine 分析文件。
通过命令行工具访问
go tool pprof profile
image.png
top:显示最耗 CPU 的函数
web:生成 SVG 图并打开浏览器查看调用图
image.png