1. 程式人生 > 實用技巧 >jmeter非GUI模式之jtl檔案解析

jmeter非GUI模式之jtl檔案解析

我們知道非GUI模式的方式執行完成jmeter後,會生成jtl檔案,裡面開啟後就是一行行的測試結果,

<httpSample t="1" lt="1" ts="1450684950333" s="true" lb="app.testdelay" rc="200" rm="OK" tn="appdelay-3000g3m 1-1" dt="" by="2265"/>

  • t表示從請求開始到響應結束的時間
  • lt表示整個的空閒時間
  • ts表示訪問的時刻
  • s表示返回的結果true表示成功,false表示失敗
  • lb表示標題
  • rc表示返回的響應碼
  • rm表示響應資訊
  • tn表示執行緒的名字“1-138”表示第1個執行緒組的第138個執行緒。
  • dt表示響應的檔案型別
  • by表示請求和響應的位元組數

即便知道每個代表的含義,但是我們肉眼還是難以直觀的看到效能如何,所以我們可以將jtl檔案進行轉換,轉成肉眼能夠直觀看懂的圖表、csv等形式,下面講解jtl檔案轉換的幾種方式:(jmeter系列博文用的例子都是併發測試百度介面,由於百度本身機制不允許短時間併發訪問所以看到我的結果都是失敗的,這裡做下說明,各位真實測試使用自己的jmx指令碼的時候一般不會如此)

1:命令列模式將jtl轉成測試圖表-注意此方法只使用jmeter3.0以後版本

  • 第一種:在測試過程中將jtl轉成測試報告(在jmeter的bin目錄下執行)

./jmeter -n -t baidu_requests_results.jmx -r -l baidu_requests_results.jtl -e -o /home/tester/apache-jmeter-3.0/resultReport

引數說明:

-n : 非GUI 模式執行JMeter -t : 執行測試檔案所在的位置及檔名 -r :遠端將所有agent啟動用在分散式測試場景下,不是分散式測試只是單點就不需要-r -l : 指定生成測試結果的儲存檔案, jtl 檔案格式 -e : 測試結束後,生成測試報告 -o : 指定測試報告的存放位置 -o指定的檔案及資料夾,必須不存在 ,否則執行會失敗,對應上面的命令就是resultReport資料夾必須不存在否則報錯 如上命令執行,可以看到控制檯開始列印資料了 執行完成後,可以在指定的目錄下看到生成結果資料夾/home/tester/apache-jmeter-3.0/resultReport 我們可以將該資料夾下載到本地windows機器,然後用瀏覽器開啟index.html檔案就能看到報告內容了 首頁Dashboard: 解釋: file:檔名 start time:開始時間 end time:結束時間 filter for display:過濾器 APDEX(Application performance Index):應用程式效能指標,計算每筆交易APDEX的容忍和滿足閾值基於可配置的值,範圍在 0-1 之間,1表示達到所有使用者均滿意 T(Toleration threshold):容忍或滿意閾值 F(Frustration threshold):失敗閾值 requests summary中KO指失敗率,OK指成功率 首頁Dashboard:頁面滾動條往下拉: 解釋: statistics:資料分析,基本將 Summary Report 和 Aggrerate Report 的結果合併,含義分別為: 請求名稱、請求數目、失敗請求數目、錯誤率(本次測試中出現錯誤的請求的數量/請求的總數)、90%使用者響應時間、95%使用者響應時間、99%使用者響應時間、吞吐量(吞吐量——預設情況下表示每秒完成的請求數Request per Second,當使用了Transaction Controller時,也可以表示類似LoadRunner的Transaction per Second數)、Kb/sec(每秒從伺服器端接收到的資料量,相當於LoadRunner中的Throughput/Sec)、最小響應時間、最大響應時間 errors:錯誤情況,依據不同的錯誤型別,將所有錯誤結果展示 Chart-Over Time-Response Times Over Time:隨著時間推移響應時間變化趨勢圖 可以看到歷時3分鐘,響應時間由0.334ms慢慢下滑到0.225ms Chart-Over Time-Bytes Throughput Over Time:隨著時間推移每秒接收和請求位元組數變化趨勢圖,藍色為每秒傳送位元組數,黃色為每秒接收位元組數: Chart-Over Time-Latencies Over Time:隨著時間推移平均響應延時趨勢圖,記錄客戶端傳送請求完成後,伺服器端返回請求之前這段時間 由於我測試用的併發請求百度,請求都被拒絕了,並沒有收到從服務端返回的請求,所以這裡看到一條0的線 以上就是over time欄的所有圖表,除了over time還有throuput和response times欄 throuput欄: Throughput欄包括: hitsper second:每秒點選率 codes per second:每秒狀態碼數量 Transactionsper second:每秒事務量 Response Time Vs Request: 響應時間點請求的 成功/失敗 數 Latency Vs Request: 延遲時間點請求的 成功/失敗 數 Response Times欄: response times欄包括: Response Time Percentiles: 響應時間百分比 Active Threads Over Time: 隨著時間推移活躍執行緒數 Time Vs Threads: 測試過程中的執行緒數時續圖 Response Time Distribution: 響應時間分佈
  • 第二種:使用之前的測試結果,生成測試報告

./jmeter -gbaidu_requests_results.jtl -e -o /home/tester/apache-jmeter-3.0/resultReport

-g : 指定已存在的測試結果檔案 -e :測試結果後,生成測試報告 -o : 指定測試報告的存放位置 -o 指定的檔案及資料夾,必須 不存在 ,否則執行會失敗

第一種和第二種其實最終都依賴生成的jtl檔案,將jtl檔案生成測試報告。雙擊測試報告中的index.html檔案即可檢視報告內容

2:外掛模式將jtl轉成測試圖表

  • 第三種:利用GUI頁面圖形化展示jtl檔案資料

下載外掛JMeterPlugins-Extras.jar、CMDRunner.jar、JMeterPlugins-Standard.jar放到本地windows機器的jmeter的lib/ext目錄下,外掛可以去官網下載,這裡我也給出我的外掛地址(只需解壓縮拷貝其中lib包下的jar檔案到lib/ext目錄下即可):http://pan.baidu.com/s/1pLexxcZ 密碼:f4rb

在windows機器上需要安裝jmeter,下載的外掛放在jmeter安裝目錄的lib/ext目錄下,然後去bin目錄下雙擊jmeter.bat開啟jmeter的gui頁面

線上程組下面新增你想要的監聽器,然後點選監聽器頁面的瀏覽按鈕,選擇你想瀏覽的jtl檔案,等待一會,就能出現你想要的圖形報告

以jp@gc - Bytes Throughput Over Time為例:

第一步:新增該監聽器,當我們把下載的jar包放到lib/ext下面然後重啟jmeter後,監聽器中就會多出很多的擴充套件監聽外掛,選擇你關注的結果外掛即可

第二步:選擇你要瀏覽的jtl檔案,監聽器新增成功後,在監聽器頁面都會有一個瀏覽按鈕,點選瀏覽按鈕找到並選擇你要看的jtl檔案

第三步:點選開啟後,等待一會,就能在相應的監聽器頁面看到你想要看到的結果了

如果你還想要看其他的資料比如聚合報告,吞吐量,響應時間等等一切你關心的資料,按上面的3個步驟走一遍就行

  • 第四種:利用CMDRunner.jar外掛用命令列的方式將jtl轉成想要的png或者csv形式,這個方式比3的好處在於3利用gui頁面有時jtl檔案資料量很大可能要等很久

首先進入lib\ext目錄下,然後去執行響應的命令

cdF:\apache-jmeter-3.0\apache-jmeter-3.0\lib\ext

java -jar CMDRunner.jar --tool Reporter --generate-png baidu_ThreadsStateOverTime.png --input-jtl baidu_requests_results.jtl --plugin-typeTransactionsPerSecond

cmd執行上面的命令,結果在lib\ext目錄下可以看到生成了一個baidu_ThreadsStateOverTime.png圖片:

雙擊開啟png圖片,就能看到想要的圖形效果

注意此處的的圖片是斷續的共15分鐘,這跟jtl有關,測試時jtl檔案如果不刪除或清空,下一次測試的資料會追加到jtl的末尾,所以可以看到上面的圖片中我的測試結果分了3次3分鐘,其餘時間其實是並沒有進行測試的情況。

命令解析:

命令最後有個命令型別:TransactionsPerSecond,除了這個還支援如下命令型別:

ThreadsStateOverTime、BytesThroughputOverTime、HitsPerSecond、LatenciesOverTime、ResponseCodesPerSecond、ResponseTimesDistribution、

ResponseTimesOverTime、ResponseTimesPercentiles、ThroughputVsThreads、TimesVsThreads、PageDataExtractorOverTime、PerfMon

我們可以用一個windows的bat批處理檔案,來執行上面的命令,命令執行完以後去相應目錄下收取結果png圖片就可以了

最後一行PerfMon:伺服器引數隨時間變化曲線注意這個需要在jmx指令碼中新增,伺服器監控,要指定ip、埠、監控項,還需要指定perfMon的輸出檔案,或者在命令列指定,如./jmeter -n -t baidu.jmx -l 2.jtp -JforcePerfmonFile=true,這樣會輸出在當前路徑。

bat命令為:對檔名稱和生成的jtl檔名以及CMDRunner.jar包路徑可根據需要修改

 1 @echo off
 2 set file="interface"
 3 set jtlfile="interface_test.jtl"
 4 f:
 5 cd F:\apache-jmeter-3.0\apache-jmeter-3.0\lib\ext
 6 java -jar CMDRunner.jar  --tool Reporter --generate-png %file%_ThreadsStateOverTime.png --input-jtl  %jtlfile%  --plugin-type ThreadsStateOverTime
 7 java -jar CMDRunner.jar  --tool Reporter --generate-png %file%_BytesThroughputOverTime.png --input-jtl  %jtlfile%  --plugin-type BytesThroughputOverTime
 8 java -jar CMDRunner.jar  --tool Reporter --generate-png %file%_HitsPerSecond.png --input-jtl  %jtlfile%  --plugin-type HitsPerSecond
 9 java -jar CMDRunner.jar  --tool Reporter --generate-png %file%_LatenciesOverTime.png --input-jtl  %jtlfile%  --plugin-type LatenciesOverTime
10 java -jar CMDRunner.jar  --tool Reporter --generate-png %file%_ResponseCodesPerSecond.png --input-jtl  %jtlfile%  --plugin-type ResponseCodesPerSecond
11 java -jar CMDRunner.jar  --tool Reporter --generate-png %file%_ResponseTimesDistribution.png --input-jtl  %jtlfile%  --plugin-type ResponseTimesDistribution
12 java -jar CMDRunner.jar  --tool Reporter --generate-png %file%_ResponseTimesOverTime.png --input-jtl  %jtlfile%  --plugin-type ResponseTimesOverTime
13 java -jar CMDRunner.jar  --tool Reporter --generate-png %file%_ResponseTimesPercentiles.png --input-jtl  %jtlfile%  --plugin-type ResponseTimesPercentiles
14 java -jar CMDRunner.jar  --tool Reporter --generate-png %file%_ThroughputVsThreads.png --input-jtl  %jtlfile%  --plugin-type ThroughputVsThreads
15 java -jar CMDRunner.jar  --tool Reporter --generate-png %file%_TimesVsThreads.png --input-jtl  %jtlfile%  --plugin-type TimesVsThreads
16 java -jar CMDRunner.jar  --tool Reporter --generate-png %file%_TransactionsPerSecond.png --input-jtl  %jtlfile%  --plugin-type TransactionsPerSecond
17 java -jar CMDRunner.jar  --tool Reporter --generate-png %file%_PageDataExtractorOverTime.png --input-jtl  %jtlfile%  --plugin-type PageDataExtractorOverTime
18 java -jar CMDRunner.jar  --tool Reporter --generate-png %file%_PerfMon.png --input-jtl  %jtlfile%  --plugin-type PerfMon

雙擊該bat檔案後,我們在lib\ext目錄下去看,就可以看到生成了很多png圖片

關心哪個圖表直接雙擊開啟即可,這樣就方便很多了。

當然除了生成png,還可以生成csv檔案,如:

 1 @echo off
 2 set file="interface"
 3 set jtlfile="interface_test.jtl"
 4 f:
 5 cd F:\apache-jmeter-3.0\apache-jmeter-3.0\lib\ext
 6 java -jar CMDRunner.jar  --tool Reporter --generate-csv %file%_PerfMon.csv --input-jtl  %jtlfile%  --plugin-type AggregateReport
 7 java -jar CMDRunner.jar  --tool Reporter --generate-csv %file%_PerfMon.csv --input-jtl  %jtlfile%  --plugin-type SynthesisReport
 8 java -jar CMDRunner.jar  --tool Reporter --generate-csv %file%_ThreadsStateOverTime.csv --input-jtl  %jtlfile%  --plugin-type ThreadsStateOverTime
 9 java -jar CMDRunner.jar  --tool Reporter --generate-csv %file%_BytesThroughputOverTime.csv --input-jtl  %jtlfile%  --plugin-type BytesThroughputOverTime
10 java -jar CMDRunner.jar  --tool Reporter --generate-csv %file%_HitsPerSecond.csv --input-jtl  %jtlfile%  --plugin-type HitsPerSecond
11 java -jar CMDRunner.jar  --tool Reporter --generate-csv %file%_LatenciesOverTime.csv --input-jtl  %jtlfile%  --plugin-type LatenciesOverTime
12 java -jar CMDRunner.jar  --tool Reporter --generate-csv %file%_ResponseCodesPerSecond.csv --input-jtl  %jtlfile%  --plugin-type ResponseCodesPerSecond
13 java -jar CMDRunner.jar  --tool Reporter --generate-csv %file%_ResponseTimesDistribution.csv --input-jtl  %jtlfile%  --plugin-type ResponseTimesDistribution
14 java -jar CMDRunner.jar  --tool Reporter --generate-csv %file%_ResponseTimesOverTime.csv --input-jtl  %jtlfile%  --plugin-type ResponseTimesOverTime
15 java -jar CMDRunner.jar  --tool Reporter --generate-csv %file%_ResponseTimesPercentiles.csv --input-jtl  %jtlfile%  --plugin-type ResponseTimesPercentiles
16 java -jar CMDRunner.jar  --tool Reporter --generate-csv %file%_ThroughputVsThreads.csv --input-jtl  %jtlfile%  --plugin-type ThroughputVsThreads
17 java -jar CMDRunner.jar  --tool Reporter --generate-csv %file%_TimesVsThreads.csv --input-jtl  %jtlfile%  --plugin-type TimesVsThreads
18 java -jar CMDRunner.jar  --tool Reporter --generate-csv %file%_TransactionsPerSecond.csv --input-jtl  %jtlfile%  --plugin-type TransactionsPerSecond
19 java -jar CMDRunner.jar  --tool Reporter --generate-csv %file%_PageDataExtractorOverTime.csv --input-jtl  %jtlfile%  --plugin-type PageDataExtractorOverTime

雙擊該bat檔案,然後去對應目錄下就能看到生成了很多csv檔案,比如AggregateReport.csv就是聚合報告

好了,以上就是jmeter的jtl檔案檢視方式了

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

轉載:https://www.cnblogs.com/miaomiaokaixin/p/6118081.html