使用pprof分析cpu占用过高问题

yanglikai · · 95 次点击 · · 开始浏览    

web 服务器

选择net/http/pprof。你只需要引入包_"net/http/pprof",然后就可以在浏览器中使用http://localhost:port/debug/pprof/直接看到当前web服务的状态,包括CPU占用情况和内存使用情况等。

如下图:

在上图的页面上直接点击profile,或直接访问链接 http://localhost:port/debug/pprof/profile 稍后片刻,可以下载到文件 profile

go自带工具pprof

使用 Go 自带的 pprof 工具进行分析,命令:go tool pprof test profile。(proof 后跟的 test 为程序编译的可执行文件)

输入top命令可以查看cpu占用前10的函数

我这里可执行文件名叫"profile",所以:

使用go-torch

生成profile文件

go-torch -u http://localhost:8085 -t 30

使用to-torch工具生成火焰图来分析,更直观一些

命令为:go-torch profile profile

如下图:

执行后会生成一个torch.svg文件,该文件可以用浏览器打开

优化

找到问题代码如下:

    ...

    rand.Seed(time.Now().UnixNano())

    ran := rand.Int31n(num)

    ...

由于服务有一定的并发量,且每次请求几乎都会执行N次这段代码

代码优化后看实际效果再来补充本文,未完待续...

入群交流(该群和以上内容无关):Go中文网 QQ交流群:798786647 或 加微信入微信群:274768166 备注:入群; 公众号:Go语言中文网

95 次点击  
加入收藏 微博
被以下专栏收入,发现更多相似内容
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传