golang pprof
虽然go提供了很多便于并发的功能,但是写出一个高性能的程序还是有一定挑战的。当程序遇到性能问题,go同样提供了比较好的工具便于分析。
引入net/http/pprof"
import (
_ "net/http/pprof"
)
在main函数最后启动http server
func main() {
....
http.ListenAndServe("localhost:8000", nil)
}
这个端口随便配,程序启动后会阻塞在这条语句,然后打开网址http://localhost:8000/debug/pprof/,会得到如下界面
具体每行的意思都有解释,这里需要注意一下,profile是CPU耗时相关的,但是有时候这里数据是0,比如这里的图,因为什么呢,因为我们开启了太多的协程,或者主要工作都放在协程中了,所以需要看的是goroutine
创建火焰图
点击上面的每一项,有数据的会显示很多文本信息,如何更直观的查看呢,可以使用go tool pprof -http=:8081 http://localhost:8000/debug/pprof/goroutine
,-http
指定创建火焰图后打开的网页端口,后面跟着的就是上面的网址,网址的最后一项goroutine
就是你想看的内容,与上面网页上信息对应。
访问http://localhost:8081/ui/,就可以看到火焰图
版权声明:本文版权归作者所有,如需转载,请标明出处
分类:
Golang
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏