【go 语言】PProf 的使用——CPU和内存占用分析(二)

简介: PProf 的使用——CPU和内存占用分析(二)

正文


一、原代码


package main
import (
    "log"
    "net/http"
    _ "net/http/pprof"
    "time"
)
var datas []string
func main() {
    go func() {
        for {
            log.Printf("len: %d", Add("qijing"))
            time.Sleep(time.Millisecond * 10)
        }
    }()
    _ = http.ListenAndServe("0.0.0.0:2022", nil)
}
func Add(str string) int {
    data := []byte(str)
    datas = append(datas, string(data))
    return len(datas)
}


12.webp.jpg


二、CPU 占用分析


项目更目录下执行 go tool pprof http://127.0.0.1:2022/debug/pprof/profile?seconds=30,结束之后会默认进入 PProf 的命令行交互模式,接着输入 top 10,如下图,

13.webp.jpg


  • flat: 函数自身的运行耗时。
  • flat%: 函数自身占 CPU 运行总耗时的比例。
  • sum%: 函数自身累积使用占 CPU 运行总耗时的比例。
  • cum: 函数自身及其调用的函数的运行总耗时。
  • cum%: 函数自身及其调用的函数占 CPU 运行总耗时的比例
  • Name: 函数名。


三、内存占用分析


项目根目录下执行 go tool pprof http://127.0.0.1:2022/debug/pprof/heap,结束之后会默认进入 PProf 的命令行交互模式,接着输入 top,如图所示,


14.webp.jpg


  • flat: 函数自身占内存大小。
  • flat%: 函数自身占总分配内存的比例。
  • sum%: 函数自身累积占用内存占总内存的比例。
  • cum: 函数自身及其调用的函数占内存大小
  • cum%: 函数自身及其调用的函数占总内存的比例。
  • Name: 函数名。


上面可以看到,main.main.fun1cum 大小正好等于自身的 flat 大小加上 main.Add 大小的 flat 大小

目录
相关文章
|
11月前
|
缓存 人工智能 算法
不同业务怎么选服务器?CPU / 内存 / 带宽配置表
本文详解了服务器三大核心配置——CPU、内存、带宽,帮助读者快速理解服务器性能原理。结合不同业务场景,如个人博客、电商、数据库、直播等,提供配置选择建议,并强调合理搭配的重要性,避免资源浪费或瓶颈限制。内容实用,适合初学者和业务选型参考。
1576 0
|
11月前
|
存储 消息中间件 缓存
从纳秒到毫秒的“时空之旅”:CPU是如何看待内存与硬盘的?
在数据爆炸的时代,如何高效存储与管理海量数据成为系统设计的核心挑战。本文从计算机存储体系结构出发,解析B+树、LSM树与Kafka日志结构在不同数据库中的应用与优化策略,帮助你深入理解高性能存储背后的原理。
376 0
|
人工智能 数据可视化 编译器
Go interface实现分析
本文深入探讨了Go语言中接口的定义、实现及性能影响。接口作为一种“约定”,包含方法签名集合,无需依赖具体类型即可调用方法,隐藏了内部实现细节。文章分析了接口的两种实现方式(iface和eface)、按值与按指针实现的区别,以及nil接口与普通nil的区别。同时,通过反汇编代码对比了接口动态调用与类型直接调用的性能差异,指出接口调用存在内存逃逸和无法内联的问题。最后总结了接口的优势与局限性,强调在实际开发中需根据场景合理选择是否使用接口。
375 13
|
存储
阿里云轻量应用服务器收费标准价格表:200Mbps带宽、CPU内存及存储配置详解
阿里云香港轻量应用服务器,200Mbps带宽,免备案,支持多IP及国际线路,月租25元起,年付享8.5折优惠,适用于网站、应用等多种场景。
3540 0
|
10月前
|
弹性计算 定位技术 数据中心
阿里云服务器配置选择方法:付费类型、地域及CPU内存配置全解析
阿里云服务器怎么选?2025最新指南:就近选择地域,降低延迟;长期使用选包年包月,短期灵活选按量付费;企业选2核4G5M仅199元/年,个人选2核2G3M低至99元/年,高性价比爆款推荐,轻松上云。
1149 11
|
弹性计算 前端开发 NoSQL
2025最新阿里云服务器配置选择攻略:CPU、内存、带宽与系统盘全解析
本文详解2025年阿里云服务器ECS配置选择策略,涵盖CPU、内存、带宽与系统盘推荐,助你根据业务需求精准选型,提升性能与性价比。
|
数据可视化 Linux iOS开发
Python测量CPU和内存使用率
这些示例帮助您了解如何在Python中测量CPU和内存使用率。根据需要,可以进一步完善这些示例,例如可视化结果或限制程序在特定范围内的资源占用。
539 22
|
Go 开发者
Go语言内存共享与扩容机制 -《Go语言实战指南》
本文深入探讨了Go语言中切片的内存共享机制与自动扩容策略。切片作为动态数组的抽象,其底层结构包含指针、长度和容量。多个切片可能共享同一底层数组,修改一个切片可能影响其他切片。当切片容量不足时,`append`会触发扩容,新容量按指数增长以优化性能。为避免共享导致的副作用,可通过`copy`创建独立副本或在函数中使用只读方式处理。最后总结了最佳实践,帮助开发者高效使用切片,写出更优代码。
355 10
|
存储 弹性计算 固态存储
阿里云服务器配置费用整理,支持一万人CPU内存、公网带宽和存储IO性能全解析
要支撑1万人在线流量,需选择阿里云企业级ECS服务器,如通用型g系列、高主频型hf系列或通用算力型u1实例,配置如16核64G及以上,搭配高带宽与SSD/ESSD云盘,费用约数千元每月。
1681 0

热门文章

最新文章