问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

JMeter进行TCP压力测试的脚本编写指南

创作时间:
作者:
@小白创作中心

JMeter进行TCP压力测试的脚本编写指南

引用
CSDN
1.
https://m.blog.csdn.net/abcmiao123456/article/details/141210372

本文介绍了使用JMeter进行TCP压力测试的脚本编写方法,包括适用场景、配置步骤以及关键参数的设置。特别对结束符的计算方法进行了深入讲解。

适用场景

  1. Socket连接,TCP传输
  2. 客户端向服务器发送「十六进制格式文件」
  3. 特别注意结束符的填写
  4. 本文重点阐述tcp压测脚本的编写,压测结果如果分析等问题后续分享

如何配置

  1. 基础插件安装不再赘述
  2. 压测脚本编写

2.1 创建线程组、线程配置

用户数、执行次数、执行时间等根据实际业务场景填写。


2.2 添加TCP取样器

2.3 配置TCP取样器

如下图所示:

  1. TCPClient classname:org.apache.jmeter.protocol.tcp.sampler.TCPClientImpl
    TCPClient classname 该参数一般有三个值设置:
  • org.apache.jmeter.protocol.tcp.sampler.TCPClientImpl(以文本编辑器中的纯文本作为内容发送)
  • org.apache.jmeter.protocol.tcp.sampler.BinaryTCPClientImpl(以文本编辑器中所编辑的16进制字符(hex)内容为基础转换为二进制的字节内容进行发送)
  • org.apache.jmeter.protocol.tcp.sampler.LengthPrefixedBinaryTCPClientImpl(在BinaryTCPClientImpl基础上默认以发送内容的长度以字节前缀进行填充)

因为我们是16进制报文,所以选择org.apache.jmeter.protocol.tcp.sampler.BinaryTCPClientImpl

  1. ServerName or IP Port Number:这里输入主机服务器IP地址和端口号
  2. Connect:设置连接超时时间。
  3. Response:设置响应超时时间。
  4. Re-use connection:表示是否重复使用该连接发送请求,如果勾选,表示可以共用一个socket
  5. Close connection:表示每次请求后是否关闭socket,如果关闭,则下一个tcp sampler会重新创建socket

7. End of line(EOL) byte value:终止符,表示tcp请求的结束符。只有当客户端在取响应流中读到结束符才会认为本次业务完成,否则一直阻塞,直到流被关闭。

如上图,根据服务器返回值截取最后一个字节,注意16进制,应该是两个字符。那么最后一个字节(8 位)应该是 9b 换算为十进制后为 155( 提供一个换算工具:在线进制转换),因为这个结束符只有在-128到127之间才有效,而我们的结尾字节算出来是155超过了支持的范围,超过范围的计算步骤如下:以十六进制9b,十进制155为例

(1)计算标记位的二进制--10011011
(2)计算该二进制的补码(最高位-符号位为1表示这是一个负数,0表示正数,负数的补码为符号位不变,数据位取反后加1;正数反码、补码是其本身
10011011的数据位取反为 1 1100100 再加1后为1 1100101(其中最高位1为符号位)
(3)计算步骤2中的数据位1100101的十进制为101,符号位1为负数,因此最终计算结果为-101

  1. 配置断言、结果查看等
  2. 以上全部配置完成就可以执行压测了

本文原文发布于2024年8月,技术内容虽然相对稳定,但考虑到工具版本更新等因素,建议在使用时注意内容时效性。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号