最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

線上問題排查之golang使用json進行對象copy

 更新時間:2022年06月20日 08:43:46   作者:??whoops本尊????  
這篇文章主要介紹了線上問題排查之golang使用json進行對象copy,文章圍繞golang使用json進行對象copy的內(nèi)存溢出問題排查展開詳細(xì)內(nèi)容需要的小伙伴可以參考一下

前言:

記一次golang使用json進行對象copy的內(nèi)存溢出問題排查

問題現(xiàn)象:新增的功能,灰度部署在k8s集群的服務(wù),發(fā)現(xiàn)機器老是被打崩,因為是灰度,且控制了qps在100多,但是機器卻崩潰。通過對灰度機器的監(jiān)控。發(fā)現(xiàn)是內(nèi)存太高導(dǎo)致機器掛掉。此次回顧一下排查歷程。

增加GC次數(shù),從而可以通過pprof去抓取內(nèi)存使用情況:

將程序的GOGC由原先的2000改為200,從而增加GC次數(shù),然后去抓取內(nèi)存消耗情況

  • 第一步操作完成,經(jīng)驗證機器可以正常運行,借助gops導(dǎo)出cpu運行圖和內(nèi)存消耗情況
  • ①將編譯好的linux版本的gops導(dǎo)入到目標(biāo)機器上
  • ②執(zhí)行命令 gops 查看正在運行的程序的pid

  • ③執(zhí)行命令獲取cpu運行狀態(tài) gops pprof-cpu 27 
  • ④執(zhí)行命令獲取內(nèi)存消耗情況 gops pprof-heap 27

執(zhí)行上述兩個命令后,其會生成文件在tmp目錄下 :

//⑤將生成的文檔下載到本地后,分別執(zhí)行 
go tool pprof -http=:8080 cpu_profile*
go tool pprof -http=:8081 heap_profile*
//在本地生成可視化

內(nèi)存的火焰圖如下 :

 cpu的火焰圖如下:

 通過對火焰圖的分析,可以明顯的看到j(luò)son.Marshal 和 json.Unmarshal 有明顯的占用問題。跟著火焰圖去找尋調(diào)用此處的該方法,定位到

此處就不列出runtime.Context對象的具體情況了,你可以理解為里面多處指針,多處切片。反正就是結(jié)構(gòu)體很大 【PS:改天針對大結(jié)構(gòu)體出個壓測結(jié)果】

發(fā)現(xiàn)問題后更換如下代碼進行對象copy,注意此拷貝結(jié)構(gòu)體不能有小寫字母開頭。另外建議盡量少進行對象copy,盡可能的細(xì)化到需要copy的地方

/**
 * @Description:深拷貝數(shù)據(jù) (慎用--結(jié)構(gòu)體不能有小寫字母開頭)
 */
func DeepCopy(dst, src interface{}) error {
   var buf bytes.Buffer
   if err := gob.NewEncoder(&buf).Encode(src); err != nil {
      return err
   }
   return gob.NewDecoder(bytes.NewBuffer(buf.Bytes())).Decode(dst)
}

到此這篇關(guān)于線上問題排查之golang使用json進行對象copy的文章就介紹到這了,更多相關(guān) golang copy內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • go語言中嵌套結(jié)構(gòu)體的實現(xiàn)

    go語言中嵌套結(jié)構(gòu)體的實現(xiàn)

    在Go語言中,嵌套結(jié)構(gòu)體可定義為一個結(jié)構(gòu)體內(nèi)包含另一個結(jié)構(gòu)體,嵌套可以是值嵌套或指針嵌套,兩者在內(nèi)存分配和修改影響上有顯著區(qū)別,本文就來詳細(xì)的介紹一下,感興趣的可以了解一下
    2024-09-09
  • Golang?基礎(chǔ)面試題集錦

    Golang?基礎(chǔ)面試題集錦

    這篇文章主要為大家介紹了Golang?基礎(chǔ)面試題集錦,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-09-09
  • Golang的性能優(yōu)化和調(diào)試技巧

    Golang的性能優(yōu)化和調(diào)試技巧

    在開發(fā)和部署Go語言應(yīng)用程序時,性能優(yōu)化和調(diào)試是至關(guān)重要的,篇博客將介紹一些常用的Golang性能優(yōu)化和調(diào)試技巧,幫助您提升應(yīng)用程序的性能并解決潛在的問題
    2023-05-05
  • Golang并發(fā)之RWMutex的用法詳解

    Golang并發(fā)之RWMutex的用法詳解

    在?Go?語言中,RWMutex?是一種讀寫互斥鎖的實現(xiàn),它提供了一種簡單有效的方式來管理對共享資源的并發(fā)訪問。本文就來和大家詳細(xì)聊聊RWMutex的用法吧
    2023-04-04
  • Go框架自動化工具Beego使用詳解

    Go框架自動化工具Beego使用詳解

    這篇文章主要為大家介紹了Go框架自動化工具Beego使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-12-12
  • Go語言處理Excel文件的教程詳解

    Go語言處理Excel文件的教程詳解

    在Go語言中,有許多庫和工具可用于處理Excel文件,本文將介紹如何使用Go語言處理Excel文件,包括讀取、寫入和修改Excel文件,需要的小伙伴可以了解下
    2024-01-01
  • go 壓縮解壓zip文件源碼示例

    go 壓縮解壓zip文件源碼示例

    這篇文章主要為大家介紹了go壓縮及解壓zip文件的源碼示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-07-07
  • Golang極簡入門教程(三):并發(fā)支持

    Golang極簡入門教程(三):并發(fā)支持

    這篇文章主要介紹了Golang極簡入門教程(三):并發(fā)支持,本文講解了goroutine線程、channel 操作符等內(nèi)容,需要的朋友可以參考下
    2014-10-10
  • 淺析Golang中如何實現(xiàn)一個強大的重試機制

    淺析Golang中如何實現(xiàn)一個強大的重試機制

    在 Go 語言中,實現(xiàn)一個強大的重試機制可以通過多種方式來完成,這篇文章為大家介紹了一個常見的實現(xiàn)方法,需要的小伙伴可以參考一下
    2025-03-03
  • GoLand?使用自定義包的實現(xiàn)步驟

    GoLand?使用自定義包的實現(xiàn)步驟

    包是Go語言中代碼組成和代碼編譯的主要方式,本文主要介紹了GoLand?使用自定義包的實現(xiàn)步驟,具有一定的參考價值,感興趣的可以了解一下
    2024-06-06

最新評論

禹州市| 保山市| 大连市| 五原县| 碌曲县| 南木林县| 江西省| 南和县| 徐水县| 安义县| 当阳市| 翁牛特旗| 钦州市| 玛多县| 吴旗县| 博野县| 肥东县| 红河县| 醴陵市| 陆丰市| 射洪县| 民勤县| 江安县| 即墨市| 宜兴市| 洮南市| 安图县| 芷江| 海城市| 册亨县| 得荣县| 闽清县| 武邑县| 麦盖提县| 湛江市| 徐汇区| 彰化市| 永顺县| 依兰县| 阿拉善右旗| 绥中县|