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/

image.png

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
上一篇 下一篇

猜你喜欢

热点阅读