jmeter很小,很快,使用方便,可以在界面運行,可以命令行運行。簡單介紹下命令行運行的方式:
sh jmeter.sh -n -t my-script.jmx -R 10.6.5.31,10.6.5.35,10.6.5.36,10.6.5.37,10.6.5.72 -l 8.jtl
上面一條命令應該可以滿足大部分需求。
-n:使用命令行模式運行
-t:指定要運行的jmx腳本
-R:指定使用那些slave節點壓測
-l:壓測記錄保存在哪里
使用-R指定節點時,當然要首先在這些節點上啟動jmeter-server的服務,-l指定日志,jmeter運行過程中的所有請求記錄,都會保存在這個jtl文件中。
調試壓測請求
命令行下,如果想查看每個請求返回的結果,需要修改jmeter.properties配置文件,
#jmeter.save.saveservice.assertion_results=none
#jmeter.save.saveservice.data_type=true
#jmeter.save.saveservice.label=true
#jmeter.save.saveservice.response_code=true
# response_data is not currently supported for CSV output
#jmeter.save.saveservice.response_data=false
# Save ResponseData for failed samples
#jmeter.save.saveservice.response_data.on_error=false
#jmeter.save.saveservice.response_message=true
#jmeter.save.saveservice.successful=true
#jmeter.save.saveservice.thread_name=true
#jmeter.save.saveservice.time=true
#jmeter.save.saveservice.subresults=true
#jmeter.save.saveservice.assertions=true
#jmeter.save.saveservice.latency=true
#jmeter.save.saveservice.samplerData=false
#jmeter.save.saveservice.responseHeaders=false
#jmeter.save.saveservice.requestHeaders=false
#jmeter.save.saveservice.encoding=false
#jmeter.save.saveservice.bytes=true
#jmeter.save.saveservice.url=false
#jmeter.save.saveservice.filename=false
#jmeter.save.saveservice.hostname=false
#jmeter.save.saveservice.thread_counts=false
將上面的注釋打開,並且值修改成true,就會打開該條記錄,jmeter就會將該條信息輸出到我們指定的jtl文件中,不要要注意壓測過程中,會產生大量的這樣的記錄,真正壓測時,最好不要開太多的日志記錄。
實時查看壓測結果
jmeter命令行下,也可以實時查看壓測結果,同樣是修改配置文件jmeter.properties。
# Summariser - Generate Summary Results - configuration (mainly applies to non-GUI mode) #--------------------------------------------------------------------------- # # Define the following property to automatically start a summariser with that name # (applies to non-GUI mode only) #summariser.name=summary # # interval between summaries (in seconds) default 30 seconds #summariser.interval=30 //這個表示統計頻率 # # Write messages to log file #summariser.log=true # # Write messages to System.out #summariser.out=true //是否將統計結果輸出到控制台
打開上面的summariser.name、summariser.interval、summariser.out這三個配置項,保存,重新運行jmeter,應該就可以在shell里看到統計信息了。
Remote engines have been started
Waiting for possible shutdown message on port 4445
summary + 3036 in 3s = 1001.6/s Avg: 25 Min: 14 Max: 58 Err: 3036 (100.00%) Active: 61 Started: 58 Finished: 0
summary + 25670 in 10.3s = 2494.7/s Avg: 61 Min: 11 Max: 190 Err: 25670 (100.00%) Active: 261 Started: 258 Finished: 0
summary = 28706 in 13.1s = 2192.0/s Avg: 57 Min: 11 Max: 190 Err: 28706 (100.00%)
summary + 27300 in 10.3s = 2654.9/s Avg: 129 Min: 10 Max: 407 Err: 27300 (100.00%) Active: 461 Started: 458 Finished: 0
summary = 56006 in 23.1s = 2426.7/s Avg: 92 Min: 10 Max: 407 Err: 56006 (100.00%)
summary + 27200 in 10.4s = 2606.1/s Avg: 202 Min: 10 Max: 528 Err: 27200 (100.00%) Active: 660 Started: 657 Finished: 0
summary = 83206 in 33.1s = 2512.8/s Avg: 128 Min: 10 Max: 528 Err: 83206 (100.00%)
summary + 26300 in 11s = 2478.3/s Avg: 284 Min: 11 Max: 702 Err: 26300 (100.00%) Active: 861 Started: 858 Finished: 0
summary = 109506 in 43.1s = 2541.1/s Avg: 166 Min: 10 Max: 702 Err: 109506 (100.00%)
summary + 26200 in 11s = 2439.0/s Avg: 355 Min: 10 Max: 866 Err: 26200 (100.00%) Active: 1000 Started: 997 Finished: 0
summary = 135706 in 53.1s = 2556.0/s Avg: 202 Min: 10 Max: 866 Err: 135706 (100.00%)
這里的錯誤率是100%,正常情況下應該是0%。
使用非 GUI 模式,即命令行模式運行 JMeter 測試腳本能夠大大縮減所需要的系統資源。使用命令
jmeter -n -t <testplan filename> -l <listener filename>
D:\Jmeter\bin>jmeter -n -t testplan.jmx -l listener.jtl
Created the tree successfully using testplan.jmx
Starting the test @ Thu Oct 29 11:23:49 CST 2009 (1256786629265)
Waiting for possible shutdown message on port 4445
Generate Summary Results + 5 in 8.5s = 0.6/s Avg: 981 Min: 296 Max: 2344 Err: 0 (0.00%)
Generate Summary Results + 1 in 0.2s = 4.3/s Avg: 232 Min: 232 Max: 232 Err: 0 (0.00%)
Generate Summary Results = 6 in 9.6s = 0.6/s Avg: 856 Min: 232 Max: 2344 Err: 0 (0.00%)
Tidying up ... @ Thu Oct 29 11:24:02 CST 2009 (1256786642453)
... end of run
這次我們可以清晰地看到每個線程的執行情況。
這里是我們使用非 GUI 模式運行測試腳本時可以使用的一些命令:
- -h 幫助 -> 打印出有用的信息並退出
- -n 非 GUI 模式 -> 在非 GUI 模式下運行 JMeter
- -t 測試文件 -> 要運行的 JMeter 測試腳本文件
- -l 日志文件 -> 記錄結果的文件
- -r 遠程執行 -> 啟動遠程服務
- -H 代理主機 -> 設置 JMeter 使用的代理主機
- -P 代理端口 -> 設置 JMeter 使用的代理主機的端口號
執行結果可以使用 GUI 模式下的聚合報告查看,比如你想要看 addCustomerScript201411060954.jtl 的報告,可以
打開 JMeter GUI 界面 -> 測試計划 -> 添加線程組 -> 添加聚合報告 -> 點擊"所有數據寫入一個文件"下的 "瀏覽..." 按鈕找到你剛生成的 jtl 文件就可以對執行結果進行直觀分析了:

如何生成html測試報告
如果未生成結果文件(.jtl),可運行如下命令生成報告:
jmeter -n -t test.jmx -l result.jtl -e -o /tmp/ResultReport
參數:
-n :以非GUI形式運行Jmeter
-t :source.jmx 腳本路徑
-l :運行結果保存路徑(.jtl),此文件必須不存在
-e :在腳本運行結束后生成html報告
-o :保存html報告的地址, 此文件必須不存在
如果已經生成結果文件(.jtl),可運行如下命令生成報告
jmeter -g result.jtl -o /tmp/ResultReport
Parameters:
-g :specifies the existing result file(.jtl)
打開頁面 /tmp/ResultReport 文件夾中的 **index.html ** 可查看報告
我們可以通過修改 ** user.properties** 文件來配置報告, 詳細說明和配置可參考 Jmeter性能測試html報告
報告詳解
Dashboard
Test and Report informations
- 測試和報告信息: 測試結果保存文件/測試開始時間/測試結束時間/展示過濾器。
APDEX(Application Performance Index)
- 應用程序性能滿意度的標准,范圍在 0-1之間,1表示達到所有用戶均滿意,可以在配置文件設置
- Requests Summary: 請求的通過率(OK)與失敗率(KO),百分比顯示。
- Statistics: 數據分析,基本將 Summary Report 和 Aggrerate Report 的結果合並。
- Errors: 錯誤情況,依據不同的錯誤類型,將所有錯誤結果展示。
Charts
- 用圖表的形式展示測試數據,讓測試報告更加 直觀。
- 特點:
- 將測試過程中 經常使用的數據,用圖表的形式展示,讓測試結果更加直觀
- 每個圖表數據,有兩種展示形式。
- 支持請求樣例過濾顯示
- 支持導出 PNG圖片格式
Over Time
- Response Times Over Time: 響應時間
- Bytes Throughput Over Time: 字節 接收/發送的數量
- Latencies Over Time: 延遲時間
Throughput
- Hits Per Second: 每秒點擊率
- Codes Per Second: 每秒狀態碼數量
- Transactions Per Second: 每秒事務量
- Response Time Vs Request: 響應時間點請求的 成功/失敗數
- Latency Vs Request: 延遲時間點請求的 成功/失敗數
Response Times
- Response Time Percentiles: 響應時間百分比
- Active Threads Over Time: 激活線程數
- Time Vs Threads: 測試過程中的線程數時續圖
- Response Time Distribution: 響應時間分布
