zoukankan      html  css  js  c++  java
  • [Go]理解golang项目性能分析工具PProf

    PProf 是以 profile.proto来分析数据

    可以采集程序执行时候的命令分析

    可以采集HTTP服务时的运行时数据分析

    可以通过go test 测试用例分析

    有下面这些监控分析功能:

    CPU 分析 , 内存分析 , 阻塞分析 , 互斥锁分析 , Groutine分析

    如果是http服务 , 那么直接引入这个包就可以实现了 _ "net/http/pprof"

    如果使用的gin框架 , 需要引入这个包 github.com/gin-contrib/pprof

    并且注册一下gin对象 pprof.Register(g)

    通过浏览器直接访问  http:// 服务/debug/pprof/

    就可以看到下面的页面

     每个参数的含义是:

    allocs:查看过去所有内存分配的样本
    block:查看导致阻塞同步的堆栈跟踪
    cmdline:当前程序的命令行的完整调用路径
    goroutine:查看当前所有运行的 goroutines 堆栈跟踪
    heap:查看活动对象的内存分配情况
    mutex:查看导致互斥锁的竞争持有者的堆栈跟踪
    profile:默认进行 30s 的 CPU Profiling,得到一个分析用的 profile 文件
    threadcreate:查看创建新OS线程的堆栈跟踪

    使用交互式命令行可以对上面url的结果进行分析

    比如分析常驻内存情况

    go tool pprof -inuse_space http://localhost:8081/debug/pprof/heap       输入的top命令

    比如分析内存临时分配的情况

    go tool pprof -alloc_objects http://localhost:8081/debug/pprof/heap       输入的top命令

    分析goroutine

     go tool pprof http://localhost:6060/debug/pprof/goroutine   可以使用traces看到调用栈

    重点看到了我自己开启的独立的goroutine , 找最下面的是自己写的包的调用函数

    开源作品

    GO-FLY,一套可私有化部署的免费开源客服系统,安装过程不超过五分钟(超过你打我 !),基于Golang开发,二进制文件可直接使用无需搭开发环境,下载zip解压即可,仅依赖MySQL数据库,是一个开箱即用的网页在线客服系统,致力于帮助广大开发者/中小站长快速整合私有客服功能
    github地址:go-fly
    官网地址:https://gofly.sopans.com

    赞赏作者

    微信交流

  • 相关阅读:
    Java对象序列化/反序列化的注意事项
    初尝Java序列化/反序列化对象
    Java的byte数组
    在C#或者SWT上跨进程访问SWT控件的问题
    Enum实现单例模式
    看个泛型的例子
    构造器优化需要多个构造器的类(建造者模式)
    线程间操作无效: 从不是创建控件的线程访问它.
    SWT中的多线程(Invalid thread access)
    读书笔记 --腾讯传
  • 原文地址:https://www.cnblogs.com/taoshihan/p/14750108.html
Copyright © 2011-2022 走看看