使用Jmeter压测HTTP、TCP请求

这篇具有很好参考价值的文章主要介绍了使用Jmeter压测HTTP、TCP请求。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、Jmeter 是什么?

Jmeter 是一个开源的测试工具,由 Apache 软件基金会开发,它是一个纯 Java 应用程序,用于负载测试、功能测试和性能测试,它是由 Apache 软件基金会开发的一个开源软件。它可以模拟许多不同类型的负载,并且可以用于测试不同类型的应用程序,包括 Web 应用程序、数据库服务器、FTP 服务器、邮件服务器等。JMeter 可以帮助测试人员和开发人员在测试过程中识别应用程序的瓶颈和性能问题,以及分析应用程序的性能。

2、如何下载?

点击下载 Jmeter 5.5 版本,也可以自行访问官网下载页选择合适的 Jmeter 版本:https://jmeter.apache.org/download_jmeter.cgi

3、Jmeter 语言切换为中文简体

3.1、下载完成后解压压缩包

在 bin 目录下双击 jmeter.sh 可执行文件,Windows 系统的同学双击 jmeter.bat 文件启动。

3.2、切换语言

在菜单栏 Options 中选择 Choose Language 然后选中 Chinese (Simplified) 即可完成切换。

使用Jmeter压测HTTP、TCP请求

4、测试 HTTP 请求

4.1、添加线程组

线程组相当于一组测试请求的集合,当启动时,可以将组下面定义的所有请求并行进行测试。

使用Jmeter压测HTTP、TCP请求

4.2、配置线程组

实际上就是配置测试的请求次数,像如下的设置代表 10 秒内将会准备 100 个线程发起请求,只循环 1 次,如果循环次数勾选了永远,将会已 100 个请求 /10 秒一直循环下去。

使用Jmeter压测HTTP、TCP请求

4.3、添加 HTTP 请求取样器

使用Jmeter压测HTTP、TCP请求

4.4、GET 请求配置

使用Jmeter压测HTTP、TCP请求

4.5、POST 请求配置

同样也是先添加 HTTP 请求取样器再设置请求接口和请求参数。

使用Jmeter压测HTTP、TCP请求

4.6、添加监听器

监听器的作用就是获取测试结果,可以添加不同类型的监听器从多个维度分析请求结果。

4.6.1 添加查看结果树监听器

作用是可以单独查看每次请求的测试结果

使用Jmeter压测HTTP、TCP请求

4.6.2 添加聚合报告监听器

使用Jmeter压测HTTP、TCP请求

4.7、开始测试

使用Jmeter压测HTTP、TCP请求

点击启动后会弹出一个是否需要保存这个测试计划,点击 Yes 的话需要指定保存的磁盘位置,下次测试可以直接读取保存的文件家在测试计划,如果不需要保存点击 No 即可。

使用Jmeter压测HTTP、TCP请求

4.8、查看测试结果

可以看到我启动时线程组定义的是 10 个线程数,执行 1 秒。所以两个请求取样器每个发起 10 个请求,一共是 20 个请求结果。

查看结果树的报告中可以单独点击某一个请求查看请求结果,是根据发起请求的时间来升序排列的,点击单个请求后在右侧可以查看取样器结果、请求内容、响应内容。

使用Jmeter压测HTTP、TCP请求

为什么 Post 请求全部失败了呢?因为只要响应状态码不是 2xx 代表操作被成功接收,Jmeter 则认为此次请求是失败的。我们可以看一下响应内容报的是什么原因。

使用Jmeter压测HTTP、TCP请求

可以看到响应体提示不支持的 Media Type (媒体类型 用于声明随之而来的数据的格式。又称:MIME 类型、MIME Type、Content Type。 是一种用于在异构系统、网络之间传递信息时时声明其格式的方法。),所以有开发经验的同学会注意到,我们的请求体内容没有设置 content-type,默认是 application/x-www-form-urlencoded ,这是浏览器原生的 form 表单类型,或者说是表单默认的类型。我们的请求体是 JSON 字符串格式,需要设置一下 content-type 为 application/json。而设置 content-type 是一个属性,而且我们要指定的请求内容的类型,所以需要添加一个 HTTP 信息头管理器。

使用Jmeter压测HTTP、TCP请求

添加后就可以将 content-type 设置好,顺便说一句,如果接口设置了身份校验,需要请求头中携带 token 信息,也可以在这一并设置。

使用Jmeter压测HTTP、TCP请求

使用Jmeter压测HTTP、TCP请求

添加后,启动测试,发现接口响应成功。

使用Jmeter压测HTTP、TCP请求

查看聚合报告,聚合报告中对测试的请求进行了区分统计,可以查看到平均的响应时间 (单位均为毫秒)、TP99 的时间,请求异常比例,吞吐量等。

使用Jmeter压测HTTP、TCP请求

  • Label:请求的名称,就是我们在进行测试的 TCP sampler 的名称
  • Samples:总共发给服务器的请求数量
  • Average:单个请求的平均响应时间,单位是毫秒
  • Median:50% 的请求的响应时间
  • 90%Line:90% 的请求的响应时间
  • 95%Line:95% 的请求的响应时间
  • 99%Line:99% 的请求的响应时间
  • Min:最小的响应时间
  • Max:最大的响应时间
  • Error%:错误率 = 错误的请求的数量 / 请求的总数
  • Throughput:吞吐量即表示每秒完成的请求数
  • Received KB/sec:每秒从服务器端接收到的数据量
  • Sent KB/Sec:每秒从发送到服务器端的数据量

5、测试 TCP 请求

5.1、添加 TCP 请求取样器

使用Jmeter压测HTTP、TCP请求

使用Jmeter压测HTTP、TCP请求

5.2、TCP 取样器配置说明

TCPClient classname:

  • TCPClientImpl:以文本编辑器中所编辑的纯文本为内容进行发送,默认为这种
  • BinaryTCPClientImpl:以文本编辑器中所编辑的 16 进制字符(hex)内容为基础转换为二进制的 字节内容进行发送。
  • LengthPrefixedBinaryTCPClientImpl:在 BinaryTCPClientImpl 基础上默认以发送内容的长度为字节前缀进行填充, 数据包中前 2 个字节为数据长度。可在 bin/jmeter.properties 配置文件中 tcp.binarylength.prefix.length 设置。

Target Server:TCP 采样器中填写服务器地址、端口。

Connect:设置连接超时时间。

Response: 设置响应超时时间。

Re-use connection: 表示重复使用该连接发送请求。

Close connection: 表示每次发送完该条数据后,关闭连接。

End of line(EOL) byte value: 终止符。

比如项目中返回值转为 16 进制的时候如下: 7e800100050100019040011000000003010201447e 那么最后一个字节(8 位)应该是 7e 换算为 10 进制后为 126,那么在 eol 处设置为 126。

注意:终止符为一个字节,16 进制数大于 7F(127) 后,该 EOL 值为负数。

比如:如果服务器返回最后一个字节为 80,按单字节换成十进制为 -128,EOL 处的值要填写 -128。

如果响应内容不是 16 进制内容,是普通文本的话,就是最后一个字节对应的 ASCII 码。

5.3、开始测试并查看结果

可以看到响应状态码都是 500,代表响应发生错误,并且异常消息为:Response message:org.apache.jmeter.protocol.tcp.sampler.ReadException: Error reading from server, bytes read: 32,

使用Jmeter压测HTTP、TCP请求

但是查看响应数据发现实际上是响应成功了的,返回了正确的响应数据结果,其实原因是这个异常是 jmeter 自身抛出来的,我们都知道 TCP 请求不像 HTTP 定义了 1xx、2xx 这类的响应状态码,那是什么原因导致出现了异常呢?

使用Jmeter压测HTTP、TCP请求

答案是我们没有配置 End of line(EOL) byte value: 终止符,导致 jmeter 认为响应内容不完整从而抛出 ReadException。 我们的响应数据最后一位字节是 1 ,对应的 ASCII 码 是 49。所以我们去设置一下再启动测试。

使用Jmeter压测HTTP、TCP请求

最终测试结果:

使用Jmeter压测HTTP、TCP请求文章来源地址https://www.toymoban.com/news/detail-483528.html

到了这里,关于使用Jmeter压测HTTP、TCP请求的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Jmeter 对http接口压测

    Jmeter相对于Loadrunner来说,更轻,易于安装,如果对过程数据收集不多、测试场景不复杂的情况下,可以优先考虑。 Jemeter进行HTTP接口压力测试的具体使用步骤: 1、首先添加一线程组(即用户组:一个线程模拟一个用户行为,如果要模拟多个用户,则通过设置多线程来实现)

    2024年04月11日
    浏览(30)
  • Jmeter并发压测-自定义不同请求参数

    目录 背景 下载Jmeter 1. 更改语言 2. 创建线程组 3. 添加变量 3. 创建Http接口 4. 创建察看结果树 5. 执行结果 虽然可以请求相同的接口做测试,但是请求参数每次都是相同的。为了模拟不同的用户,请求不同的参数,所以要自定义参数来做多线程并发压力测试。 https://jmeter.apac

    2024年02月04日
    浏览(33)
  • HarmonyOS开发:基于http开源一个网络请求库

    网络封装的目的,在于简洁,使用起来更加的方便,也易于我们进行相关动作的设置,如果,我们不封装,那么每次请求,就会重复大量的代码逻辑,如下代码,是官方给出的案例: 以上的案例,每次请求书写这么多代码,在实际的开发中,是无法承受的,所以基于此,封装

    2024年02月06日
    浏览(42)
  • JMeter 5.6多个http接口进行压测

    目录 1.安装下载 2.启动JMeter 2.1新建线程组 2.2新建HTTP信息头管理器 2.3新建用户定义的变量 2.4新建临界部分控制器 2.4.1新建【创建流程实例】HTTP请求 2.4.1.1新建响应断言 2.4.2新建【查询待办任务1】HTTP请求 2.4.2.1新建响应断言 2.4.2.2新建JSON提取器 2.4.3新建【流程初审】HTTP请求

    2024年02月09日
    浏览(33)
  • 用JMeter对HTTP接口进行压测(一)压测脚本的书写、调试思路

    Mac OS下使用Homebrew安装 安装完毕之后,确保jmeter和groovy没问题 直接启动JMeter 查看groovy版本 在JMeter中使用脚本语言有BeanShell和Groovy,因为Groovy和Java更相近,所以选择Groovy。虽然以前没接触过Groovy,但是靠着IDE和官方文档、Google上手还算顺利。 因为是需要 对整条业务流程进行

    2024年02月07日
    浏览(31)
  • jmeter创建一个压测项目

    1.jemeter新建一个项目: 2.接下来对Thread进行描述,也可以先使用默认的Thread进行操作。 3.添加http请求头的信息。按照如图所示操作 4.在请求头里面添加必要的字段,可以只填必要字段就可以 5.添加Http请求信息,如下图,图中需要勾选的要和我这个一样,不然可能有些错误

    2024年02月13日
    浏览(29)
  • postman导入请求到jmeter进行简单压测,开发同学一学就会

    这个事情也是最近做的,因为线上nginx被我换成了openresty,然后接入层服务也做了较大改动,虽然我们这个app(内部办公类)并发不算高,但好歹还是压测一下,上线时心里也稳一点。 于是用jmeter简单压测下看看,这里记录一下。 这次也就找了几个接口来压:登录接口、登录

    2024年04月25日
    浏览(30)
  • 【JMeter】JMeter压测过程中遇到Non HTTP response code错误解决方案

    压测过程中并发逐步加大后遇到60%的错误率,查看错误是JMeter网页版聚合报告中显示 这是第二次遇到,故把解决方案记录下来,供大家参考 1、先检查下tcp  port  range 是否在合理范围内       1024 65535为centos合理范围,不合理则需要作出修改 2、调低端口释放后的等待时间,

    2024年02月04日
    浏览(35)
  • 如何进行JMeter分布式压测?一个案例教你详细解读!

    目录 引言 一、什么是压力测试? 二、什么是分布式测试? 三、为什么要使用分布式压力测试? 四、主流压力测试工具对比 五、Jmeter分布式压测原理 六、Jmeter分布式压测前的准备工作 七、阿里云服务器上进行分布式压测 八、系统架构学习 当前快速发展的互联网应用领域,

    2024年02月08日
    浏览(50)
  • “jmeter使用xpath提取器获取请求响应中的value值作为下一个请求的输入”案例

    使用jmeter5.2.1的xpath提取器获取请求响应结果中值作为下一个请求的输入,并在Bean Shell后置处理器中编写通过日志打印 XPath提取器 提取的内容。 提取内容为请求响应结果中的 input type=\\\"hidden\\\" name=\\\"execution\\\" value=\\\"a6cd.........................................................\\\" ,需要提取的为 v

    2023年04月11日
    浏览(68)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包