1. 程式人生 > >Jmeter上傳服務壓測-基於Linux伺服器

Jmeter上傳服務壓測-基於Linux伺服器

Jmeter工具介紹

Apache Jmeter 是一款開源的基於Java的壓力測試工具,它雖然沒有像LR這樣的企業級軟體功能強大,但是Jmeter基本滿足了測試人員在工作中的基本需要。

  • 特點:

  1. 能夠對HTTP、FTP伺服器進行壓力和效能測試,也能對任何資料庫進行同樣的測試(通過JDBC)
  2. 同時支援單執行緒和多執行緒併發的操作
  3. Jmeter具有很強的擴充套件性,可以配合多種開發工具或測試工具,因為是純Java的,增強了其可移植性

Jmeter安裝及環境配置

Jmeter的安裝非常的便捷,解壓包同時支援Windows和Linux的使用。安裝之前首先需要你的環境中有JDK。

Jmeter的下載地址:http://jmeter.apache.org/download_jmeter.cgi

環境配置:Windows中,只需要在計算機的環境變數中增加[;%JMETER_HOME%\bin],即可。

Windows中只需執行壓縮包中bin目錄下的jmeter.bat

Linux中,執行壓縮包中的jmeter.sh。   --that's it !

編寫Jmeter指令碼

本次列舉的例項是在Linux伺服器中進行相關的壓力測試,但是我們需要在Windows中先建立好需要的指令碼,然後匯入到Linux伺服器中。因為jmeter指令碼無論在Windows還是Linux中都是互通的,能夠直接執行。

  • 屢一下本次測試工作的大體思路:

1.將Windows和Linux中的jmeter都安裝配置好;

2.Windows下編寫jmeter指令碼;

3.Linux中執行指令碼;

4.Windows中檢視(匯出的)結果;

5.記錄、總結;

首先看一下本次示例的指令碼中都涉及到什麼,都要注意些什麼問題:


請求中對應的解釋:

1.域名和token是本次操作中新增的全域性定量,域名也就是伺服器名稱/IP,也可以放在HTTP請求頁面,埠號除特殊的之外可以不填;而token不是都會用到,本次因為涉及到token,所以添加了。

2.在HTTP請求中,因為上傳操作使用的引數化,所以添加了相應的外掛:CSV Data Set Config,這個我們下面再講解。

3.jmeter常用的兩個外掛:檢視結果樹、聚合報告,這兩個外掛可以直觀的看到請求的成功與否,以及請求操作的相關資料。

4.上傳操作,因此使用post方式; 編碼方式一般都會選擇 utf-8。

5.這是本次示例使用到的介面路徑,工作涉及的相關介面可自己把控。

6.這裡就是本次需要上傳的檔案路徑,將其引數化了。

關於引數化:


1.這裡是填寫的Linux環境下的路徑,在Windows中測試指令碼時,還需要填寫對應的路徑才行。

2.編碼方式,這裡就不再多說。

:引數化相應的檔案資料格式,跳行編寫就行了,即每條資料佔一行。)

關於指令碼佇列:


這部分可以先設定一個初始值,在Linux下是能夠進行修改的。

關於“檢視結果樹”:


這裡需要注意一點,將“僅日誌錯誤”給勾選上,這樣匯出的測試結果資料才不會特別大,不然開啟時會很慢。

到這裡,關於編寫指令碼的大體步驟和注意事項都列舉出來了。接下來就是執行指令碼,整理結果啦。

指令碼匯入Linux伺服器

關於匯入指令碼至Linux伺服器,這裡需要注意一些事項:

1.匯入的指令碼只需要在壓力機上有一份即可,但是引數化檔案必須在每個測試機(包括壓力機)上都存在。關於什麼是壓力機、測試機,這些在下文中會逐漸講到。

2.匯入的指令碼所涉及的路徑,一定和指令碼中的路徑相符合,不然在測試工作無法進行。

3.另外,測試的機器需要注意host的配置(有些會涉及),以及jmeter記憶體溢位這種問題的關注。

關於壓測伺服器:

本次選取了4臺伺服器用於壓測,其中一臺作為壓力機,也就是控制其它幾臺機器一起執行指令碼。所以這就需要配置jmeter的配置檔案:jmeter.properties


在配置檔案中找到如圖所示的遠端ip設定,新增相應的伺服器ip即可。

關於host配置:

這部分的工作,其實是為了均衡伺服器的承載量,避免大量的操作執行在單一的一臺伺服器上,造成伺服器過載而掛掉。此部分配置只需要在Linux下的host中新增配置即可。

執行測試

在Linux中執行指令碼就比較簡單了,在相應的目錄下執行指令碼,並將所需的結果儲存為指定的檔案即可,參考命令:

./jmeter -n -t 指令碼檔案(.jmx) -r -l 結果檔案(.jtl)

-r : 指的是執行所有機器,若不寫,只會運行當前壓力機;

:測試時有不同併發的場景,這些需要自己在指令碼檔案中進行修改;所以在結果檔案的命名上,建議使用時間節點來命名,便於之後統計結果時區分。)

測試結果處理

當所有場景都測試完成之後,建議將結果檔案統一放在一個資料夾中,然後一併打包,匯出。

總結

這裡就不再分析講述本次的測試結果了,在實際情況中,還需要我們酌情去統計和分析測試結果。在聚合報告中,主要關注的項還應是:平均響應時間、90%的響應時間、錯誤率以及TPS(吞吐量)等。

————————

歡迎大家討論並指正不合理之處!