性能分析之分析決策樹2

  • 2019 年 12 月 10 日
  • 筆記

背景

初學者對性能分析是個《橫看成嶺側成峰,遠近高低各不同。不識廬山真面目,只緣身在此山中。》那麼應該怎麼學習才能建立起自己的知識體系,才能做到《千山同一月,萬戶盡皆春。千江有水千江月,萬里無雲萬里天》今天咱們談談7DGroup創始人高樓老師的性能分析之決策樹分析法二。

分析樹圖一

第一層是業務指標,

  • 響應時間
  • TPS
  • 錯誤率

第二層是作業系統

  • CPU
  • IO
  • MEM
  • NET

分析

在這一層咱們主要關注IO ,既然是關注IO,如果IO高應該怎麼去分析?怎麼定位?

1、在linux作業系統中IO分析法最常見的命令是iostat

iostat -d -x -k 1 10

Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util

輸出資訊的含義:

  • rsec/s:每秒讀取的扇區數;
  • wsec/:每秒寫入的扇區數。
  • avgrq-sz 平均請求扇區的大小
  • avgqu-sz 是平均請求隊列的長度。毫無疑問,隊列長度越短越好。
  • await:每一個IO請求的處理的平均時間(單位是微秒毫秒)。這裡可以理解為IO的響應時間,一般系統IO響應時間應該低於5ms,如果大於10ms就比較大了。這個時間包括了隊列時間和服務時間,也就是說,一般情況下,await大於svctm,它們的差值越小,則說明隊列時間越短,反之差值越大,隊列時間越長,說明系統出了問題。
  • svctm 表示平均每次設備I/O操作的服務時間(以毫秒為單位)。如果svctm的值與await很接近,表示幾乎沒有I/O等待,磁碟性能很好,如果await的值遠高於svctm的值,則表示I/O隊列等待太長,系統上運行的應用程式將變慢。
  • %util:在統計時間內所有處理IO時間,除以總共統計時間。例如,如果統計間隔1秒,該設備有0.8秒在處理IO,而0.2秒閑置,那麼該設備的%util = 0.8/1 = 80%,所以該參數暗示了設備的繁忙程度。一般地,如果該參數是100%表示設備已經接近滿負荷運行了(當然如果是多磁碟,即使%util是100%,因為磁碟的並發能力,所以磁碟使用未必就到了瓶頸)。

主要關注參數參考

  • util:
  • avgqu-sz
  • await:
  • svtm
  • util

IO瓶頸的癥狀

  • %util 很高
  • await 遠大於svctm
  • avgqu-sz比較大
  • cpu > wa 過大 (參考值 超過20)
  • system > bi&bo 過大(參考值 超過 2000)

總結:

《楞嚴經》中雲「理則頓悟,乘悟並銷;事非頓除,因次第盡」,簡單來說就是道理明白,但事情還需要一件一件的去做,咱們工作與生活也是這樣,道理明白,但事情還得一件一件去做,想做好性能測試就得一個組件一個組件去了解,明白每個組件屬性,高老師經典一句:「看到指標下一步做什麼???」後面的知識沉澱不是一朝一夕的事情。

Tags: