前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >gops —— Go 程序诊断分析工具

gops —— Go 程序诊断分析工具

作者头像
李海彬
发布2018-11-23 10:24:54
2.1K0
发布2018-11-23 10:24:54
举报
文章被收录于专栏:Golang语言社区Golang语言社区

原文作者:Shocker 原文链接:https://shockerli.net/post/golang-tool-gops/

GitHub: https://github.com/google/gops 一个用于列出和诊断分析系统中正在运行的 Go 程序的命令行工具

安装

代码语言:javascript
复制

命令帮助

执行 gops help 查看帮助文档:

代码语言:javascript
复制

使用详解

为了能更好的分析程序,需要在我们的项目中加一行 agent 诊断分析代码,用于统计分析程序问题。

代码语言:javascript
复制

其中,agent. 支持更多的参数:

代码语言:javascript
复制
  • Addr 可选。为远程分析服务提供监听地址,例如: :9119。配置了该项,那我们可以在本机查看分析远程服务器上的 Go 程序,非常有帮助。
  • ConfigDir 可选。用于存放统计数据和配置的目录,默认为当前用户的主目录。也可以通过环境变量GOPS_CONFIG_DIR设置。具体参考代码:
代码语言:javascript
复制
  • ShutdownCleanup 可选。设置为 true,则在程序关闭时会自动清理数据。

NOTE: 如果不加 agent 代码,那我们无法更深入的诊断程序,也就是说无法执行gops memstatsgops pprof-heap等所有类似于 gops <cmd> <pid|addr> ... 的子命令。

gops

直接执行 gops 命令会列出本机所有正在运行的 Go 程序。

代码语言:javascript
复制

该命令会显示以下内容:

  • PID
  • PPID
  • 程序名称
  • 构建该程序的 Go 版本号
  • 程序所在绝对路径

注意,列表中有个程序名称后面带了个 *,表示该程序加入了 gops 的诊断分析代码。

gops <pid>

用法: gops <pid> 查看本机指定 PID Go 程序的基本信息

代码语言:javascript
复制

local/remote 表示本机建立的监听(LISTEN),或者与远程服务器建立的链接(ESTABLISHED)

local/remote: *:9105 <-> :0 (LISTEN) 中的 *:9105gops/agent 提供的服务,

gops tree

用法: gops tree 以目录树的形式展示所有 Go 程序。

代码语言:javascript
复制

gops stack (<pid>|<addr>)

用法: gops stack (<pid>|<addr>) 用于显示程序所有堆栈信息,包括每个 goroutine 的堆栈信息、运行状态、运行时长等。

代码语言:javascript
复制

gops memstats (<pid>|<addr>)

用法: gops memstats (<pid>|<addr>) 查看程序的内存统计信息

代码语言:javascript
复制

gops gc (<pid>|<addr>)

用法: gops gc (<pid>|<addr>) 查看指定程序的垃圾回收(GC)信息

gops setgc (<pid>|<addr>)

用法: gops setgc (<pid>|<addr>) 设定指定程序的 GC 目标百分比

gops version (<pid>|<addr>)

用法: gops version (<pid>|<addr>) 查看指定程序构建时的 Go 版本号

gops stats (<pid>|<addr>)

用法: gops stats (<pid>|<addr>) 查看指定程序的 goroutine 数量、GOMAXPROCS 值等信息

代码语言:javascript
复制

gops pprof-cpu (<pid>|<addr>)

用法: gops pprof-cpu (<pid>|<addr>) 调用并展示 go tool pprof 工具中关于 CPU 的性能分析数据,操作与 pprof 一致。

代码语言:javascript
复制

gops pprof-heap (<pid>|<addr>)

用法: gops pprof-heap (<pid>|<addr>) 调用并展示 go tool pprof 工具中关于 heap 的性能分析数据,操作与 pprof 一致。

代码语言:javascript
复制

gops trace (<pid>|<addr>)

用法: gops trace (<pid>|<addr>) 追踪程序运行5秒,生成可视化报告,并可在浏览器中查看: http://127.0.0.1:61380

代码语言:javascript
复制

版权申明:内容来源网络,版权归原创者所有。除非无法确认,我们都会标明作者及出处,如有侵权烦请告知,我们会立即删除并表示歉意。谢谢。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-10-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Golang语言社区 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 安装
  • 命令帮助
  • 使用详解
    • gops
      • gops <pid>
        • gops tree
          • gops stack (<pid>|<addr>)
            • gops memstats (<pid>|<addr>)
              • gops gc (<pid>|<addr>)
                • gops setgc (<pid>|<addr>)
                  • gops version (<pid>|<addr>)
                    • gops stats (<pid>|<addr>)
                      • gops pprof-cpu (<pid>|<addr>)
                        • gops pprof-heap (<pid>|<addr>)
                          • gops trace (<pid>|<addr>)
                          相关产品与服务
                          命令行工具
                          腾讯云命令行工具 TCCLI 是管理腾讯云资源的统一工具。使用腾讯云命令行工具,您可以快速调用腾讯云 API 来管理您的腾讯云资源。此外,您还可以基于腾讯云的命令行工具来做自动化和脚本处理,以更多样的方式进行组合和重用。
                          领券
                          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档