Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >jmeter入门实操,简单上手分布式压测

jmeter入门实操,简单上手分布式压测

作者头像
怪盗LYL
发布于 2022-06-13 04:15:49
发布于 2022-06-13 04:15:49
2.9K01
代码可运行
举报
文章被收录于专栏:测试开发真货测试开发真货
运行总次数:1
代码可运行

一:安装

首先第一步下载安装包,官网下载地址https://jmeter.apache.org/download_jmeter.cgi,windows系统和linux用一个。注:jmeter5.4.3需要java8及以上版本。

解压压缩文件,进入bin文件夹下双击jmeterw.cmd打开jmeter界面。注带w的为无控制台的。

默认是英文的,不喜欢可以改中文,进入bin文件夹,找到jmeter.properties,用文本编辑器打开。搜索language,更改为language=zh_CN。重启jmeter。

右键添加线程组,然后设置线程数等

普通线程组只能固定压测的线程数这里推荐阶梯式线程组Stepping Thread Group,需要安装插件:

安装插件:

从官网Documentation :: JMeter-Plugins.org下载Plugins Manager

将下载好的jar包放到apache-jmeter-5.4.3\lib\ext文件夹下。

然后重新打开jmeter,依次点击如下:选项 -Plugins Manager - Available Plugins - jpgc - Standard Set。最后点击右下角的 应用 按钮,安装完成后jmeter自动重启,重启后添加线程组即可看到我们下载的组件。

有了线程组就可以创建http请求了。

首先添加信息头,再配置元件里:按照实际的请求类型配置json,还是x-www-form-urlencoded,和postman里面请求头类型差不多。如果信息头管理器放到线程组下,那么线程组下所有 HTTP 请求都会共享这些 HTTP 信息头,如果信息头管理器放到 HTTP 请求下,那么只有该请求拥有这些 HTTP 信息头。我常用的两个类型:

Content-Type

application/x-www-form-urlencoded

Content-type

application/json

创建请求参数文件元件

以下字段描述内容来自:公众号 滑水的测开学习日记

「Filename」:文件名。test.dat文件名,保存参数化数据的文件目录,可选择相对或者绝对路径(建议填写相对路径(相对于bin目录),避免脚本迁移时需要修改路径)。如果直接写文件名,则该文件要放在bin目录中。对于分布式测试,主机和远程机中相应目录下应该有相同的CSV文件

「File encoding」:文件编码。er\csvtest.dat文件的编码格式,在保存时保存编码格式为UTF-8即可;

「Variable Names」:变量名。类似excel文件的文件头,起到标示作用,同时也是后续引用的标识符,建议采用有意义的英文标示;(如:有几列参数,在这里面就写几个参数名称,每个名称中间用分隔符分割,这里的 user,pwd,可以被利用变量名来引用:{pwd};

「Ignore first line」: 是否忽略首行。果csv中第一行是表头,而不是参数化用的数据,这里要选择True。

「limiter」:参数文件分隔符。默认是 “,”。用来在“Variable Names”中分隔参数,与参数文件中的分隔符保持一致即可。

「Allow quoted data?」:是否允许变量使用双引号,允许的话,变量将可以括在双引号内,并且这些变量名可以包含分隔符

「Recycle on EOF?」:是否循环读取参数文件内容;因为CSV Data Set Config一次读入一行,分割后存入若干变量中交给一个线程,如果线程数超过文本的记录行数,那么可以选择从头再次读入;

Ture:为true时,当已读取完参数文件内的测试用例数据,还需继续获取用例数据时,此时会循环读取参数文件数据(即:读取文件到结尾时,再重头读取文件);

False:为false时,若已至文件末尾,则不再继续读取测试数据;通常在“线程组线程数* 线程组循环次数>参数文件行数”时,选用false(即:读取文件到结尾时,停止读取文件);

8.「Stop thread on EOF?」:遇到文件描述符停止线程。当Recycle on EOF为False时(读取文件到结尾),停止进程,当Recycle on EOF为True时,此项无意义;

若为ture,则在读取到参数文件行末尾时,终止参数文件读取线程;

若为false,此时线程继续读取,但会请求错误,因此时读取的数据为EOF;

「Sharing mode」:线程共享模式。即参数文件的作用域,有以下几种方式:

△All threads:当前测试计划中的所有线程中的所有的线程都有效,默认;

△Current thread group:当前线程组中的线程有效;

△Current thread:当前线程有效;

创建一个参数文件。

添加http请求:高级选项里面选择java,可以避免一些端口释放报错。

创建响应断言:

创建结果树:

运行以后观察结果树:

压缩jmeter程序,这是为了将插件一起打包也可以使用官方下载的zip在主机解压以后将本地的apache-jmeter-5.4.3\lib\ext文件夹下jar包传到主机上apache-jmeter-5.4.3\lib\ext路径下。这里遇到了自己打包的zip解压以后sh文件运行没有权限的问题,推荐用官方下载的zip包直接解压。

使用rz命令或者其他如ftp软件上传到主机。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
unzip apache-jmeter-5.4.3.zip /*解压*/

查询jmeter版本

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
jmeter.sh -v

如果遇到以下报错:

Unrecognized VM option 'MaxMetaspaceSize=256m'

Error: Could not create the Java Virtual Machine.

Error: A fatal exception has occurred. Program will exit.

检查javahome版本是不是低于1.8,可以通过修改主机java版本解决,如果不想修改主机环境的java版本可以在启动脚本修改

忘记传插件的后果:

执行压测命令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
../jmeter.sh -n -t test.jmx -l test.jtl

-h 帮助 -> 打印出有用的信息并退出

-n 非 GUI 模式 -> 在非 GUI 模式下运行 JMeter

-t 测试文件 -> 要运行的 JMeter 测试脚本文件

-l 日志文件 -> 记录结果的文件

-r 远程执行 -> 在Jmter.properties文件中指定的所有远程服务器

-H 代理主机 -> 设置 JMeter 使用的代理主机

-P 代理端口 -> 设置 JMeter 使用的代理主机的端口号

通过jtl文件生成网页文件。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
../jmeter.sh -g test.jtl -o test(输出文件夹名字)

打包文件夹

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
tar zcvf test.tar.gz ./test

下载到本地。打开index.html

总概况

Tps

响应时间耗时

接下来说一下分布式压测的配置。以下内容来自于小菠萝的博客

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
https://www.cnblogs.com/poloyy/p/13233055.html

首先是压力机:

修改 jmeter.properties 文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
vim ~/jmeter/apache-jmeter-5.4.3/bin/jmeter.properties
修改 server_port 端口 默认1009

可修改任意端口不被占用的接口

修改 server.rmi.port 端口,和 server_port 保持一致即可, 默认是会帮你保持一致的
设置 server.rmi.ssl.disable

默认 false,代表需要认证

设置为 true,减少不必要的麻烦

启动 jmeter-server 服务,脚本在bin下

如果压力机是 linux 或 mac

./jmeter-server -Djava.rmi.server.hostname=压力机ip

如果是window

jmeter-server.bat -Djava.rmi.server.hostname=压力机ip

注意:控制机要是参与压测也需要启动jmeter-server

检查防火墙

· 检查防火墙是否被关闭,防火墙会影响脚本执行和测试结构收集

· 确认 server_port 的端口没有被占用以及需要对外开放,端口占用会导致压力机报错

· 关于开放端口和关闭防火墙可以参考这篇博客:https://www.cnblogs.com/poloyy/p/12213297.html

控制机配置

修改 jmeter.properties(下面三步走)

修改 remote_hosts

· 多个压力机之间用 , 隔开

· 不同压力机端口可以不一样,不需要全部都一致

· 如果控制机也测试则加 127.0.0.1:port (实际使用中我修改为为压力机实际ip),然后修改 server_port 和 server.rmi.port (和压力机一样步骤)

设置 server.rmi.ssl.disable
设置 mode

· 用于查看分布式测试过程中,每个压力机的测试结果

· 若不启用,在运行过程中,控制器是无法实时看到压力机的结果

控制机运行分布式测试

启动远程服务器

这里会显示所有 remote_hosts 添加的压力机

点击启动后,查看压力机

Linux命令

、指定压测机启动,命令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
./jmeter -n -t /path/test.jmx -R 127.0.0.1,127.0.0.2

②、启动所有压测机,命令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 ./jmeter -n -t /path/test.jmx -r
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sh ./apache-jmeter-5.4.3/bin/jmeter.sh -n -t /opt/jmeter/auth/xxx.jmx -r -l /opt/jmeter/auth/xxx.jtl

注意:分布式压测时候线程组是脚本的数量和压力机数量的乘积,例如有两台压力机,设置线程组为100个则实际实现过程中线程组数量为200个。

至此,我们学会了最基础的单接口阶梯线程组分布式压力测试并查看压力测试结果。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-01-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 测试开发真货 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Jmeter(四十七) - 从入门到精通高级篇 - 分布式压测部署之负载机的设置(详解教程)
  千呼万唤始出来,这一篇感觉写了好久,总想写的清楚明白简洁,但是还是洋洋洒洒写了好多,希望大家喜欢吧!本来打算将这一篇文章是放在性能测试中讲解和分享的,但是有的童鞋或者小伙伴们私下问的太多了,实在是忍不了也解答烦了,索性就在这里分享一下吧。权当参考,但是希望对大家有所帮助。
北京-宏哥
2021/06/01
4.1K0
Jmeter(四十七) - 从入门到精通高级篇 - 分布式压测部署之负载机的设置(详解教程)
基于JMeter开展性能测试(插件、监控、分布式压测)!
安装jdk1.8:默认安装,配置环境变量,新建系统变量JAVA_HOME 值:jdk的安装路径
测试开发技术
2022/09/28
9810
JMeter分布式压测环境搭建
在使用JMeter进行压测时,当被测接口需要很高的并发量,或者有些接口访问数很高的时候,Linux网络相关的内核参数需要根据实际服务进行调整,从而导致本地端口被占满,出现请求报错的情况。此时,本机的一些TCP配置、本机性能峰值就可能是性能测试的瓶颈点。 因此,本文梳理了基于JMeter的分布式压测环境的搭建方法,并能够满足参数化的需求。
用户5521279
2020/04/17
1.2K0
JMeter分布式压测环境搭建
Jmeter系统入门教程(安装、组件使用、Demo展示、连接数据库、压测报告)
压测工具实际项目中接触过ab,ab算一个常用而又直接的工具,jmeter以前自己测试过,但如此系统,细致的测试还是第一次,这个博主很多文章都很细致,问题解答及时
疯狂的KK
2023/03/24
5950
Jmeter分布式压测部署说明
Jmeter是基于Java的压力测试工具,在单台windows上使用Jmeter进行性能测试时,对本机的CPU和内存消耗是比较大的,如果并发数大(比如100、300...并发),很容易导致资源不足,吞吐量也无法达到理想的要求。于是我们想通过cmd命令行或者在Linux上使用Jmeter进行性能测试,能够大大缩减所需要的系统资源。客户端机器(window系统或者Linux服务器)作为一个控制器Master,控制多台slave机器的操作。
muntainyang
2020/09/22
2.8K0
Jmeter分布式压测部署说明
Jmeter接口测试+压力测试
meter是apache公司基于java开发的一款开源压力测试工具,体积小,功能全,使用方便,是一个比较轻量级的测试工具,使用起来非常简单。因为jmeter是java开发的,所以运行的时候必须先要安装jdk才可以。jmeter是免安装的,拿到安装包之后直接解压就可以使用,同时它在linux/windows/macos上都可以使用。
顾翔
2019/12/11
8.6K1
Jmeter接口测试+压力测试
基于Jmeter的分布式压测实践
平时在使用Jmeter做压力测试的过程中,由于单机的并发能力有限,所以常常无法满足压力测试的需求。因此,Jmeter还提供了分布式的解决方案。本文是一次利用Jmeter分布式对业务系统登录接口做的压力测试的实践记录。按照惯例,在正式开始前,先简单介绍一下本文大纲:
大刚测试开发实战
2022/11/14
3.2K0
基于Jmeter的分布式压测实践
5分钟内快速搞定Jmeter集群压测环境~
张三累啊,感到了生活的不容易,他矜矜业业干活,日复一日,年复一年,终于攒够了第一桶金,完成了原始积累~
测试开发囤货
2021/08/11
2.9K0
5分钟内快速搞定Jmeter集群压测环境~
Jmeter(三十八) - 从入门到精通进阶篇 - 命令行运行JMeter详解(详解教程)
  前边一篇文章介绍了如何生成测试报告,细心地小伙伴或者同学们可以看到宏哥启动Jmeter生成测试报告不是在gui页面操作的,而是在gui页面设置好保存以后,用命令行来生成测试报告的。这一篇宏哥就详细的介绍一下为什么用命令行而不是GUI,以及启动时的一些参数的含义。
北京-宏哥
2021/03/18
6.1K0
Jmeter(三十八) - 从入门到精通进阶篇 - 命令行运行JMeter详解(详解教程)
性能测试-Jmeter之Linux下压力测试
我们在做测试的时候,有时候要运行很久,公司用的测试服务器一般都是linux,就可以运行在linux下面,linux下面不能像windows一样有图形化界面,那怎么运行脚本呢,就先在windows上把脚本做好,然后在linux下运行即可,linux下运行jmeter是在jmeter的bin目录下的jmeter.sh这个shell脚本。
用户6367961
2020/02/14
3.7K0
Linux内网环境分布式压测部署
XX项目由于在私有云上部署,还未开放互联网,项目组决定在内网环境进行压测环境搭建,提前暴露内网环境下项目接口的性能瓶颈。
rainsun孙孝强-悦智
2022/01/09
1.6K0
Linux内网环境分布式压测部署
Jmeter系列(39)- Jmeter 分布式测试
https://www.cnblogs.com/poloyy/category/1746599.html
小菠萝测试笔记
2020/07/08
4.1K1
搭建 Apache Jmeter 分布式压测与监控,真那么难搞定?|实战干货
对于运维工程师来说,需要对自己维护的服务器性能瓶颈了如指掌,比如我当前的架构每秒并发是多少,我服务器最大能接受的并发是多少,是什么导致我的性能有问题;如果当前架构快达到性能瓶颈了,是横向扩容性能提升大,还是纵向扩容性能提升大。
民工哥
2020/09/15
1.1K0
搭建 Apache Jmeter 分布式压测与监控,真那么难搞定?|实战干货
可以收藏的JMeter分布式踩坑大全
关于jmeter分布式压测如何搭建网上的文章很多,搭建过程本文不再赘述,主要讨论可能的报错以及解决方案,下面的内容可能查阅的频率很高,强烈建议收藏。
周辰晨
2020/05/22
2.2K0
聊一聊,JMeter分布式性能测试!
在做后端服务器性能测试中,我们会经常听到'分布式'。但你是否了解分布式呢?今天,我们就来给大家讲讲,在企业实战中,如何使用分布式进行性能测试,实战过程中,又有哪些地方要特别注意?
测试开发技术
2024/01/05
3350
聊一聊,JMeter分布式性能测试!
23-分布式
Slave上的机器执行完全按照Master机器的指令执行。包括场景、脚本。所以我们只需要修改master上的脚本就可以了,无需修改slave上的内容
zx钟
2021/07/06
3210
玩转Jmeter进行性能测试
时逢6.18钉钉应用大促,为避免高负载下钉钉微应用的稳定性问题,遂赶工赶时完成钉钉方要求的稳定性压测,以此为楔,深探Jmeter,事后总结,是以成文。不愿窃为私有,分享给诸位QA同学,以期遇坑绕之,少些弯路。
晴空SunnySky
2023/09/26
3.2K0
Jmeter接口压测快速入门
通过以上给出的地址将Jmeter下载好后,进入到Jmeter的bin目录下,启动脚本放在这个目录,其中windows双击jmeter.bat即可,Mac和Linux下则是使用如下命令运行:
端碗吹水
2020/09/23
3.6K0
Jmeter接口压测快速入门
Jmeter(五十四) - 从入门到精通高级篇 - 如何在linux系统下运行jmeter脚本 - 上篇(详解教程)
 上一篇宏哥已经介绍了如何在Linux系统中安装Jmeter,想必各位小伙伴都已经在Linux服务器或者虚拟机上已经实践并且都已经成功安装好了,那么今天宏哥就来介绍一下如何在Linux系统下运行Jmeter脚本。
北京-宏哥
2022/06/30
2.9K0
Jmeter(五十四) - 从入门到精通高级篇 - 如何在linux系统下运行jmeter脚本 - 上篇(详解教程)
Jmeter实现分布式并发
1、Master在jmeter.properties添加remote_hosts
孟船长
2022/02/23
5590
Jmeter实现分布式并发
推荐阅读
相关推荐
Jmeter(四十七) - 从入门到精通高级篇 - 分布式压测部署之负载机的设置(详解教程)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验