【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 大小

目录
相关文章
|
3月前
|
存储 弹性计算 缓存
阿里云服务器ECS经济型、通用算力、计算型、通用和内存型选购指南及使用场景分析
本文详细解析阿里云ECS服务器的经济型、通用算力型、计算型、通用型和内存型实例的区别及适用场景,涵盖性能特点、配置比例与实际应用,助你根据业务需求精准选型,提升资源利用率并降低成本。
281 3
|
2月前
|
存储
阿里云轻量应用服务器收费标准价格表:200Mbps带宽、CPU内存及存储配置详解
阿里云香港轻量应用服务器,200Mbps带宽,免备案,支持多IP及国际线路,月租25元起,年付享8.5折优惠,适用于网站、应用等多种场景。
748 0
|
1月前
|
弹性计算 前端开发 NoSQL
2025最新阿里云服务器配置选择攻略:CPU、内存、带宽与系统盘全解析
本文详解2025年阿里云服务器ECS配置选择策略,涵盖CPU、内存、带宽与系统盘推荐,助你根据业务需求精准选型,提升性能与性价比。
|
2月前
|
存储 人工智能 自然语言处理
AI代理内存消耗过大?9种优化策略对比分析
在AI代理系统中,多代理协作虽能提升整体准确性,但真正决定性能的关键因素之一是**内存管理**。随着对话深度和长度的增加,内存消耗呈指数级增长,主要源于历史上下文、工具调用记录、数据库查询结果等组件的持续积累。本文深入探讨了从基础到高级的九种内存优化技术,涵盖顺序存储、滑动窗口、摘要型内存、基于检索的系统、内存增强变换器、分层优化、图形化记忆网络、压缩整合策略以及类操作系统内存管理。通过统一框架下的代码实现与性能评估,分析了每种技术的适用场景与局限性,为构建高效、可扩展的AI代理系统提供了系统性的优化路径和技术参考。
154 4
AI代理内存消耗过大?9种优化策略对比分析
|
2月前
|
存储 弹性计算 固态存储
阿里云服务器配置费用整理,支持一万人CPU内存、公网带宽和存储IO性能全解析
要支撑1万人在线流量,需选择阿里云企业级ECS服务器,如通用型g系列、高主频型hf系列或通用算力型u1实例,配置如16核64G及以上,搭配高带宽与SSD/ESSD云盘,费用约数千元每月。
206 0
|
4月前
|
数据可视化 Linux iOS开发
Python测量CPU和内存使用率
这些示例帮助您了解如何在Python中测量CPU和内存使用率。根据需要,可以进一步完善这些示例,例如可视化结果或限制程序在特定范围内的资源占用。
183 22
|
4月前
|
Go 开发者
Go语言内存共享与扩容机制 -《Go语言实战指南》
本文深入探讨了Go语言中切片的内存共享机制与自动扩容策略。切片作为动态数组的抽象,其底层结构包含指针、长度和容量。多个切片可能共享同一底层数组,修改一个切片可能影响其他切片。当切片容量不足时,`append`会触发扩容,新容量按指数增长以优化性能。为避免共享导致的副作用,可通过`copy`创建独立副本或在函数中使用只读方式处理。最后总结了最佳实践,帮助开发者高效使用切片,写出更优代码。
127 10
|
6月前
|
存储 监控 算法
taosd 写入与查询场景下压缩解压及加密解密的 CPU 占用分析
在当今大数据时代,时序数据库的应用越来越广泛,尤其是在物联网、工业监控、金融分析等领域。TDengine 作为一款高性能的时序数据库,凭借独特的存储架构和高效的压缩算法,在存储和查询效率上表现出色。然而,随着数据规模的不断增长,在保证数据安全性和存储效率的同时,如何优化 CPU 的资源占用,成为了一个值得深入讨论的问题。
124 1
|
6月前
|
存储 Java
课时4:对象内存分析
接下来对对象实例化操作展开初步分析。在整个课程学习中,对象使用环节往往是最棘手的问题所在。