Go语言程序查看和诊断工具的示例分析-创新互联

小编给大家分享一下Go语言程序查看和诊断工具的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

为雨山等地区用户提供了全套网页设计制作服务,及雨山网站建设行业解决方案。主营业务为网站建设、成都网站建设、雨山网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!

想必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 所有命令都支持远程)

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

以上是“Go语言程序查看和诊断工具的示例分析”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注创新互联成都网站设计公司行业资讯频道!

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


当前文章:Go语言程序查看和诊断工具的示例分析-创新互联
本文地址:http://ybzwz.com/article/pjdgc.html