JMeter 算是非常老字號的 HTTP 壓力測試工具,最大的好處就是有界面可以規劃測試腳本,雖然這個採用骨灰級 Java Swin 寫出來的界面真的很古老而且很醜,以現在 UX 業界水準當然稱不上好用,但是其功能還算堪用,要用免費且 Open Source 總不能要求太多。往往在測試的過程中要進行大量連線的壓力測試,若是碰到測試網路與機器效能等等的問題,就需要在遠端機房內進行測試,或者進行分散併發測試 (就是 DDOS 囉),這些 JMeter 也都有支援。
安裝 JMeter 與 Command Line 執行
今天並沒有要介紹如何使用 JMeter,只簡單說明在遠端 Linux 系統中如何透過命令列執行測試腳本。一開始我們先安裝 JMeter,Ubuntu 安裝方式如下:
sudo apt install jmeter
CentOS 或者您想安裝最新的版本可以到 Apache JMeter 下載,下載後直接解壓所即可,目前的最新版是 2.11 安裝命令如下:
wget http://ftp.twaren.net/Unix/Web/apache//jmeter/binaries/apache-jmeter-2.11.tgz
tar -zxvf apache-jmeter-2.11.tgz
cd apache-jmeter-2.11/bin
jmeter
JMeter 是用 Java 寫的,如果沒有安裝 Java 執行會出現「java: command not found」,趕快透過 apt 或 yum 裝一下 Java 就可以囉。
要用 Command Line 執行之前,我們必須將專案另存為 .jmx 檔案,如此就能夠透過下命令執行測試囉。
jmeter -n -t your-project.jmx -l report.xml
但執行的過程中我們只會看到以下畫面,並不會顯示任何執行資訊或狀態,實在不方便。
Created the tree successfully using your-project.jmx Starting the test @ Thu Oct 09 22:11:39 CST 2014 (1412849499857) Waiting for possible shutdown message on port 4445 Tidying up ... @ Thu Oct 09 22:12:14 CST 2014 (1412849534881) ... end of run
接下來我們需要修改 Jmeter 設定,好讓我們測試時可以像 UI 一樣有即時的報表可以參考。
修改 JMeter 參數即時顯示測試狀態
修改 jmeter.properties 檔案
sudo vim /usr/share/jmeter/bin/jmeter.properties
取消註解以下參數:
# 直接取消註解打開 summariser.name=summary # 設定多久要刷新畫面 summariser.interval=1 # 啟用 Log summariser.log=true # 把訊息輸出至 stdout summariser.out=true
這樣就可以看到即時的統計結果囉,超簡單!
Creating summariser <summary> Created the tree successfully using your-project.jmx Starting the test @ Thu Oct 09 23:38:55 CST 2014 (1412851135452) Waiting for possible shutdown message on port 4445 summary + 1 in 1s = 1.1/s Avg: 896 Min: 896 Max: 896 Err: 0 (0.00%) Active: 100 Started: 100 Finished: 0 summary + 799 in 30s = 26.6/s Avg: 606 Min: 0 Max: 4633 Err: 209 (26.16%) Active: 0 Started: 100 Finished: 100 summary = 800 in 30s = 26.7/s Avg: 607 Min: 0 Max: 4633 Err: 209 (26.12%) Tidying up ... @ Thu Oct 09 18:39:29 CST 2014 (1412851169392) ... end of run