1. 程式人生 > >性能測試分析調優思路

性能測試分析調優思路

皮膚 校驗 我們 數據庫連接 記錄 記憶 數據流 技術分享 com

我們可以通過事物的響應時間作為基礎來分析:

響應時間=網絡的延遲時間+應用的延遲時間+數據庫的延遲時間

技術分享圖片

數據流轉詳細過程:

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,在車間進行材料加工,車間相當於內存,車間的材料不夠就要去倉庫裏面去取,倉庫就相當於磁盤。只有車間足夠大,工人才可以一直在車間進行加工,不需要取倉庫取源材料,這樣效率更高,速度更快。

技術分享圖片

內存與硬盤以及虛擬內存的關系

虛擬內存

  從磁盤上虛擬出來的一段地址空間當內存用,它的速度比物理內存要慢。

技術分享圖片

操作系統監控命令

技術分享圖片

操作系統分析方向

技術分享圖片

性能測試分析調優思路