Jmeter tcp 压测实践

项目需要针对socket协议接口进行性能测试。选定了比较熟悉的 Jmeter 工具,现记录下过程。

新建 Tcp Sampler

Jmeter 提供了3个Tcp实现类:

  ·TCPClientImpl。这是实现文本消息交换的基本类。在TCP取样器中,Text to send字段提供不同字符集的文本常量或可变字符串信息。

  · BinaryTCPClientImpl。这是一个用于实现文本信息交互的类。Text to send字段中提供十六进制编码的二进制文本常量或变量信息。

  · LengthPrefixedBinaryTCPClientImpl。这个类跟上一个的类似,但是在发送数据之前会加一个二进制的字节长度数据前辍。

  个人选择了 BinaryTCPClientImpl, 因为项目使用的协议报文是二进制,不是字符串,而且二进制转十六进制也很容易,后续都以此为例进行测试。

  配置 TCP Sampler

vim  /{jmeter}/bin/jmeter.properties
  # 启用 BinaryTCPClientImpl 
  tcp.handler=BinaryTCPClientImpl

 重启Jmeter 即可发送16进制参数进行请求。

  连接一直阻塞

  运行测试任务发现: 后台正常收到请求、处理并返回数据,但客户端 socket 连接一直被阻塞,无法进行后续请求及统计性能。

  搜索知是因为未配置 「结束符」 所致,只有当客户端在取响应流中读到 「结束符」 才会认为本次业务完成,否则会一直阻塞,直到流被关闭。

  Jmeter 配置文件中关于结束符的描述:

# eolByte = byte value for end of line
  # set this to a value outside the range -128 to +127 to skip eol checking
  #tcp.eolByte=1000

BinaryTCPClient 源码:

注意 BinaryTCPClient 的「结束符」配置是: tcp.BinaryTCPClient.eomByte, 与配置文件列的不一样。

vim /{jmeter}/bin/jmeter.properties
  # 添加结束符
  tcp.BinaryTCPClient.eomByte=-128

 注意这个配置是10进制的数,需要根据响应报文转化得到。

再看源码对 「结束符」的判断:

·useEolByte 只有在值为 -128 ~ +127 之间时才为 true。

  · 对于结束符的判断,只在流的结尾处判断最后一个字节是否与为 配置的值。如果是就结束,不是就继续循环。

  · 如果自己的业务响应报文结尾不符合 -128 ~ +127 这个范围,那么只能在正常报文尾部再添加一个 符合的字节,我们项目就是这种情况。

  一个业务需单socket多次收发数据

  我们的一个业务需在 一个socket 建立后,与后台进行3次有依赖顺序的通信才算完成。

  方法:使用 Re-use connection 和 close connection 组合。

  · Re-use connection: 表示在一个线程循环内的 tcp sampler 是否可重用同一个socket连接,即共用一个socket。

  · close connection: 表示完成本次请求后是否关闭socket,如果关闭,则下一个 tcp sampler 会重新创建 socket

  新建多个 tcp sampler:

  · 每个都勾选Re-use connection, 表示大家都可以共用一个socket

  · 只有最后一个tcp sampler 勾选 close connection,这样上面的 socket 会延续下来继续使用,完成最后交互后,关闭socket,进行下一轮循环业务时,又会创建新的socket

  获取完整业务的统计数据

  使用 jmeter 事物

​现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:485187702【暗号:csdn11】

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走! 希望能帮助到你!【100%无套路免费领取】

  • 22
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值