性能压测直播课作业-order service压测实战

一、题目要求

    1. 在自己的设备上启动order service 服务,创建http请求服务实施分组压测,并根据压测报告中的数据进行服务性能分析;
    2. 请使用CSV文件导入多用户token进行压测,csv文件位置: ijmeter project]/jmx/users.Csv
    3. 将Order Service服务作为事务进行压测
    4. 挑战题1:请尝试将压测自动化 → 自动分组并发
    5. 挑战题2:使用自动化压测脚本对order service服务进行分组压测,并分析服务性能

二、实操部分

1.在自己的设备上启动order service 服务,创建http请求服务实施分组压测,并根据压测报告中的数据进行服务性能分析;
2. 请使用CSV文件导入多用户token进行压测,csv文件位置: ijmeter project]/jmx/users.Csv

  1. 将Order Service服务作为事务进行压测
  • 在线程组下添加逻辑控制器-事务控制器,将采样器,监视器移至事务控制器下,再次进行压测
  • 第一组并发线程数100,启动时间7s, 持续一分钟
  • 第二组并发线程数125,启动时间7s, 持续一分钟
  • 第三组并发线程数130,启动时间5s, 持续一分钟
  • 第四组并发线程数135,启动时间5s, 持续一分钟
  • 第四组出现异常,可知事务最大并发数在130,事务吞吐量为48.8/sec。
  1. 挑战题1:请尝试将压测自动化 → 自动分组并发
  • 将脚本线程数、启动时间、并发数进行参数化

  • 编写batch处理文件进行no-GUI模式运行jmeter,设置好需要分组并发的并发量,启动时间,持续时间,bat文件放在jmeter bin目录下,运行bat文件就可以自动分组并发了

chcp 65001 > nul
rem 获取用户输入的值
@echo off
set durationTime=60
rem set /p durationTime=请输入持续时间:
set ramUp=5
rem set /p ramUp=请输入 ramUp 时间:
set threadslist=50 100 110 120 125 130 135 140
rem 获取当前时间的小时、分钟、秒,作为文件名的一部分
SET Time=%Date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%
rem 使用 for /L 命令进行循环,这里调整参数范围和步长
for %%T in (%threadslist%) do (
    rem 获取当前时间的小时、分钟、秒,作为文件名的一部分
	rem 输出循环次数和用户输入的值	
    @echo off
    echo 进入循环 %%T,%ramUp%,
    
    rem 调用 jmeter 命令进行测试,这里假设 jmeter 可执行文件在系统路径中
    call Jmeter -JthreadCount=%%T -JrampUp=%ramUp% -JdurationTime %durationTime% -n -t D:\99ck\demo.jmx -l D:\99ck\report\%%T_%Time%_demo.jtl -e -o D:\99ck\report\%%T_%Time%_report
    
    rem 等待一段时间,这里暂定为 5 秒
    timeout /t 30
)
  1. 挑战题2:使用自动化压测脚本对order service服务进行分组压测,并分析服务性能
    分别对并发数50,100,110,120,125,130,135,140进行压测,保持1分钟,每次压测结束停止30s,查看报告如下:
    100并发:

    110并发:

    120并发:

    125并发:

    130并发:

    在并发数为120时,无报错,在并发数为125时开始出现错误,事务吞吐量在45.82/s.