原文作者:Shocker 原文链接:https://shockerli.net/post/golang-tool-gops/
GitHub: https://github.com/google/gops 一个用于列出和诊断分析系统中正在运行的 Go 程序的命令行工具
执行 gops help
查看帮助文档:
为了能更好的分析程序,需要在我们的项目中加一行 agent
诊断分析代码,用于统计分析程序问题。
其中,agent.
支持更多的参数:
:9119
。配置了该项,那我们可以在本机查看分析远程服务器上的 Go 程序,非常有帮助。GOPS_CONFIG_DIR
设置。具体参考代码:
true
,则在程序关闭时会自动清理数据。NOTE: 如果不加 agent
代码,那我们无法更深入的诊断程序,也就是说无法执行gops memstats
、gops pprof-heap
等所有类似于 gops <cmd> <pid|addr> ...
的子命令。
直接执行 gops
命令会列出本机所有正在运行的 Go 程序。
该命令会显示以下内容:
注意,列表中有个程序名称后面带了个 *
,表示该程序加入了 gops
的诊断分析代码。
<pid>
用法: gops <pid>
查看本机指定 PID
Go 程序的基本信息
local/remote
表示本机建立的监听(LISTEN),或者与远程服务器建立的链接(ESTABLISHED)
local/remote: *:9105 <-> :0 (LISTEN)
中的 *:9105
是 gops/agent
提供的服务,
用法: gops tree
以目录树的形式展示所有 Go 程序。
(<pid>|<addr>)
用法: gops stack (<pid>|<addr>)
用于显示程序所有堆栈信息,包括每个 goroutine 的堆栈信息、运行状态、运行时长等。
(<pid>|<addr>)
用法: gops memstats (<pid>|<addr>)
查看程序的内存统计信息
(<pid>|<addr>)
用法: gops gc (<pid>|<addr>)
查看指定程序的垃圾回收(GC)信息
(<pid>|<addr>)
用法: gops setgc (<pid>|<addr>)
设定指定程序的 GC 目标百分比
(<pid>|<addr>)
用法: gops version (<pid>|<addr>)
查看指定程序构建时的 Go 版本号
(<pid>|<addr>)
用法: gops stats (<pid>|<addr>)
查看指定程序的 goroutine
数量、GOMAXPROCS
值等信息
(<pid>|<addr>)
用法: gops pprof-cpu (<pid>|<addr>)
调用并展示 go tool pprof
工具中关于 CPU 的性能分析数据,操作与 pprof
一致。
(<pid>|<addr>)
用法: gops pprof-heap (<pid>|<addr>)
调用并展示 go tool pprof
工具中关于 heap 的性能分析数据,操作与 pprof
一致。
(<pid>|<addr>)
用法: gops trace (<pid>|<addr>)
追踪程序运行5秒,生成可视化报告,并可在浏览器中查看: http://127.0.0.1:61380
版权申明:内容来源网络,版权归原创者所有。除非无法确认,我们都会标明作者及出处,如有侵权烦请告知,我们会立即删除并表示歉意。谢谢。