1. 程式人生 > >【效能測試】-常見效能測試問題分析(一)

【效能測試】-常見效能測試問題分析(一)

一、常見效能測試問題及其可能誘因

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)網路

   不同網路環境下的結果對比