1. 程式人生 > >(轉)使用 Jmeter 對 Java web 執行負載(壓力)測試

(轉)使用 Jmeter 對 Java web 執行負載(壓力)測試

(轉存)https://blog.csdn.net/change_on/article/details/72876800
 

http://www.thegeekstuff.com/2015/02/jmeter-load-testing/
https://www.digitalocean.com/community/tutorials/how-to-use-apache-jmeter-to-perform-load-testing-on-a-web-server

JMeter是一個桌面應用程式,可以用於執行功能測試和負載測試。雖然JMeter應用程式本身被設計為純Java應用程式,但是它可以用於執行任何型別的web應用程式的負載測試。應用程式的最初意圖是測試Apache Tomcat的效能,它基本上是一個web伺服器。多年來,Jmeter隨著使用者介面的改進和其他特性的改進,使它成為企業web應用程式的一個可行的效能測試和負載測試工具。

JMeter是什麼?

JMeter是Apache開源專案的一部分。
它最初是為了測試web伺服器的效能而編寫的,現在它已經作為一個自動化的測試工具和測試資料,以及用於web應用程式、檔案伺服器、web伺服器甚至資料庫的功能測試工具。我們將在本教程中探討JMeter的重要特性。可以通過配置來模擬針對特定web伺服器或應用程式的N個使用者和執行緒。它為web應用程式生成一個模擬負載來度量其效能。此外,您還可以通過迴圈引發幾個迭代來獲得平均結果,實現斷言,並檢視測試結果的圖形和統計表示。

我們的壓力測試分為以下幾個步驟:
1).環境準備
2).下載jmeter
3).安裝jmeter
4).建立測試計劃
5).檢視測試結果
6).與測試伺服器結合分析
7).結論

1).環境準備
java環境,這個不用多說,自行百度。這裡以window平臺來測試。

2).下載jmeter
百度輸入:apache jmeter,點進官網下載,根據本機jdk版本選擇jmeter的版本。

這裡一定要選擇binaries版本,安裝時會省很多事。

3).安裝jmeter
將上一步下載的jmeter解壓。例如解壓在D盤。
<1>在環境變數裡面新建一個:
變數名:JMETER_HOME
變數值:D:\apache-jmeter-3.1

<2>在CLASSPATH裡面加:
;%JMETER_HOME%/lib/ext/ApacheJMeter_core.jar;%JMETER_HOME%/lib/jorphan.jar;%JMETER_HOME%/lib/logkit-2.0.jar

<3>在jmeter的bin目錄下,雙擊jmeter.bat

若有兩個彈出框,其中一個是jmeter的圖形介面(swing做的),即說明安裝成功。

一旦安裝了JMeter並執行,讓我們繼續構建一個測試計劃!

4).建立測試計劃
測試計劃由一系列測試元件組成,這些元件決定如何模擬負載測試。我們將解釋在我們的測試計劃中如何使用這些元件。

新增一個執行緒組
首先,新增一個執行緒組來測試計劃:
<1>右鍵單擊測試計劃
<2>滑鼠新增
<3>滑鼠/執行緒(使用者)
<4>點選執行緒組
執行緒組有三個特別重要的屬性影響負載測試:
<1>執行緒數(使用者):JMeter試圖模擬的使用者數量。設定這個50
<2>加速週期(以秒為單位):JMeter將會將執行緒的啟動分配到執行緒的持續時間。設定為10。
<3>迴圈計數:執行測試的次數。把這個設定為1。

新增HTTP請求預設值
HTTP請求預設配置元素用於為測試計劃中的HTTP請求設定預設值。如果我們想要將多個HTTP請求傳送到相同的伺服器,作為測試的一部分,這一點特別有用。現在讓我們新增HTTP請求預設為執行緒組:
<1>選擇Thread Group,然後右鍵單擊它
<2>滑鼠新增
<3>滑鼠/Sampler
<4>單擊HTTP請求預設值
在HTTP請求預設情況下,在Web伺服器部分中,將伺服器名或IP欄位填入您想要測試的Web伺服器的名稱或IP地址。在這裡設定伺服器使它成為該執行緒組中其餘項的預設伺服器。

在表偵聽器中新增檢視結果
在JMeter中,偵聽器用於輸出負載測試的結果。有很多可用的偵聽器,可以通過安裝外掛來新增其他偵聽器。我們將使用該表,因為它易於閱讀。
<1>選擇Thread Group,然後右鍵單擊它
<2>滑鼠新增
<3>滑鼠偵聽器
<4>單擊表中的檢視結果

5).檢視測試結果
執行基本測試計劃
現在我們已經建立了基本的測試計劃,讓我們執行它並檢視結果。
首先,通過單擊檔案儲存測試計劃,然後儲存,然後指定所需的檔名。然後在左側窗格中選擇檢視結果,然後從主選單單擊Run,然後單擊Start(或者單擊主選單下面的綠色Start箭頭)。應該看到測試結果在表中作為測試執行:

解釋結果
您可能會看到所有請求的狀態都是“成功”(由綠色三角形表示,其中有一個複選標記)。在此之後,您可能最感興趣的列是示例時間(ms)和延遲(在示例中沒有顯示)。
延遲:在JMeter傳送請求和收到初始響應時之間的毫秒數
示例時間:伺服器完全服務於請求(響應+延遲)的毫秒數
樣本數目:是指在測試過程中,總共想伺服器發出的請求數目。成功的情況下等於你設定的併發數目×迴圈次數
最新樣本:他是代表時間的,表示伺服器響應最後一個請求的時間。
吞吐量 : 表示伺服器每分鐘處理的請求數目。
平均值 : 總的執行時間除以傳送到伺服器的請求數目;
偏離 : 伺服器響應時間變化、離散程度測量值的大小,或者,換句話說,就是資料的分佈。
中值 : 時間的數字,有一半的伺服器響應時間低於該值而另一半高於該值。

6).與測試伺服器結合分析
ssh登入到伺服器上去看看cpu和記憶體的使用情況,使用top:

引數說明
Cpu:
us — 使用者空間佔用CPU的百分比。
sy — 核心空間佔用CPU的百分比。
ni — 改變過優先順序的程序佔用CPU的百分比
id — 空閒CPU百分比
wa — IO等待佔用CPU的百分比
Men:記憶體
total — 實體記憶體總量
used — 使用中的記憶體總量
free — 空閒記憶體總量
buffers — 快取的記憶體量

除非您有使用者積極地攻擊您的伺服器,否則您應該看到Cpu(s)%使用者使用量(us)應該非常低或0%,並且Cpu(s)%空閒(id)應該是99% +,這樣: 現在,在JMeter中,再次啟動測試,然後切換回web伺服器的SSH會話。您應該看到資源使用量的增加,一開始用50個執行緒,平均請求時間是0.3s,cpu2%,增加負載,讓我們在10秒內用80個執行緒嘗試相同的測試。在左窗格中的執行緒組項中,將執行緒(使用者)的數量更改為100。現在單擊表中的檢視結果,然後再執行測試100個是2s, cpu13%,200個9s,cpu 28%,500個19秒,cpu53%,到1000個時,cpu98%。。。bome!測試伺服器崩了。其實我這種增加執行緒太多,應該慢慢加,幅度不要太大,慢慢測出在需要的請求時間內的最大的執行緒數。

7).結論
<1>JMeter可以成為確定如何改進web應用程式伺服器設定的非常有價值的工具,以減少瓶頸和提高效能。既然您已經熟悉了JMeter的基本用法,您可以建立新的測試計劃來度量各種場景中伺服器的效能。
我們所使用的測試示例並不能準確地反映一個普通使用者的使用模式,但是JMeter有一些工具來執行各種測試,這些測試在您的環境中可能是有用的。例如,JMeter可以配置為模擬使用者登入到您的應用程式、客戶端快取,以及通過URL重寫處理使用者會話。還有許多其他內建的samplers、偵聽器和配置工具可以幫助您構建所需的場景。此外,還有JMeter外掛來增強其功能,可在http://jmeter plugins.org/上下載。
<2>在計算機世界裡面,時間可空間永遠是不可調和的矛盾!cpu用的多,計算的越快,記憶體耗得越大,我上面的測試例子記憶體是不考慮的,大部分情況下,cpu是效能的短板。