下面由golang教程栏目给大家介绍使用golang的pprof包对程序进行性能分析,希望对需要的朋友有所帮助!

golang提供pprof包,可以监控golang程序的堆栈,cpu的耗时等性能信息。下边就说一下这个pprof包的使用。
1,首先是引入,在两个地方可以引入:

“net/http/pprof”
 "runtime/prof"

其中"net/http/pprof"是用“runtime/pprof” 包装了一下,然后再http端口暴露出来,让我们可以再浏览器查看程序的性能分析。“runtime/pprof”可以生成*.pprof的文件,然后根据这个文件做性能分析.
2,然后就是在代码中使用pprof了,实际运用中分三种情况:
1)
如果程序本身就是web服务器,那么只需要通过代码:

import(
_"net/http/pprof"
 )

,将pprof引入,然后在浏览器访问http://localhost:port/debug/pprof/就能看到当前web服务的状态,包括CPU占用情况和内存使用情况等
2)
如果你的go程序不是web服务器,而是一个服务进程,那么你就需要开启一个goroutine来开启端口监听。
比如:

go func() {
         log.Println(http.ListenAndServe("localhost:6060", nil)) 
 }()

同样的访问http://localhost:6060/debug/pprof就可以查看程序运行的信息。
3)如果你的程序只是一个应用程序,那么你就需要使用“runtime/ppprof”包了。
官网给出的代码是这样的:

var cpuprofile = flag.String("cpuprofile", "", "write cpu profile to file")
 func main() {
     flag.Parse()
     if *cpuprofile != "" {
         f, err := os.Create(*cpuprofile)
         if err != nil {
             log.Fatal(err)
         }
         pprof.StartCPUProfile(f)
         defer pprof.StopCPUProfile()
     }

,然后我们在运行这个程序的时候加上一个参数--cpuprofile=*.prof就可以再对应目录下生成一个.pprof的文件,程序运行的信息就都在这个文件里了。然后进入对应目录,运行命令:go tool pprof 加刚才生成的pprof文件命即可进入到pprof中,输入web命令,可以生成对应的svg文件。

第二种方式:
再使用“net/http/pprof”包的时候,我们同样可以使用go tool pprof命令来查看程序运行的情况。例如我们启动了一个简单的go服务器程序,监听再8080端口,那么我们就可以使用以下命令进入pprof的命令行:
利用这个命令查看堆栈信息:

go tool pprof http://localhost:6060/debug/pprof/heap
 利用这个命令可以查看程序CPU使用情况信息:
 go tool pprof http://localhost:6060/debug/pprof/profile
 使用这个命令可以查看block信息:
 go tool pprof http://localhost:6060/debug/pprof/block
 进入pprof命令行,输入help,查看命令帮助,
 topN命令可以查看占用前N 的线程或者函数,用svg可以生成svg图。
 pprof简单使用就是这样了,掌握了使用方法,在实践中加以利用才是我们的目的,希望我写的这些可以对你有所帮助。

ps;因为我并没有真正的用golang写过大型的程序,也没有对这个包真正的用过,只是看了几篇文章和官网上的一些资料汇总了一下,难免犯形而上学的错误,欢迎指正!谢谢

以上就是如何使用golang的pprof包对程序进行性能分析的详细内容,更多请关注php中文网其它相关文章!

声明:本文转载于:csdn,如有侵犯,请联系admin@php.cn删除

  • 相关标签:golang pprof
  • 程序员必备接口测试调试工具:点击使用

    Apipost = Postman + Swagger + Mock + Jmeter

    Api设计、调试、文档、自动化测试工具

    网页生成APP,用做网站的技术去做APP:立即创建

    手机网站开发APP、自助封装APP、200+原生模块、2000+映射JS接口按需打包

    • 上一篇:详解Golang数组的传递
    • 下一篇:你知道go程序的基本要素吗

    相关文章

    相关视频


    • golang如何生成JSON及解析JSON
    • 详解Golang如何对excel进行处理
    • golang中方法的receiver为指针和不为指...
    • 详解Golang数组的传递
    • 如何使用golang的pprof包对程序进行性能分...
    • PHP的历史(选学)
    • 一些针对PHP的规则
    • 深刻解析PHP的前世今生(上)
    • 深刻解析PHP的前世今生(下)

    视频教程分类

    • php视频教程
    • html视频教程
    • css视频教程
    • JS视频教程
    • jQuery视频教程
    • mysql视频教程
    • Linux视频教程
    • Python视频教程
    • Laravel视频教程
    • Vue视频教程

    专题

    如何使用golang的pprof包对程序进行性能分析