【效能測試】-常見效能測試問題分析(一)
一、常見效能測試問題及其可能誘因
1)執行過程中,響應時間出現拐點,波動大。
1-JVM執行了GC垃圾回收,造成效能拐點
2-網路不穩定
2)高併發時,等待超時、連線失敗等報錯。
1-連線數設定不足
2-伺服器資源已達到瓶頸
3)記憶體溢位問題。
1-JVM記憶體引數設定過低
2-程式本身存在記憶體溢位或記憶體回收問題
二、效能影響因素
應用伺服器
資料庫伺服器
應用程式程式碼本身
伺服器硬體及作業系統
三、常見效能影響因數
1)JVM記憶體設定引數
1-Tomcat的bin目錄下的catalina.bat檔案:
set JAVA_OPTS=
-Xms6144m Heap Space
-Xmx6144m
-XX:PermSize=512M PermGen Space
-XX:MaxPermSize=1024M
2-記憶體溢位型別 :OutOfMemoryError:java heap size / OutOfMemoryError: PermGen space
題外話:JVM記憶體分類
新生區:一個Eden Space和兩個Survivor Space
養老區:主要是用來儲存那些長時間被引用的物件。
永久儲存區(Permanent Space ):用來儲存一些資訊不經常變更的檔案,如class物件等
2)連線數、執行緒數
MaxThreads:最大併發執行緒數,即同時處理的任務個數
【案例分析】 50個嚴格併發使用者(設定集合點)
MaxThreads=3,事務響應時間:2.6S;
MaxThreads=50,事務響應時間:0.6S;
在高強度的併發下,如果MaxThreads設定較小,會影響效能,一般需要設定大於最大同時併發請求數。
但是如果設定過高也會影響效能,佔用過多的系統資源。
acceptCount:最大排隊數,是指當啟動的執行緒數已經達到最大時,接受排隊的請求個數
條件 |
結果 |
|
情況1 |
請求數 < MaxThreads |
啟動一個執行緒來處理此請求 |
情況2 |
MaxThreads < 請求數 < MaxThreads+AcceptCount |
把此請求放入等待佇列, 等待空閒執行緒。 |
情況3 |
MaxThreads+AcceptCount < 請求數 |
直接拒絕此次請求, 返回connection refused |
3)網路
不同網路環境下的結果對比