使用Jmeter5.4.1在linux和windows上进行压测

本文档旨在教会你安装jmeter并使用jmeter对你的服务的http接口进行压测,获取相关压测数据

windows安装jmeter

安装jdk

如果你的电脑本来就装了java那你可以跳过这一步

我们先下载jdk安装包,这里推荐java8版本
java官方jdk下载地址
下这个【版本号有区别没关系,反正就是第一个表格里面的windows版本

下下来以后双击安装,我是建议直接下一步下一步安装到默认位置就好,反正也不大。
现在的java安装包似乎会帮我们写环境变量,所以安装好以后,反正我是没有改环境变量的。

安装jmeter

先下载
jmeter官方下载地址
下这个

Jmeter其实不需要安装,把这个压缩包放到你想要放置的位置,然后解压缩就好。
解压后本目录下会生成一个名为apache-jmeter-5.4.1的文件夹,我们双击进入,再进入bin文件夹,双击此目录中的ApacheJMeter.jar或着jmeter.bat都可以打开jmeter【用bat打开会多开启一个命令行】。
此时我们完成jmeter的安装。
刚装好的jmeter默认是英文版的,我这里直接贴出修改语言的菜单路径,你可以照着这个选项位置找过去改。


Jmeter的使用

Jmeter还有很多强大的功能,此文档只介绍我自己压测时会用到的相关功能,你有兴趣的话可以去探索其他功能。

右键左上角的测试计划,选择 添加-线程-线程组


右键刚刚建出来的线程组,选择 添加-取样器-HTTP请求


右键刚刚建出来的HTTP请求,选择 添加-监听器-聚合报告


好,准备工作完成,我们来讲解一下
先选择 线程组


我们会看到右边切换为线程组界面


线程组界面能够控制压测的并发数和持续时间,此处的设置会作用于此线程组下所有的HTTP请求

我们再在左边选择HTTP请求
能够看到,右边切换为HTTP请求界面


我们如果有接口需要上传文件,这时我们需要点击中间的【文件上传】页签


总而言之,你可以在HTTP请求界面构建请求你接口的http请求,就和postman类似。

最后,我们来看聚合报告
在左侧树中点击 聚合报告,可以看到右边切换为聚合报告界面


中文的表头都很容易理解,我就简单介绍下就好

字段 含义
#样本 实际发起的总请求数
平均值 所有请求的响应时间之和/总请求数
中位数 假设总请求数为99,将这99次请求按耗时从高到低排列,第50次请求的耗时即为中位数\n 假设总请求数为100,将这100次请求按耗时从高到低排列,第50次和第51次请求的耗时的平均值即为中位数\n 按下面三项表头的表达方式,可以将中位数称为【50%百分位】
90%百分位 计算方式和中位数一样,只不过这项取的是排名第90%的那次请求\n 也可以理解为有90%的请求响应时间小于等于这个值
95%百分位 计算方式和中位数一样,只不过这项取的是排名第95%的那次请求\n 也可以理解为有95%的请求响应时间小于等于这个值
99%百分位 计算方式和中位数一样,只不过这项取的是排名第99%的那次请求\n 也可以理解为有99%的请求响应时间小于等于这个值
最小值 所有请求中响应时间最短的那个时间
最大值 所有请求中响应时间最长的那个时间
异常% 对jmeter来说,异常意味着http返回码不为200,只要接口能调通,哪怕因为某些原因你的程序返回了报错,jmeter还是会认为调用是成功的
吞吐量 我们压测的核心数据,可以粗略理解为请求流通的数据量。我们压测的目的是找到吞吐量最高的并发值

测试接口结构组织
你可以在一个线程组下建立多个http请求,如下图

你也可以建好几个线程组,每个线程组下只放一个http请求


怎么样组织都是可以的,就是注意,调整并发数是在【线程组】界面进行调整的。我个人会更喜欢用下面那种方式,便于我调整各接口的并发数。

另外有一个要注意的就是,如果你只想要压测一个接口,一定记得要把别的接口或线程组禁用掉。



如果你已经压测过了,聚合报告中有数据,此时你要调整并发数再次进行压测,记得要把聚合报告清空,右键聚合报告,选择清除即可。


制定压测计划

我们压测一般采用控制变量法,同一个接口,相同的参数【包括文件参数】,相同的压测时间,只有并发线程数不同。
所以一般接口的参数设置好后就不再去动,在【线程组】界面设置 持续时间 并设置好后就不再去动,在压测的过程中根据需要调整【线程组】界面的 线程数 值。
你可以一次只压一个接口,也可以同时启用多个接口一起压,同时启用多个接口,且这多个接口分别属于不同【线程组】的话,你还可以给不同线程组设置不同的并发数,以实现【某些接口调用少,某些接口调用多】这样的效果。
具体就以你的实际情况去考虑了。

一般我们建议从一个比较小的并发开始压起,比如你服务器CPU在8核或以下的,建议并发1、3、5、6、7、8这样压上去,当然如果你服务器配置很好或着服务性能特别棒那你可以放飞自我一点

压测的目标是找到并发线程数增加但是吞吐量没有增加的并发数,如果吞吐量没有增加就说明服务压力已经上不去了,总有什么东西到瓶颈了,这个吞吐量最大时的并发数就是你的服务当前的最大并发数,超过这个数接着加并发,吞吐量甚至有可能下降。

压测前的准备

此处给出一个checklist,在你准备开始压测前,请逐条核对

  1. 检查要压测的接口ip、端口、请求类型、接口路径是否正确,不压的接口是否禁用
  2. 检查要压测的接口参数【尤其是 内容类型 和 对POST使用multipart/form-data】、文件是否正确
  3. 检查并发量设置是否正确
  4. 检查并发时间设置是否正确【可选】
  5. 检查聚合报告是否清空【可选】
  6. 被压测服务是否重启【可选】
  7. 被压测服务运行是否正常
  8. 被压测服务所在服务器上其余服务是否关闭干净

开始压测

点击绿色箭头即可开始压测,开始后右侧红框里的stop按钮会亮起变为可点状态,如果你需要停止压测,可以点击stop按钮。
我们压测一般是设置相同参数相同时长,所以压测时长更多以【线程组】界面的【持续时间】参数来控制。

压测完成后可以去【聚合报告】页面查看压测结果

在Linux上使用jmeter

因为windows有着包括网络带宽、其他程序竞争在内的诸多干扰因素,所以我们一般更建议在linux上进行压测。

安装jdk

还是这个下载地址
java官方jdk下载地址
这次要下的是这个

一般的linux都是下的这个,当然你要是别的硬件架构你就自己下别的
将jdk-8u291-linux-x64.tar.gz放置到服务器的/usr/lib目录下
执行tar -zxvf jdk-8u291-linux-x64.tar.gz可进行解压,解压后会在当前目录下生成一个名为jdk1.8.0_291的文件夹,为了以后操作方便我们这里对他重命名一下,执行mv ./jdk1.8.0_291 jdk将其重命名为jdk。

然后我们需要修改环境变量
vim /etc/profile
在最后添上

#set java env
export JAVA_HOME=/usr/lib/jdk
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

然后:wq保存即可
执行source /etc/profile让配置立刻生效
可以执行java -version看是否能够正常打印java版本来判断安装是否成功

安装jmeter

安装文件还是上面叫你下的那个zip,一模一样,直接拿来用
将apache-jmeter-5.4.1.zip拷入合适位置,哪都行,本文档以/home目录为例
执行unzip apache-jmeter-5.4.1.zip进行解压,解压完成后会在本目录下生成一个名为jmeter-5.4.1的文件夹
和windows环境类似,linux环境的jmeter只要解压就好不需要安装

然后我们需要修改环境变量
vim /etc/profile
在最后添上

export JMETER="/home/jmeter-5.4.1"
export CLASSPATH="$JMETER/lib/ext/ApacheJMeter_core.jar:$JMETER/lib/jorphan.jar:$JMETER/lib/logkit-2.0.jar:$CLASSPATH"

然后:wq保存即可
执行source /etc/profile让配置立刻生效

开始压测

建议在windows的jmeter先设置好你要压测的所有配置项,包括并发数和接口、接口参数等等【注意如果有文件的话文件路径在linux上会发生变化,所以文件路径在windows上先不改】,记得把你不压的接口禁用掉,然后点击顶部 文件-保存测试计划 即可将你的测试计划保存在文件中


如图所示会保存成一个jmx文件,文件名你可以自己起,保存位置也随意

保存好后将这个jmx文件拷入压测服务器,最好是拷入/home/jmeter-5.4.1/bin目录,这也是待会启动jmeter的程序所在的目录,然后将你要作为参数的文件也拷入同一目录,使用vim编辑这个jmx文件,在里面找到你之前设置为文件参数的文件路径【windows环境的路径很容易认,就D:之类的有个盘符开头】把他改成linux环境的文件路径,刚才叫你把文件和jmx放在相同目录,此时你就可以直接写./文件名这样,不用写太多字。改好以后:wq保存。
此时我们就可以开始压测了,在/home/jmeter-5.4.1/bin执行

java -jar ApacheJMeter.jar -n -t test.jmx  -l test.jtl

jmeter就会开始跑,并且会自动在当前目录生成一个jtl文件【你命令里文件名可以改不是非要test.jtl】将测试结果写入,跑完会打印end of run,此时我们要将这个jtl文件从服务器上拷出来,到windows版jmeter上,打开【聚合报告】界面,点击浏览


选择我们刚才从服务器上拷出的jtl文件,就能够看到我们在服务器上进行压测的结果了。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,491评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,856评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,745评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,196评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,073评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,112评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,531评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,215评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,485评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,578评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,356评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,215评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,583评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,898评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,497评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,697评论 2 335

推荐阅读更多精彩内容