• 性能测试_Day_10(负载测试-获得最大可接受用户并发数)


    目录

    如何理解负载测试

    如何实现负载测试

    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模式,禁用所有监听器,再次测试获取精确的,最大可接受用户并发数

    1. 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
    2. 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、内存等配置、服务架构、数据库量级

    1. C:\apache-jmeter-5.3\bin>jmeter.bat -n -t testcase\k-steping.jmx -l testcase\jtl\runtest-001.jtl
    2. Creating summariser <summary>
    3. Created the tree successfully using testcase\k-steping.jmx
    4. Starting standalone test @ Thu Sep 15 03:58:53 CST 2022 (1663185533223)
    5. Waiting for possible Shutdown/StopTestNow/HeapDump/ThreadDump message on port 4445
    6. 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
    7. 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
    8. summary = 1033 in 00:00:37 = 28.2/s Avg: 1209 Min: 336 Max: 2000 Err: 0 (0.00%)
    9. 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
    10. summary = 1887 in 00:01:07 = 28.3/s Avg: 1233 Min: 336 Max: 2000 Err: 0 (0.00%)
    11. 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
    12. summary = 2746 in 00:01:37 = 28.4/s Avg: 1252 Min: 336 Max: 2000 Err: 0 (0.00%)
    13. 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
    14. summary = 3602 in 00:02:07 = 28.5/s Avg: 1270 Min: 336 Max: 2251 Err: 0 (0.00%)
    15. 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
    16. summary = 4468 in 00:02:37 = 28.5/s Avg: 1287 Min: 336 Max: 2251 Err: 0 (0.00%)
    17. 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
    18. summary = 5320 in 00:03:07 = 28.5/s Avg: 1306 Min: 336 Max: 2251 Err: 0 (0.00%)
    19. 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
    20. summary = 6176 in 00:03:37 = 28.5/s Avg: 1324 Min: 336 Max: 2251 Err: 0 (0.00%)
    21. 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
    22. summary = 7033 in 00:04:07 = 28.5/s Avg: 1341 Min: 336 Max: 2281 Err: 0 (0.00%)
    23. 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
    24. summary = 7892 in 00:04:37 = 28.5/s Avg: 1358 Min: 336 Max: 2456 Err: 0 (0.00%)
    25. 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
    26. summary = 8752 in 00:05:07 = 28.5/s Avg: 1376 Min: 336 Max: 2469 Err: 0 (0.00%)
    27. 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
    28. summary = 9610 in 00:05:37 = 28.6/s Avg: 1392 Min: 320 Max: 2670 Err: 0 (0.00%)
    29. 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
    30. summary = 10466 in 00:06:07 = 28.5/s Avg: 1407 Min: 291 Max: 2670 Err: 0 (0.00%)
    31. 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
    32. summary = 10847 in 00:06:19 = 28.6/s Avg: 1398 Min: 74 Max: 2670 Err: 0 (0.00%)
    33. Tidying up ... @ Thu Sep 15 04:05:12 CST 2022 (1663185912515)
    34. ... end of run
    35. 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
    1. [root@vircent7 ServerAgent-2.2.3]# ./startAgent.sh --help
    2. JMeter Plugins at Google Code Command-Line Tools
    3. For help and support please visit http://code.google.com/p/jmeter-plugins/wiki/JMeterPluginsCMD
    4. Usage:
    5. JMeterPluginsCMD --tool < Reporter | PerfMonAgent > [--help]
    6. Tool class Reporter not found
    7. Options for tool 'PerfMon': [ --tcp-port --udp-port --interval --loglevel --sysinfo --auto-shutdown]
    8. [root@vircent7 ServerAgent-2.2.3]# ^C
    9. [root@vircent7 ServerAgent-2.2.3]#
    10. [root@vircent7 ServerAgent-2.2.3]# ./startAgent.sh
    11. INFO 2022-09-15 04:35:58.762 [kg.apc.p] (): Binding UDP to 4444
    12. INFO 2022-09-15 04:35:59.787 [kg.apc.p] (): Binding TCP to 4444
    13. 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%;

    以上是本次简单的,负载测试的小小过程,仅供参考,感恩!

  • 相关阅读:
    [MapStruct]基础映射篇
    navicate的安装使用
    DDD实战心得
    C 程序结构
    艾美捷细胞计数试剂盒-8(CCK-8),一步到位
    疑似openAI的BUG
    第二篇 DS5 Armv8 样例工程报错之GCC编译
    golang中的正则表达式使用注意事项与技巧
    四级词汇词根 联想记忆法乱序版
    C控制语句:循环(1)
  • 原文地址:https://blog.csdn.net/qq_30864373/article/details/126882843