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

Jmeter接口并发测试

Apache JMeter 是一款开源的性能测试工具,广泛用于接口并发测试、负载测试和压力测试。以下是使用 JMeter 进行接口并发测试的详细步骤:

一、准备工作

  1. 安装 JMeter

    • 下载地址:Apache JMeter 官网

    • 确保已安装 Java 环境(JMeter 依赖 Java 运行)。

  2. 准备测试接口

    • 获取待测试的接口地址(URL)、请求方法(GET/POST 等)及参数。

    • 如果需要认证(如 Token),准备好认证信息。


二、创建测试计划

  1. 启动 JMeter

    • 解压下载的 JMeter 文件,运行 bin/jmeter.bat(Windows)或 bin/jmeter.sh(Linux/Mac)。

  2. 添加线程组

    • 右键点击“测试计划” -> 添加 -> 线程(用户) -> 线程组。

    • 配置线程组参数:

      • 线程数(用户数):并发用户数量(如 100)。

      • Ramp-Up 时间(秒):用户启动时间(如 10 秒,表示 10 秒内启动 100 个用户)。

      • 循环次数:每个用户的请求次数(如 1 次或无限循环)。

  3. 添加 HTTP 请求

    • 右键点击“线程组” -> 添加 -> 取样器 -> HTTP 请求。

    • 配置 HTTP 请求参数:

      • 协议:HTTP 或 HTTPS。

      • 服务器名称或 IP:接口的域名或 IP 地址。

      • 端口号:接口的端口号(默认 HTTP 为 80,HTTPS 为 443)。

      • 路径:接口的路径(如 /api/v1/user)。

      • 请求方法:GET、POST、PUT 等。

      • 参数:如果需要传递参数,在“参数”选项卡中添加键值对。

  4. 添加监听器

    • 右键点击“线程组” -> 添加 -> 监听器 -> 查看结果树、聚合报告、图形结果等。

    • 查看结果树:查看每个请求的详细响应数据。

    • 聚合报告:查看测试结果的统计信息(如平均响应时间、吞吐量等)。

    • 图形结果:以图表形式展示测试结果。


三、配置并发测试

  1. 设置并发用户数

    • 在“线程组”中调整“线程数”为并发用户数(如 100)。

  2. 设置定时器(可选)

    • 如果需要控制请求的发送频率,可以添加定时器:

      • 右键点击“线程组” -> 添加 -> 定时器 -> 固定定时器。

      • 设置“延迟时间”(如 1000 毫秒,表示每秒发送一次请求)。

  3. 设置断言(可选)

    • 如果需要验证接口返回结果,可以添加断言:

      • 右键点击“HTTP 请求” -> 添加 -> 断言 -> 响应断言。

      • 设置断言规则(如检查响应代码是否为 200)。

  4. 设置 CSV 数据文件(可选)

    • 如果需要使用不同的参数进行并发测试,可以配置 CSV 数据文件:

      • 右键点击“线程组” -> 添加 -> 配置元件 -> CSV 数据文件设置。

      • 指定 CSV 文件路径,并在 HTTP 请求中使用变量(如 ${username})。


四、运行测试

  1. 保存测试计划

    • 点击菜单栏的“文件” -> 保存,将测试计划保存为 .jmx 文件。

  2. 启动测试

    • 点击工具栏的“启动”按钮(绿色三角形)开始测试。

  3. 查看结果

    • 在“监听器”中查看实时测试结果。

    • 重点关注以下指标:

      • 响应时间:接口的平均响应时间。

      • 吞吐量:单位时间内处理的请求数。

      • 错误率:请求失败的比例。


五、优化与分析

  1. 调整并发用户数

    • 逐步增加并发用户数,观察系统的性能变化。

  2. 监控服务器资源

    • 使用工具(如 JConsole、Grafana)监控服务器的 CPU、内存、网络等资源使用情况。

  3. 分析瓶颈

    • 如果响应时间过长或错误率升高,可能是服务器性能不足或代码存在瓶颈。

  4. 生成报告

    • 使用 JMeter 的“生成报告”功能,导出 HTML 格式的测试报告。


六、常见问题

  1. JMeter 运行卡顿

    • 减少监听器的数量(如只保留“聚合报告”)。

    • 增加 JMeter 的 JVM 内存(修改 jmeter.bat 或 jmeter.sh 中的 HEAP 参数)。

  2. 接口返回错误

    • 检查接口地址、参数、认证信息是否正确。

    • 使用“查看结果树”查看详细的请求和响应数据。

  3. 如何模拟高并发

    • 使用分布式测试:在多台机器上运行 JMeter,通过主节点控制。

    • 调整线程组的 Ramp-Up 时间,模拟用户逐步增加。


通过以上步骤,您可以使用 JMeter 完成接口并发测试,并根据测试结果优化系统性能。如果需要更高级的功能(如分布式测试、动态参数化),可以参考 JMeter 官方文档或社区资源。

一些示例截图:

相关文章:

Jmeter接口并发测试

Apache JMeter 是一款开源的性能测试工具,广泛用于接口并发测试、负载测试和压力测试。以下是使用 JMeter 进行接口并发测试的详细步骤: 一、准备工作 安装 JMeter 下载地址:Apache JMeter 官网 确保已安装 Java 环境(JMeter 依…...

MySQL-增删改查

一、Create(创建) 📖 语法: INSERT INTO table_name(value_list); 当我们使用表的时候,就可以使用这个语法来向表中插入元素~ 我们这边创建一个用于示范的表(Student)~ create table student( id int, name varchar(20), chinese int, math…...

开源堡垒机 JumpServer 社区版实战教程:发布机的配置与Website资产配置使用

文章目录 开源堡垒机 JumpServer 社区版实战教程:发布机的配置与Website资产配置使用一、功能简述二、应用发布机2.1 版本要求2.2 创建应用发布机2.2.1 通过WinRM的协议进行应用发布机的创建2.2.2 通过OpenSSH的协议进行应用发布机的创建2.2.2.1 下载OpenSSH2.2.2.2…...

【STM32】使用电打火器测试火焰传感器,去掉传感器LED依然亮

项目需求:火焰传感器识别到火焰后,LED灯闪烁,然后熄灭。 现象描述:不需要火焰传感器,当使用电打火器时电路板LED灯也会闪烁。(详情看底部视频) fire.h #ifndef __FIRE_H #define __FIRE_H …...

代码随想录算法训练day64---图论系列8《拓扑排序dijkstra(朴素版)》

代码随想录算法训练 —day64 文章目录 代码随想录算法训练前言一、53. 117. 软件构建—拓扑排序二、47. 参加科学大会---dijkstra(朴素版)总结 前言 今天是算法营的第64天,希望自己能够坚持下来! 今天继续图论part!今…...

机器学习数学基础:32.斯皮尔曼等级相关

斯皮尔曼等级相关教程 一、定义与原理 斯皮尔曼等级相关系数(Spearman’s rank - correlation coefficient),常用 ρ \rho ρ表示,是一种非参数统计量,用于衡量两个变量的等级之间的关联程度。它基于变量的秩次&…...

《论区块链技术及应用》审题技巧 - 系统架构设计师

区块链技术及应用论题写作框架 一、考点概述 本论题“区块链技术及应用”主要考察软件测试工程师对区块链技术的理解及其在软件项目中的实际应用能力。论题涵盖了多个关键方面,首先要求考生对区块链技术有全面的认识,包括但不限于其作为分布式记账技术…...

2024-2025 学年广东省职业院校技能大赛 “信息安全管理与评估”赛项 技能测试试卷(四)

2024-2025 学年广东省职业院校技能大赛 “信息安全管理与评估”赛项 技能测试试卷(四) 第一部分:网络平台搭建与设备安全防护任务书第二部分:网络安全事件响应、数字取证调查、应用程序安全任务书任务 1:应急响应&…...

单片机的串口(USART)

Tx - 数据的发送引脚,Rx - 数据的接受引脚。 串口的数据帧格式 空闲状态高电平,起始位低电平,数据位有8位校验位,9位校验位,停止位是高电平保持一位或者半位,又或者两位的状态。 8位无校验位传输一个字节…...

Modelfile配置说明

参数说明翻译 参数描述值类型示例用法mirostat启用Mirostat采样以控制困惑度。(默认:0,0禁用,1Mirostat,2Mirostat 2.0)intmirostat 0mirostat_eta影响算法对生成文本反馈的响应速度。较低的学习率将导致调…...

pnpm的基本用法

以下是 pnpm 的核心命令和使用指南&#xff0c;涵盖从安装依赖到项目管理的常见操作&#xff1a; 1. 基础命令 (1) 安装依赖 pnpm install # 安装 package.json 中的所有依赖 pnpm install <包名> # 安装指定包&#xff08;自动添加到 dependencies&#xf…...

动态规划(背包问题)--是否逆序使用的问题--二进制拆分的问题

动态规划&#xff08;背包问题&#xff09; 题目链接01背包代码 完全背包问题代码 多重背包问题 I代码 什么时候适用逆序多重背包问题 II&#xff08;超百万级的复杂度&#xff09;代码 关于二进制拆分 题目链接 01背包 代码 #include <iostream> #include <vector&…...

Vue 中动态实现进度条

在 Vue 中动态实现进度条&#xff0c;基本上有两种常见的方法&#xff1a;直接通过 Vue 数据绑定控制样式&#xff0c;或者利用外部库来实现更复杂的功能。我们会深入探讨这两种方式&#xff0c;并且详细说明每种方法的实现步骤、优缺点以及使用场景。 1. 使用 Vue 数据绑定来…...

如何基于PyTorch做二次开发

基于PyTorch进行二次开发以实现可视化工程&#xff0c;可以从以下几个方面入手&#xff1a;模型结构可视化、训练过程监控、特征可视化等。以下是一些推荐的GitHub项目&#xff0c;这些项目可以帮助你快速搭建一个可视化的工程环境&#xff1a; ### 1. **PyTorch CNN Visualiz…...

Mac 版 本地部署deepseek ➕ RAGflow 知识库搭建流程分享(附问题解决方法)

安装&#xff1a; 1、首先按照此视频的流程一步一步进行安装&#xff1a;(macos版&#xff09;ragflowdeepseek 私域知识库搭建流程分享_哔哩哔哩_bilibili 2、RAGflow 官网文档指南&#xff1a;https://ragflow.io 3、RAGflow 下载地址&#xff1a;https://github.com/infi…...

算法——后缀平衡树

先回想一下之前讨论的内容。之前我们详细讨论了后缀树&#xff0c;包括它的构建、应用以及相关算法。用户可能是在了解后缀树之后&#xff0c;想要进一步探索相关的数据结构&#xff0c;或者是想比较后缀树和后缀平衡树的异同。 后缀平衡树并不是一个常见的数据结构名称&#…...

姿态矩阵/旋转矩阵/反对称阵

物理意义&#xff0c;端点矢量角速率叉乘本身向量&#xff1b; 负号是动系b看固定系i是相反的&#xff1b; 一个固定 在惯性导航解算中&#xff0c;旋转矢量的叉乘用于描述姿态矩阵的微分方程。你提到的公式中&#xff0c; ω i b b \boldsymbol{\omega}_{ib}^b \times ωibb…...

【大语言模型】【整合版】DeepSeek 模型提示词学习笔记(散装的可以看我之前的学习笔记,这里只是归纳与总结了一下思路,内容和之前发的差不多)

以下是个人笔记的正文内容: 原文在FlowUs知识库上&#xff0c;如下截图。里面内容和这里一样&#xff0c;知识排版好看一点 一、什么是 DeepSeek 1. DeepSeek 简介 DeepSeek 是一家专注于通用人工智能&#xff08;AGI&#xff09;的中国科技公司&#xff0c;主攻大模型研发与…...

ollama无法通过IP:11434访问

目录 1.介绍 2.直接在ollama的当前命令窗口中修改&#xff08;法1&#xff09; 3.更改ollama配置文件&#xff08;法2&#xff09; 3.1更新配置 3.2重启服务 1.介绍 ollama下载后默认情况下都是直接在本地的11434端口中运行&#xff0c;绑定到127.0.0.1(localhost)&#x…...

⭐算法OJ⭐位操作用法总结+实战指南(C++实现)

位操作在OJ 题目中是一种非常高效的工具&#xff0c;常用于优化时间复杂度和空间复杂度。本文是位操作在 OJ 题目中的主要用法总结&#xff0c;并以 C 实现为例。 相关题目&#xff1a;《C⭐算法OJ⭐Single Number 系列&#xff08;位操作&#xff09;》 文章目录 1. 基本位操…...

2.1 用大模型构建新人答疑机器人-大模型ACP模拟题-真题

真题 真题&#xff1a;如何初始化OpenAI客户端 client OpenAI( api_keyos.getenv("DASHSCOPE_API_KEY"), base_url"https://dashscope.aliyuncs.com/compatible-mode/v1", ) AI生成模拟题 一、单选题 &#xff08;每题5分&#xff0c;共6题&#xff…...

单片机裸机编程-时机管理

对于 RTOS 实时操作系统&#xff0c;我们是通过 TASK&#xff08;任务&#xff09;进行底层操作的&#xff0c;这与裸机编程中的函数&#xff08;fun&#xff09;类似。不同的任务或函数实现不同的功能&#xff0c;在RTOS中&#xff0c;单片机有信号量、队列等不同任务之间的通…...

Bugku CTF CRYPTO

Bugku CTF CRYPTO 文章目录 Bugku CTF CRYPTO聪明的小羊ok[-<>]散乱的密文.!? 聪明的小羊 描 述: 一只小羊翻过了2个栅栏 fa{fe13f590lg6d46d0d0} 分 析&#xff1a;栅栏密码&#xff0c;分2栏&#xff0c;一个栏里有11个 ①手动解密 f a { f e 1 3 f 5 9 0 l g 6 d 4 …...

【洛谷】【ARC100E】Or Plus Max(高维前缀和)

传送门&#xff1a;Or Plus Max 高维前缀和 题目描述 長さ 2N の整数列 A0​, A1​, ..., A2N−1​ があります。&#xff08;添字が 0 から始まることに注意&#xff09; 1 ≤ K ≤ 2N−1 を満たすすべての整数 K について、次の問題を解いてください。 i,j を整数と…...

宿主机的 root 是否等于 Docker 容器的 root?

在 Docker 容器化技术中&#xff0c;宿主机的 root 和 容器的 root 并不完全相同&#xff0c;尽管它们都称作 “root 用户”。这里需要明确的是&#xff0c;Docker 容器与宿主机之间存在隔离机制&#xff0c;容器内的 root 用户和宿主机的 root 用户有一些关键的区别。 1. 宿主…...

SmolLM2:多阶段训练策略优化和高质量数据集,小型语言模型同样可以实现卓越的性能表现

SmolLM2 采用创新的四阶段训练策略&#xff0c;在仅使用 1.7B 参数的情况下&#xff0c;成功挑战了大型语言模型的性能边界&#xff1a; 在 MMLU-Pro 等测试中超越 Qwen2.5-1.5B 近 6 个百分点数学推理能力&#xff08;GSM8K、MATH&#xff09;优于 Llama3.2-1B在代码生成和文…...

云原生降本之路:技术创新与应用解析

随着云计算的快速发展&#xff0c;云原生技术已成为企业降低成本、提高效率的重要手段。本文基于腾讯云容器技术专家孟凡杰的PPT内容&#xff0c;深入探讨了云原生技术在降低企业成本方面的应用&#xff0c;包括资源利用现状、成本优化思路、Kubernetes中的资源分配、横向与纵向…...

《Effective Objective-C》阅读笔记(中)

目录 接口与API设计 用前缀避免命名空间冲突 提供“全能初始化方法” 实现description方法 尽量使用不可变对象 使用清晰而协调的命名方式 方法命名 ​编辑类与协议命名 为私有方法名加前缀 理解OC错误模型 理解NSCopying协议 协议与分类 通过委托与数据源协议进行…...

Hbase客户端API——语句大全

目录 创建表&#xff1a; 插入数据&#xff1a; 删除数据&#xff1a; 修改数据&#xff1a; 查询数据&#xff1a;Get 查询数据&#xff1a;Scan 查询数据&#xff1a;过滤查询 创建表&#xff1a; 检验&#xff1a; 插入数据&#xff1a; 验证 一次多条数据插入 验证&…...

MQ(Message Queue)

目录 MQ(Message Queue)基本概念 为什么要使用消息队列&#xff1f; 使用消息队列有什么缺点&#xff1f; 如何保证消息不丢失?(如何保证消息的可靠性传输?/如何处理消息丢失的问题?) 通用的MQ场景&#xff1a; RabbitMQ如何保证消息不丢失&#xff1f; 生产者丢数据…...