剛剛在打掃衛生的時候,就一直在思考近一年以來所學知識及體系。知識太過於碎片化,整理的東西全寫在筆記本上,日常工作不可能全部用到,所以復習很重要。因此開始准備將一些知識寫在隨筆里邊,用於知識體系的重建,知識的總結。
敲定了之后,便開始動手吧!
就從Jmeter開始吧!那么就先介紹一下今天的豬腳吧!
What can I do with it?
Apache JMeter may be used to test performance both on static and dynamic resources, Web dynamic applications.
It can be used to simulate a heavy load on a server, group of servers, network or object to test its strength or to analyze overall performance under different load types.
Apache JMeter features include:
- Ability to load and performance test many different applications/server/protocol types:
- Web - HTTP, HTTPS (Java, NodeJS, PHP, ASP.NET, …)
- SOAP / REST Webservices
- FTP
- Database via JDBC
- LDAP
- Message-oriented middleware (MOM) via JMS
- Mail - SMTP(S), POP3(S) and IMAP(S)
- Native commands or shell scripts
- TCP
- Java Objects
- Full featured Test IDE that allows fast Test Plan recording (from Browsers or native applications), building and debugging.
- Command-line mode (Non GUI / headless mode) to load test from any Java compatible OS (Linux, Windows, Mac OSX, …)
- A complete and ready to present dynamic HTML report
- Easy correlation through ability to extract data from most popular response formats, HTML, JSON , XML orany textual format
- Complete portability and 100% Java purity.
- Full multi-threading framework allows concurrent sampling by many threads and simultaneous sampling of different functions by separate thread groups.
- Caching and offline analysis/replaying of test results.
- Highly Extensible core:
- Pluggable Samplers allow unlimited testing capabilities.
- Scriptable Samplers (JSR223-compatible languages like Groovy and BeanShell)
- Several load statistics may be chosen with pluggable timers.
- Data analysis and visualization plugins allow great extensibility as well as personalization.
- Functions can be used to provide dynamic input to a test or provide data manipulation.
- Easy Continuous Integration through 3rd party Open Source libraries for Maven, Graddle and Jenkins ---------官方介紹(傳送門:http://jmeter.apache.org/)
個人見解:Jmeter是一款十分優秀的工具,不過筆者覺得它和平常的工具不一樣;首先Jmeter是跨系統的,在windows、Mac、Linux均可使用;一方面在於它支持豐富的協議(HTTP、FTP、JDBC、SOCKET。。。);功能方面也相對比較健全(各種各樣的邏輯處理,如條件判斷,循環,僅一次等等);各種檢查點,對文本、Java對象均可進行處理;豐富的圖表展示;此外還有許多第三方插件支持以及第三方集成;且最重要的是開源的。。。
Jmeter安裝:
Jmeter是在JVM上運行的,因此必須先要安裝JDK,不過切記一點,截至今天,Jmeter已經更新到3.3版本,它是不支持JDK1.9的,切記!
傳送門(http://jmeter.apache.org/download_jmeter.cgi)
至於JDK安裝以及環境變量配置,此處便不再列舉;
Jmeter環境變量配置:
1,變量名:JMETER_HOME
變量值:E:\apache-jmeter-3.2(根據自己的解壓目錄而定,筆者使用的是Jmeter3.2的版本)
2,變量名:CLASSPATH
變量值:%JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;%JMETER_HOME%\lib\jorphan.jar;%JMETER_HOME%\lib/logkit-2.0.jar;
OK,環境變量配置結束,可以至E:\apache-jmeter-3.2\bin(安裝目錄下bin目錄)下尋找jmeter.bat文件,雙擊打開。(可能安裝會遇到各種各樣的問題,筆者曾經在某些技術群中發現有不用配置環境變量便可以使用(至於到底什么情況,不是當事者也不清楚);還有找不到bat文件(系統默認將后綴名進行隱藏掉了嘛))
看到上方小黑窗,隨后下方Jmeter的彈窗跳出來。那么恭喜你,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 output folder]
& adapt Java Heap to your test requirements:
Modify HEAP="-Xms512m -Xmx512m" in the JMeter batch file
不要使用GUI模式進行負載測試,只用於測試創建和調試!---------------------what mean?
GUI模式----便是下方的彈窗,此處的意思便是推薦使用GUI模式進行創建腳本以及調試腳本,不推薦進行負載測試(所謂負載測試是屬於性能測試的一種類型,通過測試系統在資源超負荷情況下的表現,以發現設計上的錯誤和驗證系統的負載能力,在這種測試中,將使測試對象承擔不同的工作量,以評測和評估測試對象在不同工作量條件下的性能行為,以及持續正常運行的能力;負載測試的目的是確定並確保系統在超出最大預期工作量的情況下仍能正常運行,此外,負載測試還要評估性能特征;例如:響應時間、事務處理速率和其他與時間相關方面),因此可以看出負載測試是比較浪費系統資源的,GUI界面本身便很浪費資源,因此如果出現大並發或者機器處於大負載的情況下,非但不會得到你想要的結果,機器是必然會出現卡死的情況。
不過,小黑窗的下方一段話也給出了解決方案:
For load testing, use NON GUI Mode:
jmeter -n -t [jmx file] -l [results file] -e -o [Path to output folder]
& adapt Java Heap to your test requirements:
Modify HEAP="-Xms512m -Xmx512m" in the JMeter batch file
對於負載測試使用no-GUI的方式進行運行:
jmeter -n -t [jmx file] -l [results file] -e -o [Path to output folder]
這段命令便是NO-GUI的方式運行。
或者進行修改堆內存的大小:
Jmeter的默認堆為512m,因此,如果使用Jmeter進行負載測試建議將堆內存進行修改到合適的大小;
修改方法:
至E:\apache-jmeter-3.2\bin,使用文本編輯器模式將jmeter.bat文件打開,進行修改heap:
修改此處的堆內存大小只是一種手段,但並不是萬能的。因此,做負載測試還是需要進行謹慎分析,再下結論。
OK,本篇先記錄到這。。