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

線上問題排查之golang使用json進(jìn)行對象copy

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

前言:

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

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

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

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

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

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

執(zhí)行上述兩個(gè)命令后,其會生成文件在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)體出個(gè)壓測結(jié)果】

發(fā)現(xiàn)問題后更換如下代碼進(jìn)行對象copy,注意此拷貝結(jié)構(gòu)體不能有小寫字母開頭。另外建議盡量少進(jìn)行對象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進(jìn)行對象copy的文章就介紹到這了,更多相關(guān) golang copy內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    淺析Golang中如何實(shí)現(xiàn)一個(gè)強(qiáng)大的重試機(jī)制

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

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

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

最新評論

顺义区| 巴东县| 兴和县| 凭祥市| 炎陵县| 璧山县| 龙游县| 山西省| 轮台县| 凤山市| 浑源县| 晴隆县| 大兴区| 叙永县| 兴业县| 封丘县| 丰原市| 托里县| 绥芬河市| 吴堡县| 巴马| 上林县| 青岛市| 崇仁县| 文成县| 凤山市| 高安市| 和平县| 谢通门县| 芦溪县| 监利县| 长顺县| 沅陵县| 抚宁县| 吴川市| 平泉县| 晋宁县| 漳平市| 建水县| 鄂托克前旗| 博客|