目录
如何理解负载测试
如何实现负载测试
jpgc - Standard Set插件安装
jpgc - Standard Set使用方法
负载测试分析指标-获得最大可接受用户并发数(区间值)
负载测试分析指标-获得最大可接受用户并发数(真实值)
负载测试分析指标-硬件资源监控策略ServerAgent
发现性能问题,通过获取测试指标数据,定位、分析问题根源,解决性能问题。
先做负载测试,获得最大可接受用户并发数,得到性能指标、发现问题!
如何理解负载测试
关键词:逐步增加并发用户数
目的:获得最大可接受用户并发数
如何实现负载测试
jpgc - Standard Set插件安装
使用jmeter插件jpgc,stepping thread group 阶梯线程组,属于固定步长的负载场景
先安装jmeter插件管理器(jmeter-plugins-manager-1.6.jar)的jar包,放到jmeter\lib\ext文件下,并重启jmeter
jmeter-options-plugins-manager(hsa upgrades),因为安装时1.6版本的jar,或者有其他插件包提示可以更新
打开插件管理搜索“jpgc ”,勾选插件,应用并重启jmeter(apply changes and restart jmeter)
deng待安装jpgc并重启jmeter
jmeter中的plugins-manager,更新(Upgrades),会将插件下载到最新版,但不会替换就版插件,需要手动删除一下就插件
安装完jpgc,大致有一下的变化,比如Thread,Listener都多了几个jp@gc开头的元件
jpgc - Standard Set使用方法
阶梯图标,如何分析TPS,需要根据【并发用户数】和【对应的时间】,来对数据分析
This group will start 100 threads:这个线程组将启动100个用户
First,wait for 0 seconds;首先等待0秒
Then start 0 threads;其次从0个用户开始
Next add 10 threads every 30 seconds,using ramp-up 5 seconds.再次,每5秒,累加10个用户,持续30秒
Then hold load for 60 seconds.到达最大用户数时持续运行60秒
Finaly,stop 5 threads every 1 seconds最后,每1秒,停止5个用户
场景:缓起步,快结束
负载测试分析指标-获得最大可接受用户并发数(区间值)
首先对我们的目标进行分析:获得最大可接受用户并发数,进行分析;
其次要明确测试指标是什么?假设按照以下标准:
1.失败率:低于1%,是否有连续报错
2.平均响应时间,低于1.5ms
3.服务资源资源利用率(CPU、内存),低于80%
最后根据监听器的数据进行分析:
平均响应时间:
按阶梯平均,因为用户并发的时候是递增上去的,要看某一段,递增多少个用户时的平均响应时间
观察这个2个图表
jp@gc - Active Threads Over Time 活跃线程数;
jp@gc - Response Times Over Time 平均响应时间;
1.从活跃线程数来看,每增加x个用户的梯度与平均响应时间做对比,
说明:每增加X个的用户的时候,每增加x个用户的平均响应时间也是不同的。
2.通过上面的图表,发现在3阶梯开始~4或以上阶梯的时候,平均响应时间开始超1.5ms,从第3梯度开始大概估计[35,45]之间的用户数,平均响应时间有可能就会出现超1.5ms,所以最大可接受并发用户数区间为[35,45]之间
3.获取区间值的时候,多次调试脚本,多次测试,提高区间值的范围准确性,真实性
负载测试分析指标-获得最大可接受用户并发数(真实值)
1.具体上述,得出的结论:最大可接受并发用户数区间为[35,45]之间
2.需要对区间值,进行精确定位,找到真实的最大可接受用户并发数,调整配置
3.对jp@gc - Stepping Thread Group,调整总并发用户数,步长起始值
4.对最大可接受用户并发数区间值35,45],进行分析
观察这个2个图表
jp@gc - Active Threads Over Time 活跃线程数;
jp@gc - Response Times Over Time 平均响应时间;
第9~10阶梯,发现并发用户数在44个,平均响应时间接近1.49ms,所大致结果:最大可接受并发用户数区间为44个并发用户
5.从jmeter GUI切换到CLI模式,禁用所有监听器,再次测试获取精确的,最大可接受用户并发数
summary + 859 in 00:00:30 = 28.5/s Avg: 1497 Min: 680 Max: 2456 Err: 0 (0.00%) Active: 43 Started: 43 Finished: 0
summary + 860 in 00:00:30 = 28.8/s Avg: 1536 Min: 900 Max: 2469 Err: 0 (0.00%) Active: 44 Started: 44 Finished: 0
结论:
1.在43个并发用户时,平均响应时间小于1.5ms;
2.在44个并发用户时,平均响应时间大于1.5ms;
所有当前最大可接受用户并发数:43个
这里先忽略cpu、内存等配置、服务架构、数据库量级
C:\apache-jmeter-5.3\bin>jmeter.bat -n -t testcase\k-steping.jmx -l testcase\jtl\runtest-001.jtl
Creating summariser <summary>
Created the tree successfully using testcase\k-steping.jmx
Starting standalone test @ Thu Sep 15 03:58:53 CST 2022 (1663185533223)
Waiting for possible Shutdown/StopTestNow/HeapDump/ThreadDump message on port 4445
summary + 167 in 00:00:07 = 25.3/s Avg: 1141 Min: 336 Max: 1662 Err: 0 (0.00%) Active: 35 Started: 35 Finished: 0
summary + 866 in 00:00:30 = 28.8/s Avg: 1222 Min: 536 Max: 2000 Err: 0 (0.00%) Active: 36 Started: 36 Finished: 0
summary = 1033 in 00:00:37 = 28.2/s Avg: 1209 Min: 336 Max: 2000 Err: 0 (0.00%)
summary + 854 in 00:00:30 = 28.5/s Avg: 1263 Min: 552 Max: 1913 Err: 0 (0.00%) Active: 37 Started: 37 Finished: 0
summary = 1887 in 00:01:07 = 28.3/s Avg: 1233 Min: 336 Max: 2000 Err: 0 (0.00%)
summary + 859 in 00:00:30 = 28.7/s Avg: 1294 Min: 690 Max: 1934 Err: 0 (0.00%) Active: 38 Started: 38 Finished: 0
summary = 2746 in 00:01:37 = 28.4/s Avg: 1252 Min: 336 Max: 2000 Err: 0 (0.00%)
summary + 856 in 00:00:30 = 28.5/s Avg: 1327 Min: 567 Max: 2251 Err: 0 (0.00%) Active: 39 Started: 39 Finished: 0
summary = 3602 in 00:02:07 = 28.5/s Avg: 1270 Min: 336 Max: 2251 Err: 0 (0.00%)
summary + 866 in 00:00:30 = 28.9/s Avg: 1359 Min: 551 Max: 2077 Err: 0 (0.00%) Active: 40 Started: 40 Finished: 0
summary = 4468 in 00:02:37 = 28.5/s Avg: 1287 Min: 336 Max: 2251 Err: 0 (0.00%)
summary + 852 in 00:00:30 = 28.4/s Avg: 1406 Min: 660 Max: 2108 Err: 0 (0.00%) Active: 41 Started: 41 Finished: 0
summary = 5320 in 00:03:07 = 28.5/s Avg: 1306 Min: 336 Max: 2251 Err: 0 (0.00%)
summary + 856 in 00:00:30 = 28.5/s Avg: 1433 Min: 893 Max: 2020 Err: 0 (0.00%) Active: 41 Started: 41 Finished: 0
summary = 6176 in 00:03:37 = 28.5/s Avg: 1324 Min: 336 Max: 2251 Err: 0 (0.00%)
summary + 857 in 00:00:30 = 28.6/s Avg: 1469 Min: 561 Max: 2281 Err: 0 (0.00%) Active: 42 Started: 42 Finished: 0
summary = 7033 in 00:04:07 = 28.5/s Avg: 1341 Min: 336 Max: 2281 Err: 0 (0.00%)
summary + 859 in 00:00:30 = 28.5/s Avg: 1497 Min: 680 Max: 2456 Err: 0 (0.00%) Active: 43 Started: 43 Finished: 0
summary = 7892 in 00:04:37 = 28.5/s Avg: 1358 Min: 336 Max: 2456 Err: 0 (0.00%)
summary + 860 in 00:00:30 = 28.8/s Avg: 1536 Min: 900 Max: 2469 Err: 0 (0.00%) Active: 44 Started: 44 Finished: 0
summary = 8752 in 00:05:07 = 28.5/s Avg: 1376 Min: 336 Max: 2469 Err: 0 (0.00%)
summary + 858 in 00:00:30 = 28.6/s Avg: 1561 Min: 320 Max: 2670 Err: 0 (0.00%) Active: 45 Started: 45 Finished: 0
summary = 9610 in 00:05:37 = 28.6/s Avg: 1392 Min: 320 Max: 2670 Err: 0 (0.00%)
summary + 856 in 00:00:30 = 28.5/s Avg: 1575 Min: 291 Max: 2578 Err: 0 (0.00%) Active: 45 Started: 45 Finished: 0
summary = 10466 in 00:06:07 = 28.5/s Avg: 1407 Min: 291 Max: 2670 Err: 0 (0.00%)
summary + 381 in 00:00:12 = 30.5/s Avg: 1144 Min: 74 Max: 2220 Err: 0 (0.00%) Active: 0 Started: 45 Finished: 45
summary = 10847 in 00:06:19 = 28.6/s Avg: 1398 Min: 74 Max: 2670 Err: 0 (0.00%)
Tidying up ... @ Thu Sep 15 04:05:12 CST 2022 (1663185912515)
... end of run
C:\apache-jmeter-5.3\bin>
负载测试分析指标-硬件资源监控策略ServerAgent
ServerAgent:只能监控硬件相关,不能监控软件服务类型,支持windows、linux,JMeterGUI
1.被监控的机器安装好serveragent,查看使用方法: ./startAgent.sh --help
2.被监控的机器启动服务: ./startAgent.sh
3.关于serveragent服务启动配置,./startAgent.sh --tcp prot 4567 --udp prot 0
- tcp 端口自定义
- udp 端口关闭
- 默认端口:4444
[root@vircent7 ServerAgent-2.2.3]# ./startAgent.sh --help
JMeter Plugins at Google Code Command-Line Tools
For help and support please visit http://code.google.com/p/jmeter-plugins/wiki/JMeterPluginsCMD
Usage:
JMeterPluginsCMD --tool < Reporter | PerfMonAgent > [--help]
Tool class Reporter not found
Options for tool 'PerfMon': [ --tcp-port <port no> --udp-port <port no> --interval <seconds> --loglevel <debug|info|warn|error>--sysinfo --auto-shutdown]
[root@vircent7 ServerAgent-2.2.3]# ^C
[root@vircent7 ServerAgent-2.2.3]#
[root@vircent7 ServerAgent-2.2.3]# ./startAgent.sh
INFO 2022-09-15 04:35:58.762 [kg.apc.p] (): Binding UDP to 4444
INFO 2022-09-15 04:35:59.787 [kg.apc.p] (): Binding TCP to 4444
INFO 2022-09-15 04:35:59.789 [kg.apc.p] (): JP@GC Agent v2.2.3 started
3.jmeter gui模式下配置jmeter-stepping thread group添加监听器jp@gc - PerfMon Metrics Collector,对cup,内存监控
填写好被监控的机器IP地址和端口号,并选择监控类型,运行调试即可
4.查看被监控的机器资源利用率情况:
5.集合jmeter,jp@gc - PerfMon Metrics Collector图表情况,CUP,90%以上,内存接近80%;
结论:
1.并发用户在43个时候,满足第二点指标;
2.并发用户在43个时候,不满足第三点指标,CUP,90%以上,内存接近80%;
以上是本次简单的,负载测试的小小过程,仅供参考,感恩!