当前位置: 首页 > news >正文

使用Jmeter对AI模型服务进行压力测试

一、JMeter介绍

Apache JMeter 是一款开源的性能测试工具,主要用于评估Web应用程序的负载和性能。它支持多种类型的测试,包括但不限于:

  • 负载测试:模拟大量用户访问系统以检测其在高负载下的表现。
  • 性能测试:评估系统在不同条件下的响应速度和稳定性。
  • 稳定性测试:长时间运行测试以检查系统的稳定性和可靠性。
  • 并发测试:测试系统处理同时发生的多个请求的能力。
JMeter的主要优点包括:
  • 跨平台支持:可以在Windows、Linux、macOS等多种操作系统上运行,并支持多语言界面。
  • 丰富的测试类型:不仅限于Web应用,还可以用于数据库、FTP服务器等的性能测试。
  • 易于使用:拥有直观的图形用户界面(GUI),便于快速创建测试计划和执行测试。

二、安装JMeter

为了成功安装和运行JMeter,首先需要确保系统中已安装Java Development Kit (JDK)。

2.1 安装JDK
  1. 下载JDK:前往Oracle官网下载适合您操作系统的JDK版本。请注意选择与您的操作系统兼容的版本。

  2. 重要提示:自Java 11起,JDK不再默认生成jre目录。如果您需要jre目录,可以通过以下命令手动创建:

    • 打开命令提示符(Windows)或终端(Linux/macOS),并以管理员权限运行。
    • 切换到JDK安装目录下,例如:
      cd C:\Program Files\Java\jdk-<version>
    • 运行以下命令来生成jre目录:
      bin\jlink --module-path jmods --add-modules java.se --output jre
  3. 配置环境变量(如果未自动配置):

    • 在Windows上,添加JAVA_HOME环境变量指向JDK安装目录,并将%JAVA_HOME%\bin添加到PATH变量中。
    • 在Linux/macOS上,编辑~/.bashrc~/.zshrc文件,添加如下行:
      export JAVA_HOME=/path/to/your/jdk
      export PATH=$JAVA_HOME/bin:$PATH
    • 使用source ~/.bashrcsource ~/.zshrc使更改生效。

完成上述步骤后,您可以继续安装JMeter。请确保JDK已正确安装并通过运行java -version命令验证安装是否成功。

2.2 安装JMeter

从官网下载:http://jmeter.apache.org/download_jmeter.cgi

选择binaries文件下载,下载后解压即可。

选择zip文件下载后,解压压缩包即可。然后添加环境变量:

我的电脑----属性----高级----环境变量----在系统变量

(1)JMETER_HOME

D:\apache-jmeter-5.2.1\apache-jmeter-5.2.1

(2)CLASSPATH

%JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;%JMETER_HOME%\lib\jorphan.jar;%JMETER_HOME%\lib\logkit-2.0.jar;

2.3 启动Jmeter

在bin目录下找到jmeter.bat文件,双击运行就可以了,会打开以下两个界面,不要关闭命令行界面

三 使用Jmeter

安装并启动Jmeter后,我们就可以测试我们的模型服务了,根据之前文章的介绍,我们现在已经有一个ChatGLM3的模型服务。

下面我们对服务进行压测:

3.1 设置语言

3.2 增加线程组

右击测试计划--添加--线程--线程组

添加线程组后可以看到有三个属性:

线程数:就是启动的线程个数。

Ramp-Up时间(秒):所有线程在时间段内把请求发送完(循环次数是1),而且请求的时间间隔是固定的=Ramp-Up time/线程数。

比如1秒10个线程数就是在1秒内开启10个线程;

比如5秒10个线程数就是每秒开启2个线程;

循环次数:就是每秒的线程数循环启动多少次。

比如线程数(5),ramp-up time(1), 循环次(2),就是每秒10个线程,总共10个线程;

比如线程数(10),ramp-up time(2), 循环次(2),就是每秒10个线程,总共20个线程;

所以并发个数是由这三个属性值一起设定的。

对这三个参数的深入理解和使用可以参考文章。

3.3 添加HTTP请求

3.4 添加HTTP请求header

3.5 添加结果树

添加查看结果树可以看到请求的返回信息,比如点击运行(绿色小三角),就能看到返回

3.6 添加常量吞吐量定时器

常数吞吐量定时器可以让JMeter以指定数字的吞吐量(即指定TPS,只是这里要求指定每分钟的执行数,而不是每秒)执行。

只有此线程:控制每个线程的吞吐量,选择这种模式时,总的吞吐量为设置的目标吞吐量乘以该线程的数量

所有活动线程:设置的目标吞吐量将分配在每个活跃线程上,每个活跃线程在上一次运行结束后等待合理的时间后再次运行。活跃线程指同一时刻同时运行的线程。

当前线程组中的所有活动线程:与所有活动线程的选项基本相同。唯一区别是,每个活跃线程都会在所有活跃线程上一次运行结束后等待合理的时间后再次运行。

所有活动线程(共享):设置的目标吞吐量将分配在当前线程组的每一个活跃线程上,当测试计划中只有一个线程组时,该选项和所有活动线程选项的效果完全相同。

当前线程组中的所有活动线程(共享):与当前线程组中的所有活动线程基本相同,唯一的区别是,每个活跃线程都会在所有活跃线程的上一次运行结束后等待合理的时间后再次运行。

这里设置的是目标吞吐量,结合3.2中的参数,我们预设1秒钟10个线程,那1分钟就是600个,所以这里我的目标吞吐量设置为600.

3.7 添加汇总报告

3.8 生成html报告

生成jtl文件

 E:\program files\apache-jmeter-5.6.2\apache-jmeter-5.6.2\bin> .\jmeter -n -t HTTP请求.jmx  -l result.jtl

生成html

 E:\program files\apache-jmeter-5.6.2\apache-jmeter-5.6.2\bin> .\jmeter -g result.jtl -o .\result

可以看到我们通过以上步骤,得到了比较完整的测试报告~通过报告我们可以分析出服务的TPS,最大响应时间等信息,再结合你的GPU使用率,就可以得出基本的结论,下一步就是思考怎么提升服务性能增加qps了~

http://www.xdnf.cn/news/337717.html

相关文章:

  • CSS3 过渡与动画
  • 体绘制中的传输函数(transfer func)介绍
  • JDBC:java与数据库连接,Maven,MyBatis
  • 3D医学影像开发<五>:利用Hessian矩阵增强影像并设置固定阈值进行血管模型自动分割
  • 认识不同格式的点云数据 -PCD点云数据 文本点云数据
  • 【前端】webstorm运行程序浏览器报network error
  • PyTorch 版本、torchvision 版本和 Python 版本的对应关系
  • iptables 访问控制列表使用记录
  • 在UI原型设计中,低、高保真原型图有什么区别?
  • 用NVivo革新企业创新:洞悉市场情绪,引领金融未来
  • 使用thymeleaf模版导出swagger3的word格式接口文档
  • 【每天学习一点点】使用Python的pathlib模块分割文件路径
  • HBuilderX安卓真机运行安装失败解决汇总
  • Git实战经验分享:深入掌握git commit --amend的进阶技巧
  • zookeeper实现分布式获取全局唯一自增ID的案例。
  • 论文速读《DARE:基于扩散模型的自主机器人探索新范式》
  • 【Linux网络】网络命令
  • 基于LSTM与SHAP可解释性分析的神经网络回归预测模型【MATLAB】
  • 基于vueflow可拖拽元素的示例(基于官网示例的单文件示例)
  • 深入解析 C# 常用数据结构:特点、区别与优缺点分析
  • C/C++内存分布
  • JVM——Java虚拟机是怎么实现synchronized的?
  • 力扣刷题Day 43:矩阵置零(73)
  • 【随笔】Google学术:but your computer or network may be sending automated queries.
  • 红黑树的应用场景 —— 进程调度 CFS 与内存管理
  • 基于SpringBoot的校园周边美食探索及分享平台的设计与实现
  • Linux系统下使用Kafka和Zookeeper
  • C++ | 常用语法笔记
  • 宝塔面板部署 springboot + mysql 项目
  • CMake笔记(简易教程)