小編給大家分享一下Go語言程序查看和診斷工具的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
創(chuàng)新互聯(lián)公司是一家專業(yè)提供羅平企業(yè)網(wǎng)站建設(shè),專注與成都做網(wǎng)站、成都網(wǎng)站建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)、H5技術(shù)、小程序制作等業(yè)務(wù)。10年已為羅平眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站制作公司優(yōu)惠進(jìn)行中。
想必Java 的開發(fā)者沒有不知道或者沒用過 jps 這個命令的,這個命令是用來在主機(jī)上查看有哪些 Java 程序在運(yùn)行的。

我剛用 Go 語言程序的時候也很苦惱,我部署在公司服務(wù)器上的 Go 程序,其他的同事由于不清楚就經(jīng)常找不到。
那么 Go 語言有沒有像 jps 這樣的工具呢?當(dāng)然有,不僅有,而且還是 Google 自己出品的,官方認(rèn)證(這種問題 Google 不可能自己想不到啊)。名稱也跟 jps 很像,叫 gops。
安裝
gops 并不包含在官方安裝包中,不屬于標(biāo)準(zhǔn)工具。需要手動獲取。
go get -u github.com/google/gops
簡單使用
goes 的使用方法非常簡單,我們看一下 help 文檔就可以了。

最簡單的用法就是 gops,會直接列出正在運(yùn)行的 Go 程序

會依次列出 PID,PPID,程序名稱,編譯使用的 Go 版本號,程序路徑。信息比 jps 還詳細(xì),不錯哦。
不止如此,gops 還能進(jìn)行程序的診斷。
診斷
可能有人注意到了上面我的 memory-test 程序后面有個 * 號。這是因?yàn)槌绦蛑形壹尤肓?gops 用的診斷支持代碼:
if err := agent.Listen(agent.Options{ShutdownCleanup:true}); err != nil {
log.Fatalln(err)
}對于這樣的程序,我們才能進(jìn)行 gops pprof-cpu 和 gops pprof-heap 等命令。(stack, gc, setgc, memstats, version, stats, trace 等命令運(yùn)行同樣需要加入上面的代碼)。
使用很簡單,就直接貼一點(diǎn)圖,不講了。



因?yàn)?go pprof 命令有助于我們分析程序,相對來說更加常用。但是以往用起來相對要麻煩一些(可參照本人另一篇《Go 程序的性能優(yōu)化及 pprof 的使用》)。現(xiàn)在有了 gops,分析 cpu 和內(nèi)存使用就跟方便了。
gops 不僅支持本地使用,而且支持遠(yuǎn)程。查看 agent.Options:

可以設(shè)置 Addr 為 host:port 形式。我這邊設(shè)置為 ":9779"。將其部署到遠(yuǎn)程服務(wù)器上,運(yùn)行命令 gops pprof-heap 192.168.199.210:9779,可以看到:

完全可行。 (注意,不僅只有 pprof-heap,gops 所有命令都支持遠(yuǎn)程)
在我們的程序中加入診斷用代碼,當(dāng)部署到遠(yuǎn)程服務(wù)器上,也能很方便地分析程序情況。
以上是“Go語言程序查看和診斷工具的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
網(wǎng)站欄目:Go語言程序查看和診斷工具的示例分析
URL標(biāo)題:http://chinadenli.net/article20/pgjhco.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站改版、云服務(wù)器、全網(wǎng)營銷推廣、手機(jī)網(wǎng)站建設(shè)、微信小程序
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)