【测试工具JMeter篇】JMeter性能测试入门级教程(一)出炉,测试君请各位收藏了!!!
一、前言
Apache JMeter是纯Java的开源软件,最初由Apache软件基金会的Stefano Mazzocchi开发,旨在加载测试功能行为和测量性能。可以使用JMeter进行性能测试,即针对重负载、多用户和并发流量测试Web应用程序。

我们选择JMeter原因

是否测试过Web服务器以了解其工作效率?一台Web服务器可以处理多少并发用户?
假设有一天,老板要求为100个用户做www.baidu.com的性能测试。怎么做?

安排100个人同时使用PC和互联网访问baidu.com是不可行的,当测试10000个用户时,想想基础设施需求(对于百度这样的网站来说,这是一个很小的数字)。因此,需要一个像JMeter这样的软件工具来模拟真实的用户行为,并对站点进行性能/负载测试。
JMeter与生俱来的优势

- 开源许可(Open source license): JMeter是完全免费的,允许开发者使用源代码进行开发
- 友好的GUI(Friendly GUI): JMeter非常容易使用,并且不需要花费时间来熟悉它
- 平台无关性(Platform independent): JMeter是100%纯Java桌面应用程序。因此它可以在多个平台上运行
- 完整的多线程框架(Full multi-threading frmework): JMeter允许通过单独的线程组对不同函数进行并发和同时采样
- 测试结果可视化(): 测试结果可以以图表、表格、树、日志文件等不同格式显示
- 易于安装: 只需复制并运行*.bat文件即可运行JMeter。无需安装。
- 高度可扩展: 可以编写自己的测试。JMeter还支持可视化插件,允许扩展测试
- 多种测试策略: JMeter支持负载测试、分布式测试、功能测试等多种测试策略。
- 模拟: JMeter可以模拟具有并发线程的多个用户,对测试中的Web应用程序造成较重的负载
- 支持多协议: JMeter不仅支持web应用测试,还支持数据库服务器性能评估。JMeter支持所有基本协议,如HTTP、JDBC、LDAP、SOAP、JMS和FTP
- 记录和回放 -记录浏览器上的用户活动,并使用JMeter在Web应用程序中模拟它们
- 脚本测试: Jeter可以与Bean Shell&Selenium集成,实现自动化测试。
JMeter工作原理介绍
JMeter的基本工作流程如下图所示:也就是JMeter模拟一组用户向目标服务器发送求,并通过图形化图表返回目标服务器的统计信息

JMeter已完成的工作流,如下图所示

JMeter版本与Java版本适配
| 版本 | 描述 |
|---|---|
| 1 | 首次正式发布 |
| 2.13 | Java 6+ |
| 3 | Java 7+ |
| 3.1 | Java 7+ |
| 3.2 | Java 8+ |
| 3.3 | Java 8 |
| 4 | Java 8/9 |
注:现在JMeter最新版本我们还是推荐大家适配Java8,不要问什么原因,稳定好用就行了!切记不要去乱适配其他版本,防止出现不可预测问题影响项目进度或者项目实践。
二、JMeter安装与配置
JMeter的胸襟:
以下是与JMeter兼容的操作系统列表
- Linux操作系统
- Windows
- Mac OS
- Ubuntu
本文将在下面会给大家介绍:
- 安装JMeter的步骤
- 在GUI模式下启动JMeter
- 如何在非GUI模式下运行JMeter
- 在服务器模式下启动JMeter
- 在命令行模式下启动JMeter
- 在Linux中使用JMeter
安装JMeter的步骤
Step1 安装Java
因为JMeter是纯Java桌面应用程序,所以它需要完全兼容的JVM6或更高版本【本文推荐大家使用java8版本】。可以下载并安装最新版本的Java SE开发工具包。下载Java平台(JDK)

安装完成后,可以使用以下过程检查系统中是否成功安装了Java JDK
- 在Windows/Linux中,转到终端
- 输入命令java-version
如果Java运行时环境安装成功,将看到如下图所示的输出

如果没有显示任何内容,重新安装Java SE运行时环境
Step2 下载JMeter
当前,JMeter的最新版本是Apache JMeter 5.6.3。可以从这里下载:Apache JMeter - Download Apache JMeter
选择要下载的二进制文件(zip或tgz),如下图所示

步骤3) 安装
JMeter的安装非常简单。只需将zip/tgz文件解压缩成简单的解压缩文件,就ok了!
解压缩完成后,安装目录结构应如下图所示:(这里的Project是我自己新建的项目文件夹,大家不需要关注)

下面描述的是JMeter目录及其重要性JMeter目录包含许多文件和目录
- /bin:包含用于启动JMeter的JMeter脚本文件
- /docs:JMeter文档文件
- /Extras:与Ant相关的额外文件
- /lib/:包含JMeter所需的Java库
- /lib/ext:包含JMeter和协议的核心JAR文件
- /lib/junit:用于JMeter的Junit库
- /printable_docs:
步骤4) 启动JMeter
可以在3种模式下启动JMeter
- GUI模式
- 服务器模式
- 命令行模式
在GUI模式下启动JMeter
如果使用的是Windows,只需运行/bin/jmeter.bat文件即可在GUI模式下启动JMeter,启动后GUI界面如下图所示:

如何在非GUI模式下运行JMeter
在服务器模式下启动JMeter
分布式测试采用服务器模式。此测试以客户端-服务器模型的方式工作。在此模型中,JMeter在客户端计算机上运行,JMeter在GUI模式下运行。
要启动服务器模式,运行BAT文件jmeter-server.bat,如下图所示

在命令行模式下启动JMeter
GUI模式下的JMeter会消耗大量计算机内存。要保存要执行此操作的资源,使用以下命令选项

这是一个命令行示例
| 1 |
|
在Linux中使用JMeter
- 在Linux中使用JMeter与在Windows中使用JMeter相同;只需运行以下shell脚本即可。
- 运行脚本文件jmeter(此文件没有扩展名)-运行JMeter(默认情况下为GUI模式)。
- 在服务器模式下运行脚本文件jeter-server-start JMeter(使用适当的参数调用JMeter脚本) jmeter.sh -非常基本的JMeter脚本,没有指定JVM选项。 Mirror-server.sh -在非GUI模式下运行JMeter镜像服务器 shutdown.sh -运行关闭的客户端以正常停止非GUI实例 stoptest.sh -运行关闭的客户端以突然停止非GUI实例
相关文章:
【测试工具JMeter篇】JMeter性能测试入门级教程(一)出炉,测试君请各位收藏了!!!
一、前言 Apache JMeter是纯Java的开源软件,最初由Apache软件基金会的Stefano Mazzocchi开发,旨在加载测试功能行为和测量性能。可以使用JMeter进行性能测试,即针对重负载、多用户和并发流量测试Web应用程序。 我们选择JMeter原因 是否测试过…...
【zookeeper03】消息队列与微服务之zookeeper集群部署
ZooKeeper 集群部署 1.ZooKeeper 集群介绍 ZooKeeper集群用于解决单点和单机性能及数据高可用等问题。 集群结构 Zookeeper集群基于Master/Slave的模型 处于主要地位负责处理写操作)的主机称为Leader节点,处于次要地位主要负责处理读操作的主机称为 follower 节点…...
从 Llama 1 到 3.1:Llama 模型架构演进详解
编者按: 面对 Llama 模型家族的持续更新,您是否想要了解它们之间的关键区别和实际性能表现?本文将探讨 Llama 系列模型的架构演变,梳理了 Llama 模型从 1.0 到 3.1 的完整演进历程,深入剖析了每个版本的技术创新&#…...
UE5肉鸽游戏教程学习
学习地址推荐:UE5肉鸽项目实战教程_哔哩哔哩_bilibili...
Vue3 - 详细实现虚拟列表前端虚拟滚动列表解决方案,vue3长列表优化之虚拟列表,解决列表动态高度不固定高度及图片视频图文异步请求加载问题,虚拟列表DOM大量数据同时加载渲染卡顿太慢及下滑列表闪烁
前言 Vue2 版本,请访问 这篇文章 在 vue3 项目开发中,详解实现虚拟列表高度不固定(不定高)且复杂含有图片视频等复杂虚拟列表教程,决列表每项高度不确定及img图像或视频的加载方案,利用缓冲区技术解决用户浏览时渲染不及时列表闪烁白屏/列表加载闪屏,解vue3实现虚拟列表优…...
英语知识网站开发:Spring Boot框架技巧
摘要 随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了英语知识应用网站的开发全过程。通过分析英语知识应用网站管理的不足,创建了一个计算机管理英语知识应用网站的方案。文章介绍了英语知识应用网站的系…...
基于lvgl+ST7735制作一款esp8285的控制面板程序
要在ESP8285上使用LVGL和ST7735创建一个控制面板程序,你需要遵循以下步骤。这个过程包括设置开发环境,连接硬件,编写代码,以及调校和优化。 所需硬件 ESP8285 开发板:像NodeMCU之类的开发板。ST7735 显示屏:通常是1.8英寸或2.0英寸的SPI接口显示屏。电源和连接线:用于连…...
MySQL 索引详解
在数据库的世界中,索引就像是一本巨大书籍的目录,它能够极大地提高数据检索的效率。在 MySQL 中,索引的合理使用对于数据库的性能至关重要。本文将深入探讨 MySQL 索引的各个方面。 一、索引的概念与作用 1. 什么是索引? 索引是一…...
区块链学习笔记(1)--区块、链和共识 区块链技术入门
常见的hash算法: 文件防篡改:MD5比特币挖矿:SHA256证明数据片段:Merkle root文本去重:SimHash 区块 区块(block)由区块头(block header)和交易列表(transac…...
【Android+多线程】IntentService 知识总结:应用场景 / 使用步骤 / 源码分析
定义 IntentService 是 Android中的一个封装类,继承自四大组件之一的Service 功能 处理异步请求 & 实现多线程 应用场景 线程任务 需 按顺序、在后台执行 最常见的场景:离线下载不符合多个数据同时请求的场景:所有的任务都在同一个T…...
Python Tornado框架教程:高性能Web框架的全面解析
Python Tornado框架教程:高性能Web框架的全面解析 引言 在现代Web开发中,选择合适的框架至关重要。Python的Tornado框架因其高性能和非阻塞I/O特性而备受青睐。它特别适合处理大量并发连接的应用,比如聊天应用、实时数据处理和WebSocket服务…...
通过端口测试验证网络安全策略
基于网络安全需求,项目中的主机间可能会有不同的网络安全策略,这当然是好的,但很多时候,在解决网络安全问题的时候,同时引入了新的问题,如k8s集群必须在主机间开放udp端口,否则集群不能正常的运…...
Excel把其中一张工作表导出成一个新的文件
excel导出一张工作表 一个Excel表里有多个工作表,怎么才能导出一个工作表,让其生成新的Excel文件呢? 第一步:首先打开Excel表格,然后选择要导出的工作表的名字,比如“Sheet1”,把鼠标放到“She…...
第四份工作的环境配置
最近在内网中工作,会遇到不少的环境问题. 下面记录一下这个过程中的挑战: 环境:内网,连接不到外网. 如何配置开发环境: 方法0: 在服务器上安装环境. 但是服务器上没有相应的python包.因为python包是从外界获得的.并且,这些python包不能同步更新.所以,在服务器上直接搭建环…...
SpringBoot开发——Maven多模块工程最佳实践及详细示例
文章目录 一、前言二、Maven多模块工程的最佳实践1、项目结构清晰2、依赖管理统一3、插件配置统一4、版本控制一致5、模块间通信简化 三、详细示例1、项目结构2、父模块(parent)的pom.xml文件3、子模块(module-api)的pom.xml文件4…...
C 语言面向对象
面向对象的基本特性:封装,继承,多态 1.0 面向过程概念 当我们在编写程序时,通常采用以下步骤: 1. 将问题的解法分解成若干步骤 2. 使用函数分别实现这些步骤 3. 依次调用这些函数 这种编程风格的被称作 面向过程…...
无人机探测:光电侦测核心技术算法详解!
核心技术 双光谱探测跟踪: 可见光成像技术:利用无人机表面反射的自然光或主动光源照射下的反射光,通过高灵敏度相机捕捉图像。该技术适用于日间晴朗天气下的无人机探测,具有直观、易于识别目标的特点。 红外成像技术࿱…...
ffmpeg视频滤镜:替换部分帧-freezeframes
滤镜描述 freezeframes 官网地址 > FFmpeg Filters Documentation 这个滤镜接收两个输入,然后会将第一个视频中的部分帧替换为第二个视频的某一帧。 滤镜使用 参数 freezeframes AVOptions:first <int64> ..FV....... set first fra…...
PHP 超级全局变量
超级全局变量是指在php任意脚本下都可以使用 PHP 超级全局变量列表: $GLOBALS:是PHP的一个超级全局变量组,在一个PHP脚本的全部作用域中都可以访问。 $_SERVER:$_SERVER 是一个PHP内置的超级全局变量,它是一个包含了诸如头信息(header)、路…...
Pytorch使用手册-Tensors(专题二)
这段代码是对 PyTorch 中张量(Tensors)的详细介绍和操作演示。以下是逐步讲解: 1. 什么是张量 (Tensor) 张量是一种专门的数据结构,与 NumPy 的多维数组(ndarray)类似: 它可以在 GPU 或其他硬件加速器上运行。张量可以与 NumPy 共享内存,避免不必要的数据拷贝。它是为…...
KubeSphere 容器平台高可用:环境搭建与可视化操作指南
Linux_k8s篇 欢迎来到Linux的世界,看笔记好好学多敲多打,每个人都是大神! 题目:KubeSphere 容器平台高可用:环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...
css实现圆环展示百分比,根据值动态展示所占比例
代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...
AI Agent与Agentic AI:原理、应用、挑战与未来展望
文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例:使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例:使用OpenAI GPT-3进…...
python/java环境配置
环境变量放一起 python: 1.首先下载Python Python下载地址:Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个,然后自定义,全选 可以把前4个选上 3.环境配置 1)搜高级系统设置 2…...
深入浅出:JavaScript 中的 `window.crypto.getRandomValues()` 方法
深入浅出:JavaScript 中的 window.crypto.getRandomValues() 方法 在现代 Web 开发中,随机数的生成看似简单,却隐藏着许多玄机。无论是生成密码、加密密钥,还是创建安全令牌,随机数的质量直接关系到系统的安全性。Jav…...
【大模型RAG】Docker 一键部署 Milvus 完整攻略
本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装;只需暴露 19530(gRPC)与 9091(HTTP/WebUI)两个端口,即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...
1688商品列表API与其他数据源的对接思路
将1688商品列表API与其他数据源对接时,需结合业务场景设计数据流转链路,重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点: 一、核心对接场景与目标 商品数据同步 场景:将1688商品信息…...
基于当前项目通过npm包形式暴露公共组件
1.package.sjon文件配置 其中xh-flowable就是暴露出去的npm包名 2.创建tpyes文件夹,并新增内容 3.创建package文件夹...
基于数字孪生的水厂可视化平台建设:架构与实践
分享大纲: 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年,数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段,基于数字孪生的水厂可视化平台的…...
生成 Git SSH 证书
🔑 1. 生成 SSH 密钥对 在终端(Windows 使用 Git Bash,Mac/Linux 使用 Terminal)执行命令: ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" 参数说明: -t rsa&#x…...
