Go语言程序查看和诊断工具详解

作者:snowInPluto 时间:2023-06-22 02:40:38 

想必Java 的开发者没有不知道或者没用过 jps 这个命令的,这个命令是用来在主机上查看有哪些 Java 程序在运行的。

Go语言程序查看和诊断工具详解

我刚用 Go 语言程序的时候也很苦恼,我部署在公司服务器上的 Go 程序,其他的同事由于不清楚就经常找不到。

那么 Go 语言有没有像 jps 这样的工具呢?当然有,不仅有,而且还是 Google 自己出品的,官方认证(这种问题 Google 不可能自己想不到啊)。名称也跟 jps 很像,叫 gops。

安装

gops 并不包含在官方安装包中,不属于标准工具。需要手动获取。

go get -u github.com/google/gops

简单使用

goes 的使用方法非常简单,我们看一下 help 文档就可以了。

Go语言程序查看和诊断工具详解

最简单的用法就是 gops,会直接列出正在运行的 Go 程序

Go语言程序查看和诊断工具详解

会依次列出 PID,PPID,程序名称,编译使用的 Go 版本号,程序路径。信息比 jps 还详细,不错哦。

不止如此,gops 还能进行程序的诊断。

诊断

可能有人注意到了上面我的 memory-test 程序后面有个 * 号。这是因为程序中我加入了 gops 用的诊断支持代码:

if err := agent.Listen(agent.Options{ShutdownCleanup:true}); err != nil {
log.Fatalln(err)
}

对于这样的程序,我们才能进行 gops pprof-cpu 和 gops pprof-heap 等命令。(stack, gc, setgc, memstats, version, stats, trace 等命令运行同样需要加入上面的代码)。

使用很简单,就直接贴一点图,不讲了。

Go语言程序查看和诊断工具详解

Go语言程序查看和诊断工具详解

Go语言程序查看和诊断工具详解

因为 go pprof 命令有助于我们分析程序,相对来说更加常用。但是以往用起来相对要麻烦一些(可参照本人另一篇《Go 程序的性能优化及 pprof 的使用》)。现在有了 gops,分析 cpu 和内存使用就跟方便了。

gops 不仅支持本地使用,而且支持远程。查看 agent.Options:

Go语言程序查看和诊断工具详解

可以设置 Addr 为 host:port 形式。我这边设置为 ":9779"。将其部署到远程服务器上,运行命令 gops pprof-heap 192.168.199.210:9779,可以看到:

Go语言程序查看和诊断工具详解

完全可行。 (注意,不仅只有 pprof-heap,gops 所有命令都支持远程)

在我们的程序中加入诊断用代码,当部署到远程服务器上,也能很方便地分析程序情况。

来源:http://www.cnblogs.com/snowInPluto/p/7785651.html

标签:Go,诊断工具
0
投稿

猜你喜欢

  • python基于socket函数实现端口扫描

    2022-02-06 09:22:37
  • JavaScript开发时的五个小提示

    2007-11-21 19:54:00
  • Windows中使用wxPython和py2exe开发Python的GUI程序的实例教程

    2021-07-07 08:52:17
  • python选择排序算法实例总结

    2023-08-29 06:58:28
  • python获取文件版本信息、公司名和产品名的方法

    2022-05-31 17:30:23
  • Vue冷门技巧递归组件实践示例详解

    2024-05-09 15:13:04
  • PHP编码转换函数 自动转换字符集支持数组转换

    2024-05-02 17:33:28
  • MySql5.6使用validate password 插件加强密码强度的安装及使用方法

    2024-01-24 15:39:20
  • Python安装whl文件过程图解

    2022-06-22 02:51:26
  • python同时给两个收件人发送邮件的方法

    2021-10-23 07:31:36
  • C#基于SQLiteHelper类似SqlHelper类实现存取Sqlite数据库的方法

    2024-01-14 14:42:05
  • JavaScript基于ChatGPT API实现划词翻译浏览器脚本

    2024-04-22 12:52:27
  • Linux下安装MySQL5.7.19问题小结

    2024-01-16 06:21:37
  • python使用docx模块读写docx文件的方法与docx模块常用方法详解

    2022-05-14 11:37:17
  • Python3 requests模块如何模仿浏览器及代理

    2023-04-05 06:50:44
  • PyTorch中view()与 reshape()的区别详析

    2023-11-16 05:45:23
  • MySQL数据库基础篇SQL窗口函数示例解析教程

    2024-01-24 22:20:54
  • 哪种Python框架适合你?简单介绍几种主流Python框架

    2023-04-27 03:21:52
  • ASP|HTML]单引与双引号

    2008-03-12 11:42:00
  • python入门for循环嵌套理解学习

    2021-03-01 21:42:16
  • asp之家 网络编程 m.aspxhome.com