成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

曹大帶我學 Go之面向火焰圖編程

開發 后端
現實中聽過各種面向 XX 編程,什么面向過程編程、面向對象編程;也有一些俏皮的,面向薪資編程、面向老板編程;之前曹大還寫過一篇,面向事故編程。今天我們來講講面向火焰圖編程。

你好,我是小X。

曹大最近開 Go 課程了,小X 正在和曹大學 Go。

這個系列會講一些從課程中學到的讓人醍醐灌頂的東西,撥云見日,帶你重新認識 Go。

現實中聽過各種面向 XX 編程,什么面向過程編程、面向對象編程;也有一些俏皮的,面向薪資編程、面向老板編程;之前曹大還寫過一篇,面向事故編程。今天我們來講講面向火焰圖編程。

一般我們在做性能優化的時候,會先做壓測,然后進 pprof 尋找可能的原因及解法。

關注的指標,從服務角度看,包括:

  • 請求量
  • 錯誤數
  • 延遲

從用戶角度看,則是:

  • 延遲(Latency)
  • 吞吐量(Throughput)

性能優化的最終目標就是在延遲可以接受的場景下,盡可能提高系統的吞吐量。

對于 Go 服務,還得看更多:

  • 每秒鐘 GC 次數
  • GC 停頓時長(p99, max)
  • GC 占用的 CPU 大小
  • 堆內存占用大小
  • 協程數量
  • 申請、釋放的內存大小
  • 申請的對象數

對性能優化而言,我們可以在幾個層次分別進行優化:業務層、應用層、底層。

越在上層優化,回報越高。舉個簡單的例子,有業務方因為歷史原因,服務啟動之后,會周期性地調我們的接口拿一些數據。但是之后業務發生變動,拿的數據并沒有被使用,這塊代碼也沒相應地下線。而且因為對方的集群規模很大,所以這個調用量級還挺大。現在我們服務的容量即將到頂,需要優化服務或者擴容。

如果我們吭哧吭哧地去壓測、優化,擴容,很可能也能解決問題。并且,優化做得好的話,也能體現出自己的價值。但是平行世界有另一種解法,那就是去梳理業務方的使用場景,很可能直接就能下掉一半的訪問量,收益會大很多,而且操作起來也更簡單。

但是,通常情況下可能沒這么好運,我們還是得對著火焰圖來優化。

火焰圖的定義也不復雜:

在 Go 里,一般 pprof web 直接進去的圖不太好看懂,我們應該看火焰圖 。火焰圖就看寬度,寬度越寬,表示占用越大。

不怕它高,就怕它寬。

曹大說,想黑 Go,一張圖片就夠了:

7

我在這里有 2 個小點可以分享一下:

  • pprof 的火焰圖用當前這個 bar 的時間除以最上層 bar 的時間,就可以得到某個函數的耗時占比。
  • 用當前這個 bar 內存使用的占比乘以 RSS,得到的值是我們如果將這一塊內存使用優化掉之后,節省的內存大小。

火焰圖中的平頂山就很值得優化。什么是平頂山,最終要優化成什么樣子?

一句話,山頂很平的 bar 就叫平頂山??。優化之后,平頂山變窄或消失:

但有尖的是不好優化的 :

最后總結一下,面向火焰圖編程,非常簡單:我們逮著平頂山優化就行。

現實中可能因為公司的安全部門設置了很多阻礙,我們無法方便地獲取 profile 文件,自然就沒法愉快地去做性能優化了。基礎架構部門要做的事情就是盡可能方便地讓研發獲取到火焰圖。

 

好了,這就是今天全部的內容了~ 我是小X,我們下期再見~

 

責任編輯:武曉燕 來源: 碼農桃花源
相關推薦

2021-06-10 09:00:32

Go底層代碼

2021-06-07 10:47:02

GoGoexit函數

2021-06-01 09:27:53

Ast Go語言

2021-05-20 08:59:47

Go調度本質

2021-07-15 08:58:15

指定配置項Go

2021-08-09 07:47:39

ExtraGoMap

2021-05-27 08:59:09

Go匯編命令

2023-04-26 00:15:32

python面向對象java

2011-07-14 17:37:02

C++面向對象編程思想

2011-07-14 17:24:10

C++面向對象思想

2011-08-04 11:04:14

Objective-C 面向對象 繼承

2016-12-06 20:01:56

數據架構數據機器學習

2023-03-10 07:43:50

UML圖OOA面向對象

2024-01-08 07:02:48

數據設計模式

2017-02-05 16:51:35

網絡編程網絡系統

2022-09-19 00:29:01

編程語言Go 語言功能

2017-03-27 08:45:47

全棧技術管理

2013-03-11 09:23:22

Go語言面向對象

2015-08-04 09:59:29

編程學編程

2020-03-20 09:49:59

需求編程常態
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产午夜精品一区二区三区四区 | 91精品国产91久久久久青草 | 五月网婷婷 | 久久看精品 | 国产成人精品一区二区三区四区 | 国产免费让你躁在线视频 | 成人精品高清 | 亚洲成人免费网址 | 蜜月va乱码一区二区三区 | 婷婷久 | 午夜精品久久久久久久星辰影院 | 国产免费一区二区三区 | 欧美操操操 | 这里有精品 | 天天综合网永久 | com.色.www在线观看 | 午夜精品一区二区三区三上悠亚 | 成人久久久久 | 在线观看成人免费视频 | 日日操视频| av在线三级 | 欧美一卡二卡在线 | 在线国产视频 | 九久久| 亚洲视频在线观看 | 黄色国产在线视频 | 狠狠操狠狠操 | 亚洲精品一区中文字幕乱码 | 日本不卡一二三 | 国产福利网站 | 欧美精品一区二区在线观看 | 成人免费共享视频 | 国产精品视频一二三区 | 中文字幕在线免费观看 | 91九色porny首页最多播放 | 天天射夜夜操 | 天堂中文在线观看 | 91久久精品日日躁夜夜躁欧美 | 在线日韩视频 | 色婷婷狠狠 | 久久久久久蜜桃一区二区 |