我們知道命令行的方式執行完成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
參數說明:









- 第二種:使用之前的測試結果,生成測試報告
./jmeter -g baidu_requests_results.jtl -e -o /home/tester/apache-jmeter-3.0/resultReport
第一種和第二種其實最終都依賴生成的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
官網下載地址:http://jmeter-plugins.org/wiki/JMeterPluginsCMD/
在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目錄下,然后去執行響應的命令
cd F:\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-type TransactionsPerSecond
cmd運行上面的命令,結果在lib\ext目錄下可以看到生成了一個baidu_ThreadsStateOverTime.png圖片:
注意:jtl文件要與配置文件在同一目錄下
雙擊打開png圖片,就能看到想要的圖形效果
注意此處的的圖片是斷續的共15分鍾,這跟jtl有關,測試時jtl文件如果不刪除或清空,下一次測試的數據會追加到jtl的末尾,所以可以看到上面的圖片中我的測試結果分了3次3分鍾,其余時間其實是並沒有進行測試的情況。
命令解析:
命令最后有個命令類型:TransactionsPerSecond(吞吐量,即:每秒事務數),除了這個還支持如下命令類型:
ThreadsStateOverTime = Active Threads Over Time: 線程數隨時間的變化曲線
BytesThroughputOverTime:流量隨時間的變化曲線
HitsPerSecond:點擊率隨時間的變化曲線(每秒點擊數)
LatenciesOverTime:延遲隨時間的變化曲線
ResponseCodesPerSecond:響應碼隨時間變化曲線
ResponseTimesDistribution:響應時間分布
ResponseTimesOverTime:響應時間隨時間變化曲線 (事務響應時間)
ResponseTimesPercentiles:響應時間的百分比
ThroughputVsThreads:吞吐率隨線程變化曲線
TimesVsThreads = Response Times VS Threads :響應時間隨線程變化曲線
TransactionsPerSecond : 事務隨時間變化曲線
PageDataExtractorOverTime、
PerfMon = PerfMon Metrics Collector 服務器參數隨時間變化曲線(服務器性能監控數據采集器)
我們可以用一個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就是聚合報告
nmon https://www.jianshu.com/p/51c96f475eb1
另外一個監控cpu的工具(連接遠程進程,沒有測試通過。。。本地連接可以用)
監控內存及CPU等(jconsole)
jconsole是jdk的一個JVM監視,管理工具.位於:JAVA_HOME/bin/jconsole.exe.
jconsole可以監視本地進程(localhost)和遠程服務器進程(remote).
打開這個小工具的步驟很簡單,如果你已經配置好了Jmeter運行的環境,那么你也就不用去做其他的配置,直接 點擊:開始——》運行——》輸入cmd——》然后在出現的命令行界面輸入“jconsole”即可彈出一個【java監視和管理控制台】,
將會彈出如下界面:
這里我們選擇本地進程,並點擊一下sun.tools.jconsole.JConsole這一行,然后點擊連接,就可以查看我們的內存和CPU的使用情況了。
當然,我們要得到服務器的內存使用等信息,也可以選擇 本地進程下面的遠程進程,在文本框中輸入我們需要測試的服務器的IP地址:端口,然后在下面輸入用戶名和密碼,點擊連接,看看會出現什么情況。