性能測試分析調優思路
我們可以通過事物的響應時間作為基礎來分析:
響應時間=網絡的延遲時間+應用的延遲時間+數據庫的延遲時間
數據流轉詳細過程:
1、從客戶端(負載機)發起請求,通過網絡傳輸到Web應用服務器。
2、Web應用服務器收到請求後,不會馬上處理,要找到空閑的進程/線程,再處理請求(比如說一些數據庫的DML操作)
3、DML操作請求通過網絡傳輸到數據庫服務器,數據庫服務器拿到SQL語句後進行語法解析、域解析,生成SQL的執行計劃,根據SQL的執行計劃去數據庫執行這條SQL語句。如果數據在內存裏面,直接從內存裏面把結果集通過網絡返回給應用服務器,如果這條數據不在內存裏面,需要到硬盤/磁盤去找到這條數據,然後放到內存中再返回給應用服務器。
4、應用服務器拿到返回結果後,不會馬上處理,需要喚起空閑進程/線程後,再進行下一步的業務邏輯處理。
5、如此循環反復,執行完成之後,再把返回結果集通過網絡返回給客戶端(負載機)。
整個過程包括7個階段:
客戶端→網絡→中間件→應用程序→數據庫→應用程序→客戶端
分析步驟:
1、客戶端(負載機)
壓力的發起點
如果壓測過程中發現應用程序的TPS、壓力、並發上不去,第一個應該檢查負載機,因為它是壓力的發起點。
負載機的性能瓶頸:網絡帶寬(上傳下載)、CPU、內存、操作系統
2、網絡
網絡錯誤率/丟包率
在Linux下用sar命令查看
更換網卡、增加帶寬
3、Web服務器
硬件:CPU、內存、磁盤
4、數據庫服務器
硬件:CPU、內存、磁盤
5、中間件
線程池/進程池排隊
6、數據庫
SQL使用是否合理
SQL執行效率
數據庫連接池是否繁忙
7、應用程序
JVM內存使用情況
GC使用是否合理,是否停頓時間過長
業務邏輯
算法
CPU、內存、硬盤之間的關系
1、CPU
就像人的大腦,主要負責相關事情的邏輯判斷、運算以及實際處理機制
查詢指令:cat /proc/cpuinfo
2、內存
大腦中的記憶區塊,將眼睛、皮膚等收集到的信息紀錄起來的地方,以供CPU進行判斷
CPU進行邏輯判斷、運算的數據來源於內存
查詢指令:cat /proc/meminfo
3、硬盤
大腦中的記憶區塊,將重要的數據記錄起來,以便未來再次使用這些數據
數據的最終的存儲區域
查詢指令:fdisk -l
總結:
CPU先從內存中拿數據進行處理、校驗、判斷,處理完之後把數據返回給內存,需要存儲的東西由內存放到硬盤裏面去進行處理。CPU不會直接操作硬盤裏面的數據,它操作的是內存。內存是中間介質,內存足夠大,內存中存放的數據就多,CPU能夠直接處理的數據就更多,這樣處理速度就快。
我們用工人、車間、倉庫來類比CPU、內存、磁盤。工人相當於CPU,在車間進行材料加工,車間相當於內存,車間的材料不夠就要去倉庫裏面去取,倉庫就相當於磁盤。只有車間足夠大,工人才可以一直在車間進行加工,不需要取倉庫取源材料,這樣效率更高,速度更快。
內存與硬盤以及虛擬內存的關系
虛擬內存
從磁盤上虛擬出來的一段地址空間當內存用,它的速度比物理內存要慢。
操作系統監控命令
操作系統分析方向
性能測試分析調優思路