欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Go語言程序查看和診斷工具詳解

 更新時間:2017年11月05日 10:31:21   作者:snowInPluto  
這篇文章主要為大家詳細(xì)介紹了Go語言程序查看和診斷工具,具有一定的參考價值,感興趣的小伙伴們可以參考一下

想必Java 的開發(fā)者沒有不知道或者沒用過 jps 這個命令的,這個命令是用來在主機上查看有哪些 Java 程序在運行的。

我剛用 Go 語言程序的時候也很苦惱,我部署在公司服務(wù)器上的 Go 程序,其他的同事由于不清楚就經(jīng)常找不到。

那么 Go 語言有沒有像 jps 這樣的工具呢?當(dāng)然有,不僅有,而且還是 Google 自己出品的,官方認(rèn)證(這種問題 Google 不可能自己想不到?。CQ也跟 jps 很像,叫 gops。

安裝

gops 并不包含在官方安裝包中,不屬于標(biāo)準(zhǔn)工具。需要手動獲取。

go get -u github.com/google/gops

簡單使用

goes 的使用方法非常簡單,我們看一下 help 文檔就可以了。

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

會依次列出 PID,PPID,程序名稱,編譯使用的 Go 版本號,程序路徑。信息比 jps 還詳細(xì),不錯哦。

不止如此,gops 還能進(jìn)行程序的診斷。

診斷

可能有人注意到了上面我的 memory-test 程序后面有個 * 號。這是因為程序中我加入了 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 等命令運行同樣需要加入上面的代碼)。

使用很簡單,就直接貼一點圖,不講了。

因為 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ù)器上,運行命令 gops pprof-heap 192.168.199.210:9779,可以看到:

完全可行。 (注意,不僅只有 pprof-heap,gops 所有命令都支持遠(yuǎn)程)

在我們的程序中加入診斷用代碼,當(dāng)部署到遠(yuǎn)程服務(wù)器上,也能很方便地分析程序情況。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • go 語言字符類型 byte 與 rune案例詳解

    go 語言字符類型 byte 與 rune案例詳解

    這篇文章主要介紹了go 語言字符類型 byte 與 rune案例詳解,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-03-03
  • golang中snappy的使用場合實例詳解

    golang中snappy的使用場合實例詳解

    在java 和go語言 大字符傳達(dá)的時候, 采用snappy 壓縮 解壓縮是最好的方案。下面這篇文章主要給大家介紹了關(guān)于golang中snappy使用場合的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下。
    2017-12-12
  • Go語言中的Struct結(jié)構(gòu)體

    Go語言中的Struct結(jié)構(gòu)體

    這篇文章介紹了Go語言中的Struct結(jié)構(gòu)體,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-07-07
  • Go 計時器使用示例全面講解

    Go 計時器使用示例全面講解

    這篇文章主要為大家介紹了Go 計時器使用示例全面講解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • Golang使用JWT進(jìn)行認(rèn)證和加密的示例詳解

    Golang使用JWT進(jìn)行認(rèn)證和加密的示例詳解

    JWT是一個簽名的JSON對象,通常用作Oauth2的Bearer?token,JWT包括三個用.分割的部分。本文將利用JWT進(jìn)行認(rèn)證和加密,感興趣的可以了解一下
    2023-02-02
  • golang高并發(fā)的深入理解

    golang高并發(fā)的深入理解

    golang從語言級別上對并發(fā)提供了支持,而且在啟動并發(fā)的方式上直接添加了語言級的關(guān)鍵字。下面這篇文章主要給大家介紹了關(guān)于golang高并發(fā)的相關(guān)資料,需要的朋友可以參考下
    2019-03-03
  • golang?gorm學(xué)習(xí)之如何指定數(shù)據(jù)表

    golang?gorm學(xué)習(xí)之如何指定數(shù)據(jù)表

    在sql中首先要指定是從哪張表中查詢,所以這篇文章小編就來帶大家一起看一下gorm是如何根據(jù)model來自動解析表名的,感興趣的小伙伴可以了解下
    2023-08-08
  • Go?編程復(fù)雜數(shù)據(jù)類型?Map

    Go?編程復(fù)雜數(shù)據(jù)類型?Map

    這篇文章主要介紹了Go編程復(fù)雜數(shù)據(jù)類型Map,Go中的Map是一組無需的K-V類型的數(shù)據(jù),與Python中的字典Dict和Java中的HashMap結(jié)構(gòu)類似。未被初始化的Map為nil
    2022-08-08
  • go語言題解LeetCode1275找出井字棋的獲勝者示例

    go語言題解LeetCode1275找出井字棋的獲勝者示例

    這篇文章主要為大家介紹了go語言題解LeetCode1275找出井字棋的獲勝者示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-01-01
  • k8s在go語言中的使用及client?初始化簡介

    k8s在go語言中的使用及client?初始化簡介

    這篇文章主要為大家介紹了k8s在go語言中的使用及client?初始化簡介,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-04-04

最新評論