前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用火焰图分析golang服务性能问题

使用火焰图分析golang服务性能问题

作者头像
用户5521279
发布2019-07-17 12:01:17
2.2K0
发布2019-07-17 12:01:17
举报
文章被收录于专栏:搜狗测试搜狗测试

背景

最近在排查一个server的性能问题时,用到了golang的火焰图,总结一下步骤;

问题现象

正常请求性能没问题,并发上千后,响应时间急剧增长;

工具

  1. 数据收集:golang自带cpu分析工具:pprof
  2. 压力测试工具:根据业务自行选择
  3. 分析数据:可用go pprof或go-torch工具
  4. 其它依赖工具:安装brew install graphviz / yum install graphviz

操作步骤

  1. 在你的main文件里import _ "net/http/pprof",如下图
package main

import (
    "log"
    "net/http"
    _ "net/http/pprof" //引入就好了
    "regexp"
)
  1. 使用http启动获取pprof收集内容的接口
http.HandleFunc("/",nil)
_ := http.ListenAndServe(":9999", nil)
  1. 启动服务
  2. 使用工具进行打压,压至程序问题暴露
  3. 使用go tool pprof http://localhost:9999/pprof/profile收集数据,收集30s后在进入命令行模式后输入quit退出,会生成名为【pprof.二进制名.samples.cpu.00x.pb.gz】的文件,默认放到$HOME/pprof/
  4. 使用go tool pprof -http=:8080 [步骤5中生成的文件]解释数据并生成调用栈graph图示,点击view切换成火焰图,如下图:
  1. 火焰图(或者叫冰柱图)会默认从左到右按处理时间从大到小排列,方便定位问题;
  2. 根据火焰图的结果,分析程序响应变慢时,哪个函数占据了更多的处理时间,可以更直观的定位问题;
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-07-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 搜狗测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景
  • 问题现象
  • 工具
  • 操作步骤
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档