Go pprof

示例代码

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
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • [TOC] roadmap pprof 发展过程:pprof --> http/pprof --> uber go...
    cdz620阅读 4,009评论 0 3
  • PProf是什么 pprof 是用于可视化和分析性能分析数据的工具 pprof 以 profile.proto 读...
    爱情小傻蛋阅读 925评论 0 1
  • 原文地址:Golang 大杀器之性能剖析 PProf 前言 写了几吨代码,实现了几百个接口。功能测试也通过了,终于...
    EDDYCJY阅读 73,139评论 7 78
  • 一、前言 业务方反馈引入jaeger后,cpu load飙升,无奈只能分析一波。 二、PPROF环境 pprof ...
    huiwq1990阅读 337评论 0 0
  • 分析过程 第一步,在引用中加上 第二步,在代码开始运行的地方加上 介绍 allocs:查看过去所有内存分配的样本。...
    myvic_091阅读 823评论 0 0