Jmeter既能夠接口測試也能夠作性能測試,下面講一下使用jmeter作壓力測試,壓力測試就是多個用戶同時操做系統,即設置併發,併發運行時間。linux
壓力測試通常分單場景和多場景,單場景就是壓測單個接口,多場景就是同時壓測多個有數據關聯的接口。nginx
在壓測前,要確認壓測的功能和指標,通常須要確認下面幾個問題:web
一、併發數是多少?數據庫
二、TPS(服務器每秒鐘處理的請求數)目標是多少?響應時間有什麼要求?windows
三、接口參數固定仍是隨機化?tomcat
壓力測試的步驟與接口測試相同:1)添加線程組 2)添加http請求 3)在http請求中寫入url、路徑、請求方式、參數等,進行一系列的請求設置(參數化、關聯等) 4)添加監聽器 5)運行腳本,查看結果服務器
壓測主要設置的就是步驟1)線程組有關的內容,其中循環次數並不會改變併發數,只是延長了併發時間。總請求數=線程數*循環次數網絡
圖1併發
通常在線程組上添加聚合報告來查看和分析壓測結果:高併發
圖2
聚合報告內容以下:
圖3
壓測結果分析
一、有錯誤發生,須要與開發確認,是否容許錯誤的發生或者錯誤率容許在多大範圍內
二、壓測結束,登陸響應的web服務器查看CPU等性能指標,進行數據分析
三、最大的tps:不斷增長併發數,加到tps達到必定值開始出現降低時,那麼這個值就是最大的tps
四、最大併發數:通常不斷增大請求,直到響應請求超時時,可認爲該值爲最大併發數
五、壓測過程出現性能瓶頸,若壓力機管理器查看到cpu、網絡和內存等都正常,未達到90%以上,則能夠說明服務器有問題,壓力機沒有問題
六、影響性能的考慮點包括:數據庫、應用程序、中間件(tomcat、nginx)、網絡、操做系統等方面
用windows平臺測試時,會受到網絡條件的影響,致使測試結果不夠準確,尤爲在高併發狀況下,須要可以精準的測試請求的響應時長,對於網絡的要求更加苛刻,此時,能夠考慮在linux服務器端安裝jmeter進行測試。
在linux下安裝jmeter,推薦播客:http://blog.csdn.net/zhemeteor/article/details/51315874
咱們能夠如今windows上先把腳本作好,再到linux底下運行便可。
例如:jmeter -n -t test1.jmx -l logfile1.jtl
經常使用命令參數:
-n:非GUI模式下運行jmeter
-t:要運行的jmeter測試腳本文件,test1.jmx就是作好的jmeter腳本
-l:記錄結果的文件,logfile1.jtl就是測試結果文件
-r:啓動遠程服務
-H:設置jmeter使用的代理主機
測試結果文件能夠直接導入到查看結果樹或者聚合報告下
在壓力測試過程當中,可能併發數過大,一個機子啓動不了,可使用多個機子一塊兒來併發。此時就須要添加負載機。
一、先在其餘的負載機(另外的電腦)上啓動jmeter-server。Windows機子做爲壓力機的話,運行jmeter-server.bat;linux、mac做爲壓力機的話,運行jmeter-server.sh
二、修改主控機jmeter的bin目錄下的配置文件jmeter.properties,找到remot_hosts,而後把負載機的ip加入到裏面就行了,別忘記寫端口號
圖4
默認jmeter-server的端口號是1099,若是說負載機上的端口號改了,那麼你在這裏也得改
四、啓動時候選擇遠程所有運行便可
使用遠程負載進行壓測,總請求數=線程數*循環次數*運行機個數。以下,線程組設置以下圖5,負載機設置以下圖6,有兩個機器會運行腳本,每一個機器都運行2*2次,即總請求數爲2*2*2,如圖7
圖5
圖6
圖7
使用遠程負載運行的請求,查看結果樹的響應數據是空的,如上圖7。咱們能夠經過在請求下添加斷言,或者直接用聚合報告來查看請求是否正確。
當請求自己是正確的,故意將斷言的響應數據寫錯的話,就能夠看到請求的響應數據啦,如圖8
圖8
一、 負載機和控制機的jmeter版本保持一致,不然有時會報以下錯(固然不排除別的可能也會報以下錯);有時是負載機不會運行腳本,也不報任何錯。
圖9
二、 須要控制機也運行腳本時,配置文件中remote_hosts的127.0.0.1的IP後面也要加上端口號「:1099」,而且在控制機運行jmeter-server.bat,不然會報如圖10的錯;不須要控制機運行腳本時,直接將remote_hosts的127.0.0.1刪除,只留下負載機IP,這樣就只有負載機在運行腳本。
圖10