jmeter有本身的GUI頁面,可是當線程數不少或者如今有不少的測試場景都是基於linux下進行壓測,這時咱們可使用jmeter的命令行方式來執行測試,該篇文章介紹jmeter單節點命令運行方式。java
1:準備單節點linux機器,並安裝jdk,即安裝java環境linux
個人linux機器爲:134.64.14.96,至於怎麼安裝java環境就不說了apache
2:上傳並解壓最新的jmeter包到linux服務器上,目前jmeter版本已經進入3了這裏給出個人安裝包雲盤地址:http://pan.baidu.com/s/1bI3r2I 密碼:f5llwindows
3:因爲linux上面沒有像windows那樣直觀的jmeter的gui頁面使得咱們制定jmeter的jmx腳本比較費力(通常linux服務器爲了性能考慮不會裝圖形化界面),因此jmx腳本咱們能夠在本地windows機器上利用jmeter的gui頁面先製做好,而後上傳到服務器上去執行服務器
下面用百度請求爲例:併發
在本地雙擊jmeter的bin目錄下的jmeter.bat文件啓動jmeter的gui頁面,生成一個百度的接口請求jmx腳本,並在本地調試經過性能
調試經過之後,此時功能測試的腳本就生成好了,咱們在將此腳本作必定配置和修改,使其成爲一個能夠放在服務端跑的性能腳本測試
通常我都作兩步:ui
第一步:刪除-查看結果樹等一切監聽器 ,目的是: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併發請求因此纔會出錯)