go pprof分析process-exporter占用

process-exporter代码里已默认使用了pprof,直接可以通过url访问

http://10.1.17.171:9256/debug/pprof/

不管是前文哪种方式获取,都可以进行分析。这里http的方式把可以看到的信息全部都列出来了。

类型    描述
allocs    内存分配情况的采样信息
blocks    阻塞操作情况的采样信息
cmdline    显示程序启动命令参数及其参数
goroutine    显示当前所有协程的堆栈信息
heap    堆上的内存分配情况的采样信息
mutex    锁竞争情况的采样信息
profile    cpu占用情况的采样信息,点击会下载文件
threadcreate    系统线程创建情况的采样信息
trace    程序运行跟踪信息
通过加粗的关键字,很直观可以看到能分析到的数据。

什么是 Profile?

在计算机性能调试领域里,profile 就是对应用的画像,这里画像就是应用使用 CPU 和内存等情况,也就是说应用使用了多少 CPU 资源、都是哪些部分在使用、每个函数使用的比例是多少、有哪些函数在等待 CPU 资源等等。知道了这些,我们就能对应用进行规划,也能快速定位性能瓶颈。

Golang 是一个对性能特别看重的语言,因此语言中自带了 profile 的库,这篇文章就要讲解怎么在 golang 中做 profile。

在 Golang 中,主要关注的应用运行情况主要包括以下几种:

CPU profile:报告程序的 CPU 使用情况,按照一定频率去采集应用程序在 CPU 和寄存器上面的数据
Memory profile(Heap profile):报告程序的内存使用情况
Block profile:报告 goroutines 不在运行状态的情况,可以用来分析和查找死锁等性能瓶颈
Goroutine profile:报告 goroutines 的使用情况,有哪些 goroutine,它们的调用关系是怎样的

点击profile可以页面直接下载文件,但是不能直接分析

可视化

pprof 能以各种样式输出数据,比如 svg、gv、callgrind、png、gif 等等。其中一个非常便利的方法是在交互式终端中输入 web 命令,就能自动生成一个 svg 文件,并跳转到浏览器打开,生成了一个函数调用图:

yum -y install graphviz

go tool pprof 最简单的使用方式为 go tool pprof [binary] [source],binary 是应用的二进制文件,用来解析各种符号;source 表示 profile 数据的来源,可以是本地文件,也可以是 http 地址。比如:

go tool pprof -http=“10.1.17.171:8081” /home/process-exporter http://10.1.17.171:9256/debug/pprof/profile

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Moke丶青

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值