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

