最近了解了一些性能測試的基礎知識和原理決定動手實踐下,比較選擇了jmeterhtml
Apache JMeter是Apache組織開發的基於Java的壓力測試工具。用於對軟件作壓力測試,它最初被設計用於Web應用測試,但後來擴展到其餘測試領域。 它能夠用於測試靜態和動態資源,例如靜態文件、Java 小服務程序、CGI 腳本、Java 對象、數據庫、FTP 服務器, 等等。JMeter 能夠用於對服務器、網絡或對象模擬巨大的負載,來自不一樣壓力類別下測試它們的強度和分析總體性能。另外,JMeter可以對應用程序作功能/迴歸測試,經過建立帶有斷言的腳原本驗證你的程序返回了你指望的結果。爲了最大限度的靈活性,JMeter容許使用正則表達式建立斷言。java
Apache jmeter 能夠用於對靜態的和動態的資源(文件,Servlet,Perl腳本,java 對象,數據庫和查詢,FTP服務器等等)的性能進行測試。它能夠用於對服務器、網絡或對象模擬繁重的負載來測試它們的強度或分析不一樣壓力類型下的總體性能。你可使用它作性能的圖形分析或在大併發負載測試你的服務器/腳本/對象。web
我下載的版本是目前最新的4.0版本apache-jmeter-4.0.zip正則表達式
官網地址:shell
http://jmeter.apache.org/download_jmeter.cgi數據庫
jmeter不須要安裝,只須要配置好JDK環境,而後在在jmeter的bin目錄中雙擊運行jmeter.bat文件便可apache
4.0版本官方建議配置的JDK最好用1.8或者1.9版本(檢查java版本 java -version)windows
雙擊運行會彈出一個cmd命令窗口&jmeter圖形界面,cmd命令窗口內容以下(關閉cmd命令窗口,jmeter也會同時被關閉):服務器
Don't use GUI mode for load testing !, only for Test creation and Test debugging . For load testing, use NON GUI Mode: jmeter -n -t [jmx file] -l [results file] -e -o [Path to web report folder] & increase Java Heap to meet your test requirements: Modify current env variable HEAP="-Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m" in the jmeter batch file Check : https://jmeter.apache.org/usermanual/best-practices.html ================================================================================
翻譯下來的意思就是:網絡
不要使用GUI模式進行負載測試,只用於測試建立和調試!
對於負載測試使用no-GUI的方式進行運行:
jmeter -n -t [jmx file] -l [results file] -e -o [Path to output folder]
或者進行修改堆內存的大小:
Jmeter的默認堆爲256m,所以,若是使用Jmeter進行負載測試建議將堆內存進行修改到合適的大小;
修改方法:
在jmeter的bin目錄下,找到jmeter.bat文件打開,修改heap(4.0版本在144行)
官方默認爲咱們提供了簡體中文。經過 【Options】->【Choose Language】變動爲簡體中文
若是要直接在cmd命令行運行則須要配置jmeter的環境變量不然每次執行命令都要切換到bin目錄下:
右鍵計算機屬性---》高級系統設置---》環境變量---》
變量名: JMETER_HOME
變量值: D:\apache-jmeter-4.0
變量名: Path (在後面添加如下變量值)
變量值:;%JMETER_HOME%\bin;
對於負載測試,必須在此模式下運行JMeter(沒有GUI)以從中得到最佳結果。爲此,請使用如下命令選項:
-n 這指定JMeter將以非gui模式運行 -t [包含測試計劃的JMX文件的名稱]。 -l [將樣本結果記錄到的JTL文件的名稱]。 -j [JMeter運行日誌文件的名稱]。 -r 在JMeter屬性「 remote_hosts 」 指定的服務器中運行測試 -R [遠程服務器列表]在指定的遠程服務器中運行測試 -G [CSV文件的路徑]僅生成報告儀表板 -e 負載測試後生成報告儀表板 -o 輸出文件夾在加載測試後生成報告儀表板的位置。文件夾不得存在或爲空
該腳本還容許您指定可選的防火牆/代理服務器信息: -H [代理服務器主機名或IP地址] -P [代理服務器端口]
例子:
jmeter -n -t my_test.jmx -l log.jtl -H my.proxy.server -P 8000
ps:If the property jmeterengine.stopfail.system.exit is set to true (default is false),
then JMeter will invoke System.exit(1) if it cannot stop all threads. Normally this is not necessary.
若是屬性jmeterengine.stopfail.system.exit被設置爲true(默認爲false),若是沒法中止全部線程,jmeter將會引用System.exit(1)。一般這不是必需的。
JMETER_HOME/lib目錄用於存放實用程序和依賴的jar包
JMETER_HOME/lib/ext目錄用於JMeter組件和插件(若是本身開發了相關組件也能夠打成jar包放在這個目錄下,組件依賴的jar包放在/lib下)
*.cmd文件運行須要系統在win2000以上的版本
文件名 | 含義 |
---|---|
jmeter.bat | 運行Jmeter(這個默認是帶win shell控制檯的)(默認使用GUI模式) |
jmeterw.cmd | 運行Jmeter,可是不顯示win shell控制檯(能夠對比jmeter.bat啓動的jmeter)(默認使用GUI模式) |
jmeter-n.cmd | 將JMX文件拖拽到該命令文件上,將會以non-GUI模式運行該測試 |
jmeter-n-r.cmd | 將JMX文件拖拽到該命令上,將會在遠程測試機上以non-GUI模式運行該測試 |
jmeter-t.cmd | 將JMX文件拖拽到該命令上,使用GUI模式加載該JMX |
jmeter-server.bat | 使用服務模式啓動Jmeter(用於分佈式的服務端啓動) |
mirror-server.cmd | 使用non-GUI模式啓動Jmeter鏡像服務 |
shutdown.cmd | 運行Shutdown客戶端關閉一個non-GUI實例 |
stoptest.cmd | 運行Shutdown客戶端關閉一個non-GUI實例 |
GUI模式----推薦使用GUI模式進行建立腳本以及調試腳本,不推薦進行負載測試(所謂負載測試是屬於性能測試的一種類型,經過測試系統在資源超負荷狀況下的表現,以發現設計上的錯誤和驗證系統的負載能力,在這種測試中,將使測試對象承擔不一樣的工做量,以評測和評估測試對象在不一樣工做量條件下的性能行爲,以及持續正常運行的能力;負載測試的目的是肯定並確保系統在超出最大預期工做量的狀況下仍能正常運行,此外,負載測試還要評估性能特徵;例如:響應時間、事務處理速率和其餘與時間相關方面),所以能夠看出負載測試是比較浪費系統資源的,GUI界面自己便很浪費資源,所以若是出現大併發或者機器處於大負載的狀況下,非但不會獲得你想要的結果,機器是必然會出現卡死的狀況。 --------這部分理解轉自:https://www.cnblogs.com/richered/p/8324039.html
官方入門文檔(本文只是根據我的學習進度摘取了部分學習並記錄,不按期更新):
http://jmeter.apache.org/usermanual/get-started.html#running
其餘博客的全文翻譯(這個文章是2017年8月的可能和如今的官方文檔有出入,僅做參考):
https://blog.csdn.net/yue530tomtom/article/details/76529619