zoukankan      html  css  js  c++  java
  • golang pprof操作流程

    安装 graphviz
    brew install graphviz // for macos
    apt install graphviz   // for ubuntu
    yum install graphviz  // for centos

    设置svg文件默认打开程序
    右键svg文件 ->显示简介->默认程序

    //main.go 文件
    package main

    import (
    // 略
    _ "net/http/pprof" // 会自动注册 handler 到 http server,方便通过 http 接口获取程序运行采样报告
    // 略
    )

    func main() {
    // 略

    runtime.GOMAXPROCS(1) // 限制 CPU 使用数,避免过载
    runtime.SetMutexProfileFraction(1) // 开启对锁调用的跟踪
    runtime.SetBlockProfileRate(1) // 开启对阻塞操作的跟踪

    go func() {
    // 启动一个 http server,注意 pprof 相关的 handler 已经自动注册过了
    if err := http.ListenAndServe(":6060", nil); err != nil {
    log.Fatal(err)
    }
    os.Exit(0)
    }()

    // 略
    }


    打开浏览器访问 http://localhost:6060/debug/pprof/
    交互式终端
    go tool pprof http://localhost:6060/debug/pprof/profile
    go tool pprof http://localhost:6060/debug/pprof/heap
    go tool pprof http://localhost:6060/debug/pprof/allocs
    go tool pprof http://localhost:6060/debug/pprof/goroutine
    go tool pprof http://localhost:6060/debug/pprof/mutex
    go tool pprof http://localhost:6060/debug/pprof/block

    命令: top/list/web

    火焰图
    go tool pprof -http=:8081 ~/pprof/[文件路径名].pb.gz

    内存记录工具 prog_mem.sh

    #!/bin/bash
    prog_name="your_programe_name"
    prog_mem=$(pidstat -r -u -h -C $prog_name |awk 'NR==4{print $12}')
    time=$(date "+%Y-%m-%d %H:%M:%S")
    echo $time" memory(Byte) "$prog_mem >>~/record/prog_mem.log

    使用crontab建立定时任务,每分钟记录1次。使用crontab -e编辑crontab配置,在最后增加1行:
    */1 * * * * ~/record/prog_mem.sh

    脚本输出的内容保存在prog_mem.log。如果需要可视化,可以直接黏贴prog_mem.log内容到Excel等表格工具,绘制内存占用图

    参考链接

    https://blog.wolfogre.com/posts/go-ppof-practice/
    https://book.eddycjy.com/golang/tools/go-tool-pprof.html
    https://segmentfault.com/a/1190000019222661

  • 相关阅读:
    AngularJs学习笔记Understanding Angular Templates
    AngularJs学习笔记Creating Services
    AngularJs学习笔记E2E Testing
    AngularJs学习笔记Using $location
    AngularJs学习笔记Injecting Services Into Controllers
    AngularJs学习笔记unittesting
    AngularJs学习笔记Guide教程系列文章索引
    C语言 自幂数
    C# 虚拟键盘核心方法 Tech
    [转]SQLite SQL语句结构详解 Tech
  • 原文地址:https://www.cnblogs.com/sanmubai/p/11996754.html
Copyright © 2011-2022 走看看