基于 go pprof 与 go trace 进行持续性能剖析

xyctruth · · 773 次点击 · 开始浏览    置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。

## Profiler 是一个基于 go pprof 与 go trace 持续性能剖析工具 > [GitHub](https://github.com/xyctruth/profiler) [Demo](https://profiling.jia-huang.com) - **样本采集** - `trace` `fgprof` `profile` `mutex` `heap` `goroutine` `allocs` `block` `threadcreate` - **配置动态加载** - 根据配置文件收集目标服务的样本, 收集程序会监听配置文件的变化,即时应用变化后的配置文件 - **图表趋势** - 提供图表观测多个服务性能指标的趋势,找出性能问题的时间点 - 每一个气泡都是一份 Profile 与 Trace 的样本文件 - **详细分析** - 点击图表中的气泡跳转到 Profile 与 Trace 的详细页面进行进一步详细的分析 ### 图表趋势 <img src="https://cdn.learnku.com/uploads/images/202112/30/41961/sJjEId3bfK.jpeg!large"/> ### 点击气泡跳转 Profile 详情 <img src="https://cdn.learnku.com/uploads/images/202112/30/41961/v0vHMOMEgF.jpeg!large"/> ### 点击气泡跳转 Trace 详情 <img src="https://cdn.learnku.com/uploads/images/202112/30/41961/dwoyLxyzRd.jpeg!large"/> <img src="https://cdn.learnku.com/uploads/images/202112/30/41961/85ZFKjOJgL.jpeg!large"/> ## 快速入门 ### 本地启动 ```bash # run server :8080 go run server/main.go # run ui :80 cd ui && npm install --registry=https://registry.npm.taobao.org && npm run dev --base_api_url=http://localhost:8080 ``` ### In Docker ```bash # 无持久化 docker run -d -p 80:80 --name profiler xyctruth/profiler:latest # 持久化 mkdir -vp ~/profiler/config/ cp ./collector.yaml ~/profiler/config/ docker run -d -p 80:80 -v ~/profiler/data/:/profiler/data/ -v ~/profiler/config/:/profiler/config/ --name profiler xyctruth/profiler:latest ``` ## 抓取配置 需要被收集分析的 `golang` 程序,需要提供 `net/http/pprof` 端点,并配置在 `./collector.yaml` 配置文件中。 配置文件可以在线更新,收集程序会监听配置文件的变化,即时应用变化后的配置文件。 ### `collector.yaml` ```yaml collector: targetConfigs: profiler-server: # 目标名称 interval: 15s # 抓取间隔 expiration: 0 # 无过期时间 host: localhost:9000 # 目标服务host profileConfigs: # 使用默认配置 server2: interval: 10s expiration: 168h # 过期时间7天 host: localhost:9000 profileConfigs: # 覆盖部分默认配置字段 trace: enable: false fgprof: enable: false profile: path: /debug/pprof/profile?seconds=10 enable: false heap: path: /debug/pprof/heap ``` ### `profileConfigs` 默认配置 ```yaml profileConfigs: profile: path: /debug/pprof/profile?seconds=10 enable: true fgprof: path: /debug/fgprof?seconds=10 enable: true trace: path: /debug/pprof/trace?seconds=10 enable: true mutex: path: /debug/pprof/mutex enable: true heap: path: /debug/pprof/heap enable: true goroutine: path: /debug/pprof/goroutine enable: true allocs: path: /debug/pprof/allocs enable: true block: path: /debug/pprof/block enable: true threadcreate: path: /debug/pprof/threadcreate enable: true ``` ## 项目地址 [https://github.com/xyctruth/profiler](https://github.com/xyctruth/profiler)

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

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