jmeter有自己的GUI頁面,但是當線程數很多或者現在有很多的測試場景都是基於linux下進行壓測,這時我們可以使用jmeter的命令行方式來執行測試,該篇文章介紹jmeter單節點命令運行方式。
1:准備單節點linux機器,並安裝jdk,即安裝java環境
我的linux機器為:134.64.14.96,至於怎么安裝java環境就不說了
2:上傳並解壓最新的jmeter包到linux服務器上,目前jmeter版本已經進入3了這里給出我的安裝包雲盤地址:http://pan.baidu.com/s/1bI3r2I 密碼:f5ll

3:由於linux上面沒有像windows那樣直觀的jmeter的gui頁面使得我們制定jmeter的jmx腳本比較費力(一般linux服務器為了性能考慮不會裝圖形化界面),所以jmx腳本我們可以在本地windows機器上利用jmeter的gui頁面先制作好,然后上傳到服務器上去執行
下面用百度請求為例:
在本地雙擊jmeter的bin目錄下的jmeter.bat文件啟動jmeter的gui頁面,生成一個百度的接口請求jmx腳本,並在本地調試通過

調試通過以后,此時功能測試的腳本就生成好了,我們在將此腳本做一定配置和修改,使其成為一個可以放在服務端跑的性能腳本
一般我都做兩步:
第一步:刪除-查看結果樹等一切監聽器 ,目的是:jmeter底層就是java寫的,為減少壓測時性能損耗一切不用的控件都不要放在上面,至於測試結果會有jtl文件能夠統計不需要這里在添加監聽器
第二步:修改線程組下面的線程數和循環次數,如下面的設置可以實現:20個線程數跑3分鍾的場景,修改完成進行保存該jmx文件

4:上傳該性能腳本(baidu_requests_results.jmx)到linux服務器上
如我上傳在了bin目錄下/home/tester/apache-jmeter-3.0/bin

5:命令行運行jmeter腳本
執行命令為:
./jmeter -n -t baidu_requests_results.jmx -l baidu_requests_results.jtl
觀察服務器控制台:

這樣就用命令行的方式完成了jmx腳本20個線程3分鍾並發的場景測試
jmeter命令行具體各項的含義為:
-h 幫助 -> 打印出有用的信息並退出 -n 非 GUI 模式 -> 在非 GUI 模式下運行 JMeter -t 測試文件 -> 要運行的 JMeter 測試腳本文件 -l 日志文件 -> 記錄結果的文件 -r 遠程執行 -> 在Jmter.properties文件中指定的所有遠程服務器 -H 代理主機 -> 設置 JMeter 使用的代理主機 -P 代理端口 -> 設置 JMeter 使用的代理主機的端口號
6:執行結果說明
一:可以看到控制台結果中打印的日志
summary + 91773 in 00:00:06 = 15787.5/s Avg: 0 Min: 0 Max: 78 Err: 91773 (100.00%) Active: 20 Started: 20 Finished: 0
解析為:
在6秒的時間內增加請求91773個,平均每秒處理15787.5個請求數目,時間單位為ms,err為錯誤率,這里百度請求為100%錯誤是因為百度本身的機制造成的,同一個ip短時間並發請求百度,會拒絕請求所以才會出錯,真實情況下執行自己自定義腳本可以根據錯誤率查看服務器是否能承受住那么大的壓力,active為在線用戶數,即當前有多少個用戶在並發請求
二:在jmeter的bin目錄下生成了一個jtl文件,該文件中收集了3分鍾內所有的測試結果
throughput(每秒處理事務數)

隨着活躍線程數增加響應時間曲線:

聚合報告:
![]()
對於jtl測試結果我們可以有多種方式去查看另外性能測試對於性能結果的分析也至關重要,關於jtl測試結果查看與分析,這里請看我的jmeter系列博文之-jmeter之jtl測試報告(說明:上面的圖表中錯誤率為100%是由於我並發壓測百度,百度本身機制會拒絕短時間內同一ip並發請求所以才會出錯)
