在使用Jmeter進行接口的性能測試時,由于Jmeter 是JAVA應(yīng)用,對于CPU和內(nèi)存的消耗比較大,所以,當(dāng)需要模擬數(shù)以萬計的并發(fā)用戶時,使用單臺機器模擬所有的并發(fā)用戶就有些力不從心,甚至?xí)餔AVA內(nèi)存溢出錯誤。為了讓jmeter工具提供更大的負(fù)載能力,這時可以使用Jmeter提供的分布式功能來啟動多臺電腦來分壓測試。
熟悉 LoadRunner 的朋友一定不會對其 TPS(每秒事務(wù)數(shù))、TRT(事務(wù)響應(yīng)時間) 等視圖感到陌生,因為這是壓力測試最為關(guān)鍵的兩個指標(biāo)。JMeter 以其開源、輕巧、靈活、擴展性高等特性贏得了廣大測試從業(yè)人員的青睞,但是它沒有像 LoadRunner 那樣提供一個 TPS、TRT 之類的視圖,雖然聚合報告也能說明一些整體以及實時的問題,但是就整體趨勢、實時平均值走向、穩(wěn)定性報告方面就無能無力了,見下圖:
JMeter3.0,
OS:Win7 旗艦版。
http://www.cnblogs.com/Lam7/p/6833501.html
http://www.mamicode.com/info-detail-1394555.html
http://m.blog.csdn.net/DearMorning/article/details/71124175
http://www.cnblogs.com/wnfindbug/p/5505470.html
- 插件下載
下載地址:https://jmeter-plugins.org/wiki/TransactionsPerSecond/,該插件最新版本為 2.0,大小 913 KB。筆者上傳了一份最新版本的 jpgc-graphs-basic-2.0.zip,有興趣的朋友可以去下載,下載地址:JMeter 每秒事務(wù)數(shù) TPS 插件。2. 解壓安裝
將 jpgc-graphs-basic-2.0.zip 解壓縮后只有一個 lib 目錄,該目錄下有一個 ext 文件夾和一個 jmeter-plugins-cmn-jmeter-0.3.jar 包,ext 文件夾中有 jmeter-plugins-graphs-basic-2.0.jar 和 jmeter-plugins-manager-0.10.jar 包。將 lib 目錄下的 jmeter-plugins-cmn-jmeter-0.3.jar 拷貝到 %JMeter%/lib 目錄下,將 ext 目錄下的 jmeter-plugins-graphs-basic-2.0.jar 和 jmeter-plugins-manager-0.10.jar 拷貝到 %JMeter%/lib/ext 目錄下,重啟 JMeter,發(fā)現(xiàn)已經(jīng)支持 TPS、TRT 等視圖了:已經(jīng)支持TPS了.png
3.1. 添加 TPS 視圖
線程組 -> 添加 -> 監(jiān)聽器 -> jp@gc Transaction per Second。某次壓測實際效果圖:TPS實際效果圖.png
線程組 -> 添加 -> 監(jiān)聽器 -> jp@gc Response Times Over Time。某次壓測實際效果圖:TRT實際效果圖.png
http://www.cnblogs.com/whitewasher/p/6946207.html
一、Jmeter分布式執(zhí)行原理:
1、Jmeter分布式測試時,選擇其中一臺作為控制機(Controller),其它機器做為代理機(Agent)。
2、執(zhí)行時,Controller會把腳本發(fā)送到每臺Agent上,Agent 拿到腳本后開始執(zhí)行,Agent執(zhí)行時不需要啟動Jmeter,只需要把jmeter-server.bat文件打開,它應(yīng)該是通過命令行模式來執(zhí)行的。
3、執(zhí)行后,Agent會把結(jié)果回傳給Controller,Controller會收集所有Agent的信息并匯總。
二、代理機(Agent)配置:
1、Agent機上需要安裝JDK、Jmeter,并且配置好環(huán)境變量。
2、打開“運行”,輸入"cmd",打開運行面板,輸入“ipconfig”,找到IP地址,例如是:192.168.8.149
3、打開Jmeter/bin/jmeter.properties,找到”remote_hosts=127.0.0.1”,把這一行修改為”remote_hosts=192.168.8.149:1099,1099是端口號,可以隨意自定義。
4、打開jmeter-server.bat文件,就設(shè)置完成了,等待控制機(Controller)啟動。
三、控制機(Controller)配置:
1、Controller機上需要安裝JDK、Jmeter,并且配置好環(huán)境變量。
2、打開“運行”,輸入"cmd",打開運行面板,輸入“ipconfig”,找到IP地址,例如是:192.168.8.174
3、打開Jmeter/bin/jmeter.properties,找到”remote_hosts=127.0.0.1”,把這一行修改為”remote_hosts=192.168.8.149:1099,192.168.8.174:1099,1099是端口號,可以隨意自定義。如果有多臺代理機,這里需要把所有的代理機的IP地址和端口號都加入進來。
4、打開jmeter-server.bat文件,設(shè)置完成了。
四、開始添加線程組和請求來運行查看結(jié)果:
1、打開jmeter.bat文件,添加線程組,編輯線程數(shù),這里設(shè)置100個線程數(shù),循環(huán)2次,就是一臺機器發(fā)送100*2=200個請求。
2、添加HTTP請求,這里以訪問淘寶為例。
3、添加察看結(jié)果數(shù)和聚合報告,點擊運行,可以選擇遠(yuǎn)程啟動或者遠(yuǎn)程全部啟動,如果是點擊遠(yuǎn)程啟動,可以選擇任意一臺電腦來運行,如果是點擊遠(yuǎn)程全部啟動就會運行控制機和所有的代理機。
4、這里以點擊遠(yuǎn)程全部啟動為例。運行結(jié)束后,查看聚合報告,每臺電腦設(shè)置的線程數(shù)為200,這里一共是兩臺電腦,所以是200*2=400個線程數(shù)。
進行Web的壓力測試
JMeter中最小的單位就是元件.你可以給你的測試計劃中增加若干的元件,每一個元件其實就是一個步驟.JMeter中設(shè)置了各種不同的元件:有設(shè)置用戶的,有設(shè)置定時器的,有設(shè)置前后置處理的,有設(shè)置斷言的還有設(shè)置監(jiān)聽器的.通過這些不同的元件的組合,我們就能很很容易的組合出更多不同的壓力測試用例.
我們以最簡單的Web服務(wù)器的壓力測試為例,來演示下如何使用JMeter設(shè)置測試用例.
設(shè)置線程組(模擬用戶)
壓力測試不同于功能測試,軟件的正確性并不是它的測試重點。它所看重的是軟件的執(zhí)行效率,尤其是短時間內(nèi)訪問用戶數(shù)爆炸性增長時軟件的響應(yīng)速度.因此就需要同時模擬多個用戶對系統(tǒng)進行請求.因此,一般設(shè)置測試計劃的第一步都是創(chuàng)建一個線程組,用來模擬多個用戶的操作.

而后就需要設(shè)置線程組的一些屬性.
線程數(shù):相當(dāng)于是模擬用戶的數(shù)量.
準(zhǔn)備時長:表示線程之間間隔多少時間,單位是秒.0就表示了所有的線程并發(fā)發(fā)送請求,否則就是每個線程間隔幾秒發(fā)送請求
循環(huán)次數(shù):表示每個線程執(zhí)行幾次
調(diào)度器:就是創(chuàng)建線程的schedule.
在取樣器錯誤后執(zhí)行的操作:表示線程出現(xiàn)錯誤后執(zhí)行的操作.比如繼續(xù),或者停止線程,或者測試

設(shè)置HTTP請求
這里我們使用最簡單的用例進行測試——訪問我的博客的首頁,測試QPS(Query Per Second 每秒查詢率)的情況.
因此,接下來我們需要增加的就是在線程組上面右鍵—-添加—-Sampler—-HTTP請求.

在JMetaer中取樣器(Sampler)就是與服務(wù)器進行交互的元件.一個取樣器通常會進行三個部分的工作:
向服務(wù)器發(fā)送請求
記錄服務(wù)器的響應(yīng)數(shù)據(jù)
記錄響應(yīng)的時間信息

這里我設(shè)置了:
服務(wù)器名稱: sunxiang0918.cn
端口號: 80
HTTP請求實現(xiàn): JAVA
協(xié)議: http
方法: GET
ContentEncoding: UTF-8
路徑: /
其實這樣就算是完成了一個HTTP請求的設(shè)置了.這個時候我們就可以保存這個測試用例到一個JMX文件
中.然后執(zhí)行這個測試用例了. 不過,由于我們還沒有配置監(jiān)聽器元件,因此,現(xiàn)在運行的話.我們是看不到任何的結(jié)果的.
請求參數(shù)模板化
在實際的使用中,我們的請求中可能有不同的參數(shù),并且這些參數(shù)可能是不相同的.這就需要把參數(shù)模板化.
在JMeter中,參數(shù)的語法是:${xxxx}
其中的xxxx
即為參數(shù)名. 通過這個語法,就可以在整個請求中調(diào)用參數(shù)的值. 只要我們對這些參數(shù)進行賦值即可.

比如在這里我們增加一個Random Variable
.這個表示的是隨機的給一個變量進行賦值.
我們在這里設(shè)置了一個keyword
的變量,其值為0
到100
間的隨機數(shù).隨機方式采用默認(rèn)的.

然后在請求中增加一個請求的參數(shù):
執(zhí)行測試計劃,會發(fā)現(xiàn)請求的URL就會變成:GET http://sunxiang0918.cn/?aaaaa=xxxx49
,后面的數(shù)字就是隨機.
除了隨機變量或用戶定義的變量外.還可以讀取CSV文件,通過CSV Data Set Config
,可以讀取CSV文件,并且制定每一列的變量名是什么.這樣就可以在請求的時候預(yù)設(shè)多個變量值.
增加響應(yīng)斷言
為了判斷結(jié)果的正確性,我們有時需要增加響應(yīng)的斷言.比如響應(yīng)代碼必須是200才作數(shù).JMeter中有一個元件就叫做響應(yīng)斷言
.這個就可以加在HTTP請求的后面,用來判斷結(jié)果是否正確.
在這里我只增加了一個最簡單的通過響應(yīng)代碼來判斷請求是否正確.

除此之外,它還能通過響應(yīng)的內(nèi)容,響應(yīng)的頭信息等來進行判斷.功能非常的強大.
設(shè)置結(jié)果監(jiān)聽器
為了我們能查看到請求的結(jié)果,我們需要再添加監(jiān)聽器.在這里我們增加三個結(jié)果監(jiān)聽器:察看結(jié)果樹
圖形結(jié)果
以及聚合報告
查看結(jié)果樹
可以查看到每一次請求的具體情況,包括了請求參數(shù),結(jié)果反饋,請求時間等等.圖形結(jié)果
可以以圖形的方式展現(xiàn)請求的中和結(jié)果.聚合報告
會展示本次測試計劃所有的請求的一個聚合的結(jié)果.

這幾個結(jié)果監(jiān)聽器都不需要什么設(shè)置.增加后,即可再執(zhí)行一次測試計劃.里面就會有結(jié)果了.

我們先來看查看結(jié)果樹
.它顯示了這次請求的所有信息.比如開始時間,線程名字,完成用時,請求大小,反饋大小,反饋代碼,采樣次數(shù),錯誤信息,反饋頭信息,反饋體等等.通過這個列表,我們就能很清楚的知道所有請求的大概情況.

然后就是圖形結(jié)果
從這個圖上就能很清楚的看出整個請求和響應(yīng)的趨勢.
最后就是聚合報告
.它用表格的形式展示了本次測試的總體情況.
LabelSamplesAverageMedian90%Line95%Line99%LineMinMaxErrorThroughputKB/sec名稱采樣請求數(shù)平均響應(yīng)時間中位數(shù)90%用戶響應(yīng)時間95%用戶響應(yīng)時間99%用戶響應(yīng)時間最小響應(yīng)時間最大響應(yīng)時間錯誤請求百分比吞吐量,每秒完成請求數(shù)每秒接收數(shù)據(jù)量HTTP請求20081166015371886242227534240.00%15.8/sec542.3
限制QPS
為了了解博客的首頁在負(fù)載達到30QPS時的響應(yīng)時間,我們就需要控制向博客首頁發(fā)送請求的負(fù)載為固定的30QPS.JMeter提供了一個非常有用的定時器:Constant Throughput Timer
(常數(shù)吞吐量定時器),通過該定時器可以方便的控制給一個采樣器發(fā)送請求的吞吐量.

首先是Target throughput
目標(biāo)吞吐量,需要注意的是這個的單位是分鐘. 比如我們要測試的是30QPS,那么一分鐘的吞吐量就是 1800.而Calculate Throughput based on
有五個選項:
This thread only:控制每一個線程的吞吐量.這個時候,總吞吐量就是Target throughput
乘以線程數(shù)
All active threads:設(shè)置總體的吞吐量,它會把Target throughput
分配到每一個活躍的想成上.
All active threads in current thread group.設(shè)置總體的吞吐量,它會把Target throughput
分配到每一個活躍的想成上.當(dāng)一個測試計劃中只有一個測試組的時候,效果和All active threads
是一樣的.
All active threads(shared):與All active threads
的區(qū)別在于,每個活躍線程都會在所有活躍線程上一次運行結(jié)束后等待一定的時間后再次運行.
All active threads in current thread group(shared):與All active threads in current thread group
的區(qū)別在于,每個活躍線程都會在所有活躍線程上一次運行結(jié)束后等待一定的時間后再次運行.
因此,我們這里選擇了All active threads
版權(quán)歸作者所有,任何形式轉(zhuǎn)載請聯(lián)系作者。
作者:hèihèi(來自豆瓣)
來源:https://www.douban.com/note/569104696/
做web項目測試,登陸的測試是必不可少的。通過學(xué)習(xí)邏輯控制器內(nèi)容,了解到其中ForEach Controller 可很好的與config element中的user defined variables配合使用,可依次申請到預(yù)設(shè)變量值。便希望通過foreach控制器實現(xiàn)多用戶并發(fā)登陸測試。但是在使用過程中發(fā)現(xiàn),user defined variables每次只可以請求到一個參數(shù)。對于,用戶名、密碼驗證登陸這一方式,需要請求兩個變量完成業(yè)務(wù)的形式,是無法實現(xiàn)的,(即使添加兩組user defined variables也不能很好完成這一任務(wù))。
于是在config element中發(fā)現(xiàn)了CSV Data Set Config。
首先將需要申請的數(shù)據(jù)存放到一新建txt文件中,數(shù)組間以換行形式隔離,同一組數(shù)據(jù)以;,等隔開,如是tab,用/t,并以.csv格式保存。
修改CSV Data Set Config中參數(shù):
filename:參數(shù)文件保存路徑及文件名
File Encoding: 文件編碼,默認(rèn)為ANSI
Varible Names: 定義文本文件中的參數(shù)名,參數(shù)之間逗號分隔.定義后可在腳本在以Shell變量的同樣的方式引用
Allow Quoated data: 雙引號相關(guān)
Recycle on EOF: 設(shè)置為True后,允許循環(huán)取值
Stop Thread on EOF: 當(dāng)Recycle on EOF為false并且Stop Thread on EOF為true,則讀完csv文件中的記錄后,停止運行
Sharing Mode: 設(shè)置是否線程共享
然后設(shè)置線程組線程數(shù),一般用戶數(shù)與線程數(shù)相同;
添加登陸的http請求,設(shè)置發(fā)送請求的參數(shù):
其中值${ }與CSV Data Set Config中參數(shù)名相對應(yīng)
在請求后添加響應(yīng)斷言檢查是否正確
1.jmeter安裝
1)window系統(tǒng),下載.zip包解壓,添加環(huán)境變量,就ok . windows系統(tǒng)安裝jmeter
2)linux安裝,下載tar.gz包解壓,添加環(huán)境變量,linux系統(tǒng)安裝jmeter
cat /etc/profile
JDK配置export JAVA_HOME=/opt/product/test/tools/jdk1.8.0_111export PATH=$JAVA_HOME/bin:$PATHexport CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar#Jmeter配置export JMETER=/opt/apache-jmeter-3.0export CLASSPATH=${JMETER}/lib/ext/ApacheJMeter_core.jar:${JMETER}/lib/jorphan.jar:$JMETER/lib/logkit-2.0.jar:${CLASSPATH} export PATH=${JMETER}/bin/:${PATH}
驗證是否安裝好,返回如下的信息就代表安裝好了
[root@localhost bin]# java -versionjava version "1.8.0_111"Java(TM) SE Runtime Environment (build 1.8.0_111-b14)Java HotSpot(TM) 64-Bit Server VM (build 25.111-b14, mixed mode)[root@localhost bin]# [root@localhost bin]# jmeter -vWriting log file to: /opt/apache-jmeter-3.0/bin/jmeter.log _ ____ _ ____ _ _ _____ _ __ __ _____ _____ _____ ____ / \ | _ \ / \ / | | | | ____| | | / | ____| | ____| _ \ / _ \ | |) / _ | | | || | | _ | | |/| | | | | | | | |) | / ___ | / ___ \ || _ | |_ | || | | | | |__ | | | || _ < // __| // __|| ||_____| _/|| ||_____| || |_____|| _\ 3.0 r1743807 Copyright (c) 1999-2016 The Apache Software Foundation[root@localhost bin]#
1.在windows環(huán)境錄制測試計劃
1)打開jmeter,創(chuàng)建測試計劃(線程組-sampler(HTTP請求-監(jiān)聽器(查看結(jié)果樹、聚合報告)))
100個并發(fā)打壓2分鐘.png
HTTP請求,填寫IP,端口,請求方法,路徑,參數(shù)名稱和值
HTTP請求.png
以上截圖中的參數(shù)名稱是接口文檔里面定義的,值是我們設(shè)定的。設(shè)定參數(shù)值的方法很多,第一個方法 是在文件中取值,比如第一個參數(shù) UserID 是在一個文件中去的,如果在文件中取值需要添加 配置元件(CSV Date Set Config)進行參數(shù)化,如下圖:
配置元件.png
取參數(shù)也可以通過函數(shù) 動態(tài)生成數(shù)據(jù),如 ${__RandomString(8,324YFHDDN0098432U2J32EWWDDYEHD,)}指在后面的字符中隨機取8個數(shù)字。
查看結(jié)果樹和聚合報告是用來查看執(zhí)行計劃是否成功以及各項指標(biāo)的。
保存測試計劃.png
最后把跑通的腳本保存為 .jmx文件。
2.在linux環(huán)境執(zhí)行測試計劃(打壓)
把腳本上傳到 linxu環(huán)境,可以在腳本里面直接修改參數(shù)(并發(fā)數(shù)、運行時間、參數(shù)文件的位置)在 jmeter 的bin目錄下執(zhí)行測試計劃,執(zhí)行命令如下;
jmeter -n -t ncindex-collect.jmx -l result.jtl -e -o ResultReport#ncindex-collect.jmx是腳本名字,result.jtl 是生成的日志文件,ResultReport是生成的報告目錄· -h 幫助 -> 打印出有用的信息并退出· -n 非 GUI 模式 -> 在非 GUI 模式下運行 JMeter· -t 測試文件 -> 要運行的 JMeter 測試腳本文件· -l 日志文件 -> 記錄結(jié)果的文件· -r 遠(yuǎn)程執(zhí)行 -> 啟動遠(yuǎn)程服務(wù)· -H 代理主機 -> 設(shè)置 JMeter 使用的代理主機· -P 代理端口 -> 設(shè)置 JMeter 使用的代理主機的端口號
執(zhí)行命令后還需要觀察打壓過程是否有報錯,監(jiān)控linux服務(wù)器的cpu 、內(nèi)存、負(fù)載等。
跑腳本的過程.png
服務(wù)器性能監(jiān)控.png
probe監(jiān)控應(yīng)用耗費內(nèi)存.png
如果腳本過程有報錯,還要去監(jiān)控應(yīng)用的日志,我在打壓的時候應(yīng)用日志就報了內(nèi)存泄露;
應(yīng)用日志報錯.png
這時候需要分析內(nèi)存泄露在什么地方,什么地方占用內(nèi)存,執(zhí)行命令:
jmap -dump:format=b,file=mem.dat PID
dump下來的文件需要用工具分析,具體使用工具 Memory Analyzer,是一個eclipse插件 ,也可以單獨使用,安裝以及使用方法見 :MAT Memory Analyzer Tool 插件安裝(圖解) 性能分析工具之-- Eclipse Memory Analyzer tool(MAT)(二)使用 Eclipse Memory Analyzer 進行堆轉(zhuǎn)儲文件分析分析后會生成的報告見:
大體意思就是 大部分的內(nèi)存泄露是因為 "java.util.concurrent.ConcurrentHashMap$Node[]" 還可以看具體報告的細(xì)節(jié),雖然看不大懂,但是知道肯定是代碼引起的。打壓過程還有個很奇怪的現(xiàn)象就是打壓完成后 內(nèi)存和cpu好久都下不來,這明顯是不正常的。對比圖如下:
后來就把報告發(fā)給研發(fā)分析,也發(fā)給我們經(jīng)理看了下,最終他們給出的結(jié)果是 被壓的頁面沒有關(guān)閉session,如下修改:
<%@ page session="false" contentType="text/html;charset=UTF-8" language="java"%>
后來關(guān)閉后再打壓果然不報錯了,老大說這種這種問題很常見,不得不感嘆經(jīng)驗很重要呀!
最后展示一下某個接口的打壓情況:
接口打壓統(tǒng)計.png
接口打壓統(tǒng)計.png
現(xiàn)在打壓出了接口的TPS,但是我還不知道要根據(jù)這個TPS怎么判斷出使用幾臺服務(wù)器,周一把數(shù)據(jù)匯報給經(jīng)理再確定。和老大商討后的結(jié)果:根據(jù)現(xiàn)網(wǎng)10W認(rèn)證用戶可以算出:
現(xiàn)網(wǎng)目前的TPS.png
就算用戶增加到200W,算出來的 是:600多,但是打壓出來的系統(tǒng)能力遠(yuǎn)不止這些,所以目前2臺服務(wù)器就可以支撐了。
################################################################
Jmeter之http性能測試實戰(zhàn) 非GUI模式壓測 NON-GUI模式 結(jié)果解析TPS——干貨(十一)
性能測試計劃
性能測試用例
錄制腳本
性能測試結(jié)果
性能測試報告
性能測試監(jiān)控報告
準(zhǔn)備工作
從腳本已錄制成功之后開始進行壓測
安裝Jmeter拓展插件 查看 Transactions per Second* https://jmeter-plugins.org/wiki/TransactionsPerSecond/ ←插件地址*
在壓測前先安裝 Nmon監(jiān)控工具在服務(wù)器linux性能監(jiān)控分析及通過nmon_analyse生成分析報表
PS :安裝 TPS教程
解壓安裝
將 jpgc-graphs-basic-2.0.zip 解壓縮后只有一個 lib 目錄,該目錄下有一個 ext 文件夾和一個 jmeter-plugins-cmn-jmeter-0.3.jar 包,ext 文件夾中有 jmeter-plugins-graphs-basic-2.0.jar 和 jmeter-plugins-manager-0.10.jar 包。將 lib 目錄下的 jmeter-plugins-cmn-jmeter-0.3.jar 拷貝到 %JMeter%/lib 目錄下,將 ext 目錄下的 jmeter-plugins-graphs-basic-2.0.jar 和 jmeter-plugins-manager-0.10.jar 拷貝到 %JMeter%/lib/ext 目錄下,重啟 JMeter,發(fā)現(xiàn)已經(jīng)支持 TPS、TRT 等視圖了:
TPS導(dǎo)入解析測試報告
導(dǎo)入之后就可以看到 TPS數(shù)據(jù)了
取至Jmeter官方文檔
1.0.2 Load Test running
Once your Test Plan is ready, you can start your Load Test. The first step is to configure the injectors that will run JMeter, this as for any other Load Testing tool includes:
Correct machine sizing in terms of CPU, memory and network
OS Tuning
Java setup: Ensure you install the latest version of Java supported by JMeter
Correct sizing of Java Heap. By default JMeter runs with a heap of 512MB, this might not be enough for your test and depends on your test plan and number of threads you want to run
Once everything is ready, you will use Command-line mode (called Non-GUI mode) to run it for the Load Test.
Don't run load test using GUI mode !
不要使用GUI模式運行負(fù)載測試!因為GUI模式的話會占用比較大的內(nèi)存空間,并發(fā)數(shù)量上不去等等的問題
Using Non-GUI mode, you can generate a CSV (or XML) file containing results and have JMeter generate an HTML report at end of Load Test. JMeter will by default provide a summary of load test while it's running. You can also have real-time results during your test using Backend Listener.
NON-GUI模式允許得到結(jié)果后可以在后端監(jiān)聽器的測試期間獲得實時結(jié)果。這句話如何理解呢,見上面“TPS導(dǎo)入解析測試報告”
Running JMeter
To run Apache JMeter in NON_GUI
直接進入腳本路徑,輸入 Jmeter的啟動路徑
可以查看到Jmeter的相關(guān)命令幫助
小七的Jmeter路徑是安裝在D:\Jmeter\jmeter-3.1 所以直接進入bin目錄下 找到j(luò)meter 查看H幫助文檔
C:\Users\lamw\Desktop\lamwλ D:\Jmeter\jmeter-3.1\bin\jmeter -hWriting log file to: C:\Users\lamw\Desktop\lamw\jmeter.log
_ ____ _ ____ _ _ _____ _ __ __ _____ _____ _____ ____ / \ | _ \ / \ / | | | | ____| | | / | ____| | ____| _ \ / _ \ | |) / _ | | | || | | _ | | |/| | | | | | | | |) | / ___ | / ___ \ || _ | |_ | || | | | | |__ | | | || _ <// __| // __|| ||_____| _/|| ||_____| || |_____|| _\ 3.1 r1770033
Copyright (c) 1999-2016 The Apache Software Foundation
To list all command line options, open a command prompt and type:
jmeter.bat(Windows)/jmeter.sh(Linux) -?
To run Apache JMeter in GUI mode, open a command prompt and type:
jmeter.bat(Windows)/jmeter.sh(Linux) [-p property-file]
To run Apache JMeter in NON_GUI mode:Open a command prompt (or Unix shell) and type:
jmeter.bat(Windows)/jmeter.sh(Linux) -n -t test-file [-p property-file] [-l results-file] [-j log-file]
To run Apache JMeter in NON_GUI mode and generate a report at end :Open a command prompt (or Unix shell) and type:
jmeter.bat(Windows)/jmeter.sh(Linux) -n -t test-file [-p property-file] [-l results-file] [-j log-file] -e -o [Path to output folder]
--------------------------------------------------To generate a Report from existing CSV file:Open a command prompt (or Unix shell) and type:
jmeter.bat(Windows)/jmeter.sh(Linux) -g [csv results file] -o [path to output folder (empty or not existing)]
To tell Apache JMeter to use a proxy server:Open a command prompt and type:
jmeter.bat(Windows)/jmeter.sh(Linux) -H [your.proxy.server] -P [your proxy server port]
To run Apache JMeter in server mode:Open a command prompt and type:
jmeter-server.bat(Windows)/jmeter-server(Linux)
上面包含了一些參數(shù) 可以輸入 -l 查看
C:\Users\lamw\Desktop\lamwλ D:\Jmeter\jmeter-3.1\bin\jmeter -lUsage --? print command line options and exit -h, --help print usage information and exit -v, --version print the version information and exit -p, --propfile <argument> the jmeter property file to use -q, --addprop <argument> additional JMeter property file(s) -t, --testfile <argument> the jmeter test(.jmx) file to run -l, --logfile <argument> the file to log samples to -j, --jmeterlogfile <argument> jmeter run log file (jmeter.log) -n, --nongui run JMeter in nongui mode -s, --server run the JMeter server -H, --proxyHost <argument> Set a proxy server for JMeter to use -P, --proxyPort <argument> Set proxy server port for JMeter to use -N, --nonProxyHosts <argument> Set nonproxy host list (e.g. *.apache.org|localhost) -u, --username <argument> Set username for proxy server that JMeter is to use -a, --password <argument> Set password for proxy server that JMeter is to use -J, --jmeterproperty <argument>=<value> Define additional JMeter properties -G, --globalproperty <argument>=<value> Define Global properties (sent to servers) e.g. -Gport=123 or -Gglobal.properties -D, --systemproperty <argument>=<value> Define additional system properties -S, --systemPropertyFile <argument> additional system property file(s) -L, --loglevel <argument>=<value> [category=]level e.g. jorphan=INFO or jmeter.util=DEBUG -r, --runremote Start remote servers (as defined in remote_hosts) -R, --remotestart <argument> Start these remote servers (overrides remote_hosts) -d, --homedir <argument> the jmeter home directory to use -X, --remoteexit Exit the remote servers at end of test (non-GUI) -g, --reportonly <argument> generate report dashboard only, from a test results file -e, --reportatendofloadtests generate report dashboard after load test -o, --reportoutputfolder <argument> output folder for report dashboard
下面我們就采用 NON_GUI模式執(zhí)行腳本 如下:
--------------------------------------------------To run Apache JMeter in NON_GUI mode and generate a report at end :Open a command prompt (or Unix shell) and type:jmeter.bat(Windows)/jmeter.sh(Linux) -n -t test-file [-p property-file] [-l results-file] [-j log-file] -e -o [Path to output folder]--------------------------------------------------
輸入以下命令直接執(zhí)行錄制好的腳本文件C:\Users\lamw\Desktop\lamwλ D:\Jmeter\jmeter-3.1\bin\jmeter.bat -n -t test.jmx -l test_report_01.csv -e -o test_report_01命令解析:
C:\Users\lamw\Desktop\lamw 這個是測試腳本所在的文件目錄
D:\Jmeter\jmeter-3.1\bin\jmeter.bat --------Jmeter.bat 的執(zhí)行路徑
-n, --nongui -------------以nongui模式執(zhí)行run JMeter in nongui mode
-t, --testfile <argument>-------------壓測腳本文件jmxthe jmeter test(.jmx) file to run
-l, --logfile <argument>-------------將樣本記錄到的文件the file to log samples to
-e, --reportatendofloadtests------------ 在加載測試后生成報告儀表板generate report dashboard after load test-o, --reportoutputfolder <argument>---------------- 報告儀表板的輸出文件夾output folder for report dashboard
運行腳本進行壓測
當(dāng)然,在運行腳本進行壓測的時候 需要在服務(wù)器 先執(zhí)行 采集命令
ps -ef | grep nmon 查看采集數(shù)據(jù)的進程
[root@lamw /home/lam7/nmon]# ps -ef | grep nmon
[root@lamw /home/lam7/nmon]# nmon -f -s 1 -c 60
-f 表示生成的數(shù)據(jù)文件名中有時間;
-t 輸出中包括占用率較高的進程;
-s 1 表示每 1 秒采集一次數(shù)據(jù);
-c 60 表示采集 60 次,1s*60=60秒;
至于監(jiān)控的方式可以查看上面所講的準(zhǔn)備工作第三點
.