当前位置: 首页 > article >正文

golang生成并分析cpu prof文件

1. 定义一个接口,请求接口时,生成cpu.prof文件

在主协程中新启一个协程,当请求接口时,生成一个60秒的cpu.prof文件

go func() {
		http.HandleFunc("/prof", startProfileHandler)
		http.ListenAndServe(":9092", nil)
	}()

// startProfileHandler 启动 CPU profiling
func startProfileHandler(w http.ResponseWriter, r *http.Request) {
	// 创建 profile 文件
	f, err := os.Create("cpu.prof")
	if err != nil {
		return
	}
	defer f.Close()

	// 启动 CPU profiling
	if err := pprof.StartCPUProfile(f); err != nil {
		return
	}
	defer pprof.StopCPUProfile() // 在请求结束时停止 CPU profiling

	time.Sleep(60 * time.Second)

	w.Write([]byte("CPU profiling completed, profile saved as cpu.prof"))
}

2. 分析cpu.prof

 go tool pprof -http=:8080 cpu.prof 

点击view, Flat%为占用cpu的百分比,从这里可以看出占用cpu最多的方法


http://www.kler.cn/news/351076.html

相关文章:

  • nginx------HTTP模块配置详解
  • 给已经写好的裸机程序移植freeRTOS操作系统
  • 如何为自己的跨境网站添加多国语言翻译功能及推荐起尔网定制与插件开发
  • etl-查询错误log日志和oracle删除数据表空间
  • 界面控件DevExtreme中文教程 - 如何与Amazon S3和Azure Blob存储集成?
  • rust grpc demo
  • LeetCode:LCP77.符文储备(排序 Java)
  • 《Windows PE》6.4.2 远程注入DLL
  • MySQL联合索引中不同区分度列的顺序对查询性能的影响
  • Spring Boot知识管理系统:敏捷开发实践
  • Spring Boot 自动配置与 Starter POMs 深度解析
  • Excel:Cells(Rows.Count, 1).End(xlUp).Row和Cells(Rows.Count, 1).End(xlUp)有什么区别
  • Git 查看当前分支是基于哪个分支拉取(源头分支)
  • 产品开发历程|共享空间系统小程序界面风格切换
  • 开放式蓝牙耳机哪个品牌好用?开放式耳机排行榜测评!
  • 转型AI产品经理需要掌握的硬知识(三):2B和2C类AI产品公司脑洞
  • JVM篇(运行时数据区(实战课程学习总结)
  • Windows:在WPS或者Word中添加Latex公式编辑器
  • 记录Centos7 漫漫配置路
  • Apache Doris介绍
  • 物联网的应用以及优势
  • webpack和vite的区别?
  • 实时语音转文字(基于NAudio+Whisper+VOSP+Websocket)
  • 通过激酶找到ChEMBL数据库数据的步骤与代码实现
  • day36 56.合并区间 738.单调递增的数字
  • Elasticsearch文档操作