在做性能測試時,單純的只看響應時間、錯誤率、中間值遠遠不夠的,有時需要監控服務cpu、內存等指標來判斷影響性能的瓶頸在哪。
操作步驟:
一、Linux下配置jmeter環境
1、在linux環境下安裝jdk。
# rpm -ivh jdk-8u121-linux-x64.rpm
2、檢查java是否安裝成功。
# java -version
3、將apache-jmeter-5.1.zip傳到服務器上。
# unzip apache-jmeter-5.1.zip
4、進入jmeter.bat文件所在路徑:
# cd apache-jmeter-5.1/bin進入目錄。
二、插件下載
在官網下載的Jmeter是沒有監控資源服務的功能的,只能借助插件實現。
1、需要下載的第三方插件有:JMeterPlugins-Standard , JMeterPlugins-Extras,版本需要與Jmeter版本兼容,下載下來解壓得到jar包后,放到jmeter安裝路徑下的apache-jmeter-5.1/lib/ext文件夾里,重啟jmeter
下載路徑:https://jmeter-plugins.org/downloads/old/
2、下載 ServerAgent-2.2.1.zip,下載后上傳到被測服務器上,並使用命令解壓unzip ServerAgent-2.2.1.zip
3、進入到解壓后的ServerAgent文件中,使用命令啟動監控服務 bash startAgent.sh
三、腳本編寫
1、根據具體的業務編寫測試腳本,設置線程數、腳本持續時間等參數
2、添加 jp@gc - PerfMon Metrics Collector監聽 CPU 、內存、網絡、I/O等資源,路徑為右擊線程組->添加->監聽器->jp@gc - PerfMon Metrics Collector
3、配置jp@gc - PerfMon Metrics Collector
注意:文件名一定要單獨寫個文件來保存監控的數據,否則在圖表中無數據展示
4、添加 jp@gc - Response Times Over Time監控響應時間走勢、添加 jp@gc - Transactions per Second監控qpt走勢,路徑同上
5、在linux下執行編寫好的腳本,執行命令 ./jmeter.sh -n -t file -l logfile,如下:
./jmeter.sh -n -t /home/app_comm/nucdata/nuc環境壓測_50_n.jmx -l /home/app_comm/nucdata/9_27_50_n_result.jtl
6、執行完后在jp@gc - PerfMon Metrics Collector上查看監控的資源圖形結果
7、在聚合報告中查看整體情況
8、在 jp@gc - Response Times Over Time中查看時間響應走勢
9、在 jp@gc - Transactions per Second中查看qpt走勢
警告:
若出現以下錯誤,請查看版本是否兼容
2020-09-21 17:46:59,698 INFO o.a.j.e.StandardJMeterEngine: Running the test!
2020-09-21 17:46:59,698 INFO o.a.j.s.SampleEvent: List of sample_variables: []
2020-09-21 17:46:59,698 ERROR o.a.j.JMeter: Uncaught exception in thread Thread[StandardJMeterEngine,6,main]
java.lang.NoSuchMethodError: org.apache.jmeter.samplers.SampleSaveConfiguration.setFormatter(Ljava/text/DateFormat;)V
at kg.apc.jmeter.JMeterPluginsUtils.doBestCSVSetup(JMeterPluginsUtils.java:256) ~[jmeter-plugins-cmn-jmeter-0.3.jar:?]
at kg.apc.jmeter.perfmon.PerfMonCollector.setupSaving(PerfMonCollector.java:136) ~[jmeter-plugins-perfmon-2.1.jar:?]
at kg.apc.jmeter.perfmon.PerfMonCollector.testStarted(PerfMonCollector.java:113) ~[jmeter-plugins-perfmon-2.1.jar:?]
at org.apache.jmeter.reporters.ResultCollector.testStarted(ResultCollector.java:351) ~[ApacheJMeter_core.jar:5.2]
at kg.apc.jmeter.vizualizers.CorrectedResultCollector.testStarted(CorrectedResultCollector.java:28) ~[jmeter-plugins-cmn-jmeter-0.3.jar:?]
at org.apache.jmeter.engine.StandardJMeterEngine.notifyTestListenersOfStart(StandardJMeterEngine.java:206) ~[ApacheJMeter_core.jar:5.2]
at org.apache.jmeter.engine.StandardJMeterEngine.run(StandardJMeterEngine.java:381) ~[ApacheJMeter_core.jar:5.2]
at java.lang.Thread.run(Unknown Source) [?:1.8.0_221]
可參考 https://www.cnblogs.com/SunshineKimi/p/11361216.html