性能分析流程
性能這塊,就好比屌絲想追白富美(暫且不說這個白富美的年齡,)…一直在YY的狀態!!
但是對於屌絲來說,最不害怕的是啥,就是不要臉~ ~
所以,爲了能鹹魚翻身,爲了能少奮鬥三十年,
更爲有底氣對阿姨說:阿姨,我不想努力了~ ~
所以,
屌絲也開始了"奮發圖強"。
我們常見的系統架構,大體可分爲3部分:
web服務
APP服務
DB服務
如下圖,傳統架構
所以,我們要分析的性能無非就是分析這3部分,
Web服務、APP服務一般運行在中間件上,
中間件與DB運行在操作系統上,
操作系統來管理計算機硬件設備(如 CPU、內存、磁盤、網卡等)。
小魚:小屌絲,我這樣一列舉,是不是覺得,白富美也沒有那麼觸不可及,至少,知道了白富美的喜(愛)好,作息時間表等。
小屌絲:魚哥,魚叔,能不能再來點更深入的 ~ ~
現在,我們用一個典型的流程, 以J2EE爲例,來看看屌絲怎麼追阿姨 白富美的!
常見的J2EE應用框架一般分爲:
web層:請求載入、負載均衡、頁面渲染等,
應用層:業務邏輯實現,
持久化層:數據記錄
下圖,是一個典型的J2EE應用,我們來看看,在性能測試過程中,需要關注哪些指標:
業務名詞解釋:
- Client :客戶瀏覽器,eg:IE,Chrome,Firefox等;
- LoadMachine:是生成負債的機器,即我們的壓測機器用來模擬用戶負債;
- Web Server:提供web服務的服務器,即我們訪問的Web頁面由此服務器提供服務;一般部署在 Nginx,Apache等中間件上;
4.Middleware :中間件,如Tomcat、Jboss、WebLogic等; - OS:操作系統,Windows或者Linux;
- System Resource:系統資源,如CPU、內存、磁盤、網絡等;
- APP Server:應用服務,實現業務邏輯,如審生成訂單,生成統計報表;
- DB:數據庫服務器,如Mysql,Sqlserver,Oracle等;
性能詞彙解釋:
①
RT:響應時間,一筆業務的完成時間;
TPS:每秒完成的事物數;
CPU:CPU性能指標,如CPU利用率,CPU負載;
Mem:內存性能指標,如可用可用物理內存,可用內存使用率;
Disk:Disk性能指標,如Disk Time,IO等待;
Network:網絡指標,如寬帶使用率,任務隊列長度;
②
TCP Connections:指TCP連接數,可以用netstat命令統計得到;
Thread Pool:中間件建立的線程池,監控線程狀態;
JVM:JVM性能指標,如GC情況,Heap使用情況;
Load Average:CPU負載列隊長度;
③
DB Connections:中間件與數據庫之間建立的鏈接數及鏈接狀態;
④
DB Time:消耗在數據庫上的CPU時間;
TOP SQL:按內存佔用,由多到少排序SQL,按CPU佔用由多到少排序SQL;
PGA、SGA:PGA/SGA內存使用情況。
這時候又會問,小魚,有能耐,你從咱性能測試工程師角度來舉個栗子,讓咱也瞅瞅,到底都分析啥!!
我就想問:你…瞅我幹啥?? 瞅下面的栗子!!!
性能測試工程師角度分析過程
序號 | 步驟名稱 | 說 明 |
---|---|---|
1 | 檢查RT | 模擬用戶發起負載後,採用自頂向下的方式首先按分析RT(響應時間) |
2 | 檢查TPS | TPS大,而RT小,說明性能良好 |
3 | 檢查負載機資源消耗 | 檢查CPU使用率,負載(Load Average)確定是用戶CPU佔用率高,還是服務器CPU佔用率高 |
4 | 檢查Web服務器資源消耗 | ①檢查CPU使用率;②檢查內存使用情況;③檢查磁盤使用情況;④檢查帶寬佔用情況;⑤分析Web頁面響應的時間組成,確認是什麼請求影響的性能 |
5 | 判斷負載機是否有性能問題 | 確認負債機的正常運行,確保測試結果的準確性 |
6 | 確認是否Web服務器瓶頸 | 判斷是否是Web服務器硬件性能問題 |
7 | 檢查中間件配置 | 檢查是否中間件配置問題 |
8 | 檢查APP服務器資源消耗 | 關於CPU、內存、磁盤、IO,判斷是否是APP服務器硬件性能瓶頸 |
9 | DB資源消耗分析 | ①CPU消耗,CPU負載;②內存消耗;③IO繁忙程度;④數據庫監控;(不熟悉數據庫可以找DBA來幫忙) |
10 | DB性能問題 | 由監控結果來判斷是否是其問題(同樣,不熟悉可以找DBA來幫忙) |
11 | 是否是SQL問題 | ①定位不合理的SQL佔比;②索引是否正常使用;③查詢共享SQL是否合理範圍;④檢查解析是否合理;⑤檢查數據ER結構是否合理;⑥檢查數據熱點問題;⑦檢查數據分佈是否合理;⑧檢查碎片整理等 |
12 | 其他 | 如網絡堵塞、磁盤IO瓶頸、熱點等 |
小屌絲:唉我去~~~~ 魚哥,魚叔,你 這個小栗子舉的,挺高啊。
小魚:一般般的了(臭不要臉的勁又來了)~
小屌絲:魚叔,那你能不能概況以下,學習性能,需要了解的知識點
小魚:我就知道你能說這句話,請往下看:
性能測試結果分析,包含但不僅限於的知識點:
①硬件知識(CPU、RAM、Disk、Net等);
②系統知識(os:linux、Windows);
③中間件知識(JVM、Tomcat、Jboss、WebLogic、WebSphere等);
④數據庫知識(Mysql、SqlServer、Oracle、DB2、Sysbase等)
⑤網絡知識(如截包分析);
⑥程序知識(如java);
⑦架構知識(如SSH架構)。
小魚:完美~ ~ ~ ~
小屌絲:魚叔,那按照這個騷流程,努力提升自我屌絲形象,是不是就能搞到白富美,走上人生巔峯,夜夜笙簫~~
小魚:小屌絲,讓你走上人生巔峯的,不一定是年輕的白富美!有可能是80歲的…白富美…
小屌絲:挖草~ 那夜夜笙簫…
小屌絲:魚叔,能不能在share一點你的精華…
小魚:額… 等我在整理一些關於優化方面的精華。
小屌絲:魚叔,你趕緊撒冷的, 我"獵捕"到一個白富美,聽說快過80大壽了!!
小魚:挖草~ 挖草~ 知道了,知道了…