Jmeter 之在linux中监控Memory、CPU、I/O资源等操作方法
在做性能测试时,单纯的只看响应时间、错误率、中间值远远不够的,有时需要监控服务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