精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Go 服務進行自動采樣性能分析的方案設計與實現

開發 后端
線上服務的性能分析,一直以來都是比較難的點,主要是難在無法在性能出現異常的當時捕捉到現場信息。有人可能會說,這有什么難的,直接用 Go 工具集里的 pprof 訪問一下,進行采樣拿下來分析就行了。

[[442190]]

本文轉載自微信公眾號「網管叨bi叨」,作者 KevinYan11。轉載本文請聯系網管叨bi叨公眾號。

線上服務的性能分析,一直以來都是比較難的點,主要是難在無法在性能出現異常的當時捕捉到現場信息。有人可能會說,這有什么難的,直接用 Go 工具集里的 pprof 訪問一下,進行采樣拿下來分析就行了。話雖不假,不過拋開現實場景談解決方案一般都會非常打臉,真的不行。

舉個現實中的例子,比如服務可能由于哪里的代碼寫的不好,內存占用率一點點漲上來,表現出來的現象就是服務隔一段時間就會重啟一次(被集群重新拉起來),如果服務部署在 K8s上,那 K8s 集群更是會發現 Pod 的資源超限后把 Pod 殺掉重新創建一個。即使你能 24 小時 Oncall,在收到告警的那一刻程序可能已經重啟了,所以傳統的訪問 pprof 路由主動采樣在這種場景下不可取。

前段時間發表的文章學會這幾招讓 Go 程序自己監控自己 有讀者問到,讓Go程序監控自己進程的各項指標有何用處,我的回答是可以做一些服務治理,或者程序內部分析的事情。今天就借此跟大家分享一下,怎么給 Go 程序做自動采樣。

下面我帶著大家先看一看 Go 程序怎么采樣,再剖析一下怎么讓 Go 程序進行自動采樣。

Go 的采樣工具

Go的pprof工具集,提供了Go程序內部多種性能指標的采樣能力,我們常會用到的性能采樣指標有這些:

  • profile:CPU采樣
  • heap:堆中活躍對象的內存分配情況的采樣
  • goroutine:當前所有goroutine的堆棧信息
  • allocs: 會采樣自程序啟動所有對象的內存分配信息(包括已經被GC回收的內存)
  • threadcreate:采樣導致創建新系統線程的堆棧信息

怎么獲取采樣信息

網上最常見的例子是在服務端開啟端口讓客戶端通過HTTP訪問指定的路由進行各種信息的采樣

  1. import ( 
  2.  "net/http/pprof" 
  3.  
  4. func main() { 
  5.  http.HandleFunc("/debug/pprof/heap", pprof.Index
  6.  http.HandleFunc("/debug/pprof/profile", pprof.Profile) 
  7.  http.HandleFunc("/"index
  8.  ...... 
  9.  http.ListenAndServe(":80", nil) 
  1. $ go tool pprof http://localhost/debug/pprof/profile 

這種方法的弊端就是

  • 需要客戶端主動請求特定路由進行采樣,沒法在資源出現尖刺的第一時間進行采樣。
  • 會注冊多個/debug/pprof類的路由,相當于對 Web 服務有部分侵入。
  • 對于非 Web 服務,還需在服務所在的節點上單獨開 HTTP 端口,起 Web 服務注冊 debug 路由才能進行采集,對原服務侵入性更大。

Runtime pprof

除了上面通過HTTP訪問指定路由進行采樣外,還有一種主要的方法是使用runtime.pprof 提供的Lookup方法完成各資源維度的信息采樣。

  1. // lookup takes a profile name 
  2. pprof.Lookup("heap").WriteTo(some_file, 0) 
  3. pprof.Lookup("goroutine").WriteTo(some_file, 0) 
  4. pprof.Lookup("threadcreate").WriteTo(some_file, 0) 

CPU的采樣方式runtime/pprof提供了單獨的方法在開關時間段內對 CPU 進行采樣

  1. bf, err := os.OpenFile('tmp/profile.out', os.O_RDWR | os.O_CREATE | os.O_APPEND, 0644) 
  2. err = pprof.StartCPUProfile(bf) 
  3. time.Sleep(2 * time.Second
  4. pprof.StopCPUProfile() 

這種方式是操作簡單,把采樣信息可以直接寫到文件里,不需要額外開端口,再手動通過HTTP進行采樣,但是弊端也很明顯--不停的采樣會影響性能。固定時間間隔的采樣(比如每隔五分鐘執行一次采樣)不夠有針對性,有可能采樣的時候資源并不緊張。

適合采樣的時間點

經過了上面的分析,現在看來只要讓Go進程在自己占用資源突增或者超過一定的閾值時再用pprof對程序Runtime進行采樣,才是最合適的,那么接下來我們就要想一下,到底以什么樣的規則,才能判斷出當前周期是適合采樣的時段呢。

判斷采樣時間點的規則

CPU 使用,內存占用和 goroutine 數,都可以用數值表示,所以無論是使用率慢慢上升直到超過閾值,還是突增之后迅速回落,都可以用簡單的規則來表示,比如:

  • cpu/mem/goroutine數 突然比正常情況下的平均值高出了一定的比例,比如說資源占用率突增25%就是出現了資源尖刺。
  • cpu/mem/goroutine數 超過了程序正常運行情況下的閾值,比如說80%就定義為服務資源緊張。

這兩條規則可以描述大部分情況下的異常,第一個規則可以表示瞬時的,劇烈的抖動,之后可能迅速恢復正常的情況。

規則二可以用來表示那些緩慢上升,但最終超出閾值的情況,例如下圖中內存使用率一直在慢慢上升,直到超過了設置的80%的閾值。

內存使用率超過80%

而規則一判斷資源突增,需要與歷史均值對比才行。在沒有歷史數據的情況下,就只能在程序內自行收集了,比如進程的內存使用率,我們可以以每 10 秒為一個周期,運行一次采集,在內存中保留最近 5 ~ 10 個周期的內存使用率,并持續與之前記錄的內存使用率均值進行比較:

內存使用率突增超過25%

比如像上圖里的情況,前五個周期收集到的內存占用率在 35% 左右波動,而最新周期收集到的數據為70%,這顯然是瞬時突增導致的異常情況,那么我們就可以在這個時間點,自動讓程序調用 pprof 把 mem 信息采樣到文件里,后續無論服務是否已重啟都能把采樣信息拿下來分析。

而關于怎么讓Go程序獲取本進程的CPU、Mem使用量在系統中的占比,我們在之前的文章 學會這幾招讓 Go 程序自己監控自己 已經跟大家分享過了,只需要編碼實現在上面描述的兩個采樣時機進行性能采樣即可。

開源的自動采樣庫

社區里其實已經有開源庫實現了類似的功能,比如曹大在螞蟻的時候設計的Holmes ,其實曹大在桃花源公眾號里發文章分享過。

使用起來也比較方便,比如下面是一個對內存使用率突增 25% 和超過閾值 80% 這兩種情況下讓程序自動進行Mem信息采樣的例子。如果你公司里的基建還沒有到把持續采樣做到統一平臺里的水平的話,Holmes 是一個比較好的選擇,能快速解決問題,比較適合中小型的業務快速發展的團隊。

簡單的看一個 Web 服務接入 Holmes 分析內存占用率的例子。

  1. package main 
  2.  
  3. import ( 
  4.  "net/http" 
  5.  "time" 
  6.  
  7.  "github.com/mosn/holmes" 
  8.  
  9. func init() { 
  10.  http.HandleFunc("/make1gb", make1gbslice) 
  11.  go http.ListenAndServe(":10003", nil) 
  12.  
  13. func main() { 
  14.  h, _ := holmes.New( 
  15.   holmes.WithCollectInterval("2s"), 
  16.   holmes.WithCoolDown("1m"), 
  17.   holmes.WithDumpPath("/tmp"), 
  18.   holmes.WithTextDump(), 
  19.   holmes.WithMemDump(3, 25, 80), 
  20.  ) 
  21.  h.EnableMemDump().Start() 
  22.  time.Sleep(time.Hour
  23.  
  24. func make1gbslice(wr http.ResponseWriter, req *http.Request) { 
  25.  var a = make([]byte, 1073741824) 
  26.  _ = a 
  • WithCollectInterval("2s") 指定 2s 為區間監控進程的資源占用率, 線上建議設置大于10s的采樣區間。
  • WithMemDump(3, 25, 80) 指定進程的mem占用率超過3%后(線上建議設置成30),如果有25%突增,或者總占用率超過80%后進行采樣

通過采樣能獲取到了內存資源突增時的程序調用棧,[1: 1073741824] 表示有一個對象消耗了1GB的內存,通過調用棧分析我們也能快速找到找到造成資源占用的代碼位置。

  1. heap profile: 0: 0 [1: 1073741824] @ heap/1048576 
  2. 0: 0 [1: 1073741824] @ 0x42ba3ef 0x4252254 0x4254095 0x4254fd3 0x425128c 0x40650a1 
  3. # 0x42ba3ee main.make1gbslice+0x3e   /Users/xargin/go/src/github.com/mosn/holmes/example/1gbslice.go:24 
  4. # 0x4252253 net/http.HandlerFunc.ServeHTTP+0x43 /Users/xargin/sdk/go1.14.2/src/net/http/server.go:2012 
  5. # 0x4254094 net/http.(*ServeMux).ServeHTTP+0x1a4 /Users/xargin/sdk/go1.14.2/src/net/http/server.go:2387 
  6. # 0x4254fd2 net/http.serverHandler.ServeHTTP+0xa2 /Users/xargin/sdk/go1.14.2/src/net/http/server.go:2807 
  7. # 0x425128b net/http.(*conn).serve+0x86b  /Users/xargin/sdk/go1.14.2/src/net/http/server.go:1895 

關于這個庫更詳細的使用介紹可以直接看倉庫提供的Get Started 教程 https://github.com/mosn/holmes

另外我還做了個docker 方便進行試驗,鏡像已經上傳到了Docker Hub上,大家感興趣的可以Down下來自己在電腦上快速試驗一下。

通過以下命令即可快速體驗。

docker run --name go-profile-demo -v /tmp:/tmp -p 10030:80 --rm -d kevinyan001/go-profiling

容器里Go服務提供的路由如下

Holmes 試驗容器的路由

 

三個路由分別對應了內存、CPU過載、通道阻塞,可以直接壓測訪問,觀察效果。自動采樣的結果除了進到容器里去看外,還可以在本地和容器做映射的 /tmp 目錄中找到。

 

責任編輯:武曉燕 來源: 網管叨bi叨
相關推薦

2022-08-20 07:28:44

?數據地圖大數據數據血緣

2009-05-26 11:24:00

2010-08-25 17:18:10

DHCP服務器

2022-04-29 10:53:37

計算實踐方案

2025-07-30 02:33:00

2021-06-09 18:52:05

方案設計庫存數

2019-07-25 08:14:40

RedisJava數據庫

2023-04-12 08:43:25

2021-11-30 23:53:28

數據庫方案

2016-09-18 23:40:38

微服務實時性能分析

2021-01-24 11:46:26

自動化Web 優化

2023-05-17 00:15:11

TCCXA模式

2022-05-11 12:52:25

框架實踐應用

2024-12-13 16:28:43

2022-04-26 05:36:42

服務治理模式

2014-11-14 09:42:53

VoLTE

2023-07-13 11:03:12

2022-05-10 00:03:48

業務存儲結構方案

2018-10-16 10:13:21

2023-01-02 12:08:36

自動駕駛
點贊
收藏

51CTO技術棧公眾號

中文字幕网站在线观看| 成人短视频在线看| 国产三级理论片| 99久久九九| 欧美本精品男人aⅴ天堂| 欧美中文字幕在线观看视频| 天堂av在线播放| 久久精品国产精品青草| 欧美丰满老妇厨房牲生活| 国产chinese中国hdxxxx| 免费观看成人性生生活片 | 国产传媒一区二区三区| 综合激情网五月| 中文字幕日韩一区二区不卡 | 俄罗斯黄色录像| 88xx成人网| 午夜视频一区在线观看| 亚洲啪啪av| 深夜福利在线看| 国产高清在线精品| 国产精品私拍pans大尺度在线| 久草资源在线视频| 91青青国产在线观看精品| 亚洲国产高清福利视频| 91网址在线观看精品| 桃色av一区二区| 亚洲一区二区三区中文字幕| 色一情一区二区三区四区 | 国产欧美久久久精品影院| 亚洲人成免费电影| 亚洲最大视频网| 农村妇女一区二区| 在线看不卡av| 97在线播放视频| aa国产成人| 亚洲一区二区三区精品在线| 日本三日本三级少妇三级66| shkd中文字幕久久在线观看| 久久先锋影音av鲁色资源| 国产精品入口免费| 性色av蜜臀av| 国产精品69毛片高清亚洲| 国产视频福利一区| 亚洲综合精品国产一区二区三区 | 97人人模人人爽人人喊中文字| 黄视频网站免费看| 99久久精品网| 久久久91精品国产一区不卡| 欧美色图17p| 欧美精品一区二区三区精品| 亚洲性无码av在线| 国产熟妇久久777777| 天堂一区二区三区四区| 精品亚洲精品福利线在观看| 日韩免费高清一区二区| 秋霞蜜臀av久久电影网免费| 日韩久久午夜影院| 久久午夜夜伦鲁鲁片| 久久av国产紧身裤| 日韩精品电影网| 亚洲成人网在线播放| 国产精品一区二区三区av麻| 一本色道久久88综合亚洲精品ⅰ | 欧美成人直播| 久久人人爽人人爽爽久久| 老司机成人免费视频| 亚洲成人免费| 欧美精品成人在线| 久久久精品免费看| 免费精品视频最新在线| 91精品国产综合久久香蕉最新版| 国产精品久久久久久久久久久久久久久久| 久久av资源站| 成人蜜桃视频| 深夜福利视频一区| 国产精品妹子av| 国产911在线观看| av电影在线地址| 色婷婷精品大在线视频| 久久黄色片网站| 欧美特黄不卡| 亚洲女人天堂av| www.黄色com| 亚洲视频福利| 国产成人精品久久亚洲高清不卡| 一区二区视频播放| 国产aⅴ精品一区二区三区色成熟| 国产综合色一区二区三区| 国产高清视频在线| 亚洲乱码中文字幕综合| 黄网站欧美内射| 成人性片免费| 欧美精品一区二区久久婷婷| 久久久久久久久久久久久久久| 欧美电影免费播放| 国内成人精品一区| 依依成人在线视频| 成人激情校园春色| 亚洲精品9999| xxx性欧美| 欧美日韩国产a| 精品1卡二卡三卡四卡老狼| 国产精品免费99久久久| 欧美激情中文网| 中文字幕av影视| www.日韩精品| 99视频精品全部免费看| 欧美与亚洲与日本直播| 精品国产a毛片| 女性裸体视频网站| 久久成人精品| 国产精品久久久久久免费观看| 亚洲视频tv| 色综合中文综合网| 精品国产免费久久久久久婷婷| 日韩一区亚洲二区| 91地址最新发布| 亚洲AV无码一区二区三区性| 欧美激情一二三区| 国产成人无码精品久久久性色| 亚洲精品第一| 中日韩美女免费视频网址在线观看| 国产一卡二卡在线| 国产福利一区二区三区视频| 亚洲午夜在线观看| 日韩伦理三区| 国产视频精品va久久久久久| 日韩欧美中文字幕视频| 久久国产精品99久久久久久老狼| 欧美第一黄网| 天天综合av| 日韩精品福利在线| 日本午夜精品理论片a级app发布| 韩国三级中文字幕hd久久精品| 亚洲成人a**址| 欧美片第一页| 亚洲免费一级电影| 久久精品国产成人av| 99在线热播精品免费| 久久久久久人妻一区二区三区| 精品国产亚洲一区二区三区大结局| 在线视频日韩精品| 丰满人妻一区二区三区四区| 久久理论电影网| 久久精品免费一区二区| 亚欧日韩另类中文欧美| 2018日韩中文字幕| 亚洲三区在线观看无套内射| 五月激情综合婷婷| 91精品国产自产| 玖玖国产精品视频| 日韩中文一区| 日日夜夜精品| 欧美成人免费观看| 成人激情四射网| 亚洲电影一区二区| 亚洲一级av无码毛片精品| 亚洲国产高清一区二区三区| 国内视频一区二区| 345成人影院| 亚洲性av在线| 国产精品高潮呻吟av| 亚洲欧美另类小说| 一级少妇精品久久久久久久| 国产日韩亚洲欧美精品| 麻豆精品传媒视频| 成人a在线观看高清电影| 日韩有码片在线观看| 国产精品亚洲欧美在线播放| 亚洲自拍与偷拍| 欧美xxxxx精品| 日韩在线播放一区二区| 一区二区冒白浆视频| 久久在线观看| 4k岛国日韩精品**专区| 国产日韩精品在线看| 欧美精品一二三| 国产精品theporn动漫| wwwwww.欧美系列| 91制片厂毛片| 欧美日韩一区二区高清| 免费一区二区三区| 另类一区二区三区| 欧美极品欧美精品欧美视频| 青青久在线视频| 日韩一区二区三区视频| 99久热在线精品996热是什么| 中文字幕免费一区| 国产女主播在线播放| 久久一综合视频| 亚洲天堂第一区| 久久综合亚洲| 不卡视频一区| 久久夜夜久久| 91精品国产沙发| 黄视频在线观看网站| 日韩电视剧在线观看免费网站| 久久这里只有精品9| 亚洲一区影音先锋| 1024手机在线观看你懂的| 粉嫩av一区二区三区粉嫩| 亚洲一二三区av| 亚洲黄网站黄| 国产大尺度在线观看| 国产探花在线精品| 国产精品果冻传媒潘| 欧美日韩视频免费看| 91sa在线看| 日本孕妇大胆孕交无码| 中文字幕在线精品| 日本a一级在线免费播放| 欧美一区二区视频网站| 波多野结衣午夜| 婷婷国产在线综合| 欧美日韩成人免费观看| 国产精品美女视频| 18禁裸乳无遮挡啪啪无码免费| 国产精品系列在线播放| 久久精品免费网站| 久久综合婷婷| 午夜精品久久久久久久无码| 欧美日韩国产色综合一二三四| 神马欧美一区二区| 亚洲丝袜啪啪| 久久国产主播精品| 成人福利一区| 91丨九色丨国产| 亚洲欧美在线综合| 国产精品扒开腿做爽爽爽视频| av中文在线资源库| 久久久久久久久电影| 成人在线观看免费网站| 日韩在线免费视频观看| 国产一级在线观看| 亚洲欧美日韩一区在线| 日韩一二三四| 精品亚洲精品福利线在观看| 午夜国产在线视频| 日韩不卡在线观看| 天天操天天干天天插| 亚洲第一男人av| 人妻一区二区三区免费| 精品国偷自产国产一区| 性生活三级视频| 欧美岛国在线观看| 亚洲第一视频在线| 亚洲成人av片| 国产刺激高潮av| 亚洲国产三级网| 五月婷婷在线播放| 亚洲精品视频久久| 川上优的av在线一区二区| 在线观看91久久久久久| 日本在线看片免费人成视1000| 最近中文字幕日韩精品 | 中文字幕av一区 二区| 日本一卡二卡在线播放| 国产精品久久久久久久浪潮网站| 林心如三级全黄裸体| 亚洲欧洲成人自拍| 欧美精品一级片| 欧美日韩色婷婷| 波多野结衣视频网址| 3d动漫精品啪啪一区二区竹菊| 99视频国产精品免费观看a| 欧美v日韩v国产v| 深夜福利在线视频| 中文字幕日韩欧美精品在线观看| 免费黄网站在线播放| 久久99视频免费| 爱啪视频在线观看视频免费| 日本欧美黄网站| 欧洲亚洲精品久久久久| 99www免费人成精品| 偷窥自拍亚洲色图精选| 亚洲欧美丝袜| 国产精品观看| 亚洲色精品三区二区一区| 精品一区二区综合| 国产一级二级在线观看| 国产人成一区二区三区影院| 日韩欧美123区| 欧美日韩精品在线播放| 怡红院男人天堂| 精品福利一二区| 高清毛片在线看| 欧美国产日本高清在线 | 欧洲日韩一区二区三区| av中文字幕在线免费观看| 国产丝袜高跟一区| 欧美精品日韩少妇| 97婷婷涩涩精品一区| 午夜不卡一区| 明星裸体视频一区二区| 91精品高清| 在线视频日韩一区| 成人精品在线视频观看| 日韩av网站在线播放| 亚洲成人免费影院| 国产日韩欧美视频在线观看| 国产丝袜一区二区| 成人福利网站| 国产精品户外野外| 女人抽搐喷水高潮国产精品| 国产经典久久久| 日韩精品色哟哟| 大地资源二中文在线影视观看| 亚洲人午夜精品天堂一二香蕉| 69国产精品视频免费观看| 日韩精品一区在线| 巨大荫蒂视频欧美另类大| 欧美一级成年大片在线观看| 日韩精品成人| 中国一区二区三区| 日本不卡一区二区三区 | 国产乱码精品一区二区三区精东 | 不卡一区二区三区四区五区| 日本不卡二三区| 99久久久无码国产精品6| 成人少妇影院yyyy| 特级片在线观看| 欧美日韩不卡一区| 北岛玲一区二区三区| 欧美一区二区三区……| 国产精品色在线网站| 穿情趣内衣被c到高潮视频| 久久精品国产一区二区三 | 亚洲精品欧美激情| 在线观看一二三区| 亚洲视频电影图片偷拍一区| 日本不卡免费高清视频在线| 国产精品一区二区三区免费| 欧美日本一区二区视频在线观看 | 少妇高潮喷水在线观看| 国产精品12区| 国产av无码专区亚洲av毛网站 | 六月丁香综合网| 欧美丰满少妇xxxxx做受| 精品国产伦一区二区三区观看说明| 在线日韩av永久免费观看| 美腿丝袜亚洲色图| 少妇的滋味中文字幕bd| 欧美午夜不卡视频| 福利在线观看| 国产精品日韩欧美| 成人看的羞羞网站| 国产精品区在线| 中文字幕中文乱码欧美一区二区| 中文字幕人成人乱码亚洲电影| 在线日韩日本国产亚洲| 国产极品嫩模在线观看91精品| 亚洲国产精品一区二区第四页av| 日本在线不卡视频一二三区| 国产精品美女高潮无套| 欧美少妇bbb| www.在线视频| 国产伦精品一区二区三区在线| 亚洲高清电影| 少妇饥渴放荡91麻豆| 91国模大尺度私拍在线视频| av在线免费一区| 91免费福利视频| 国内精品久久久久久久97牛牛 | 日本高清久久天堂| 欧美精品尤物在线观看| 天天影视色综合| 亚洲国产三级在线| 四虎在线观看| 国产欧美日韩91| 精品999成人| 精品国产aaa| 91精品综合久久久久久| av丝袜在线| 西游记1978| 国产aⅴ综合色| 无码人妻精品一区二区| 久久精品国产96久久久香蕉| jizz性欧美23| 国产免费视频传媒| 一区二区视频在线看| 日韩av高清在线| 91视频国产高清| 国产视频一区三区| 影音先锋男人资源在线观看| 日韩免费看网站| 欧美片第一页| 欧美这里只有精品| 国产亚洲人成网站| 精品毛片一区二区三区| 日韩av电影国产| 女人天堂亚洲aⅴ在线观看| 欧美亚一区二区三区| 欧美一激情一区二区三区| 不卡av播放| 小泽玛利亚av在线| 日本一区二区三区国色天香| 草草视频在线播放| 国产精品极品尤物在线观看| 亚洲一级二级| 免费精品在线视频|