zoukankan      html  css  js  c++  java
  • Jmeter4.0之TCP 压测

    前提:IP、端口号、入参、响应数据  开发都提供好。

    一.步骤

    1.新建线程组,并add -->Sampler-->TCP Sample

    2.在TCP取样器中,设置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基础上默认以发送内容的长度以字节前缀进行填充)

    (2)服务器IP和端口号:输入自定义的-开发提供,如下图  

    (3)Text to send:待发送的数据报文 -开发提供,如下图中要发送的文本(16进制)

    3.下载第三方的TCP插件包ApacheJMeter_tcp.jar,并放置在jmeterapache-jmeter-4.0libext目录下

    4.修改jmeter.properties 配置文件(路径apache-jmeter-4.0in下)

      搜索tcp 搜索到#tcp.handler=TCPClientImpl  是被注释掉的 在下面新增一行,如下:

            tcp.handler=BinaryTCPClientImpl   保存文件,并重启Jmeter

    5.最最重要的一点  End of line(EOL) byte value  值的设置

    因为响应数据是以05结尾的(16进制), 需要将其转换为10进制,所以此处的值应该设置为5

      

     以下重要概念来源请看这里    https://www.cnblogs.com/bf-blackfish/p/10579867.html  (写的很详细,解决了我的问题!!!)

     

     6.单线程接口运行成功

    二.遇到的坑:

    1.text  to send   输入的16进制  不能换行 换行会报错Response message: java.lang.IllegalArgumentException: Hex-encoded binary string contains an uneven no. of digits

      解决办法:删除掉多余的空行

    2.End of line(EOL) byte value  该值不设置或者设置的不对  报500  jmeter.protocol.tcp.sampler.TCPSampler: org.apache.jmeter.protocol.tcp.sampler.ReadException:而且服务器一直没给返回,

      解决办法:文本结束符,非常重要 End of line(EOL) byte value:响应数据的最后2位,转换为10进制的值。取值区间[-128,127]

    3.要想每一个tcp请求结束后关闭掉链接,不然服务器上会显示多个链接,一直没释放

       解决办法:勾选close connection:一个取样器就只会用一个tcp连接,也就是发送完报文以后,就关闭tcp连接。

    4.建议设置超时时间和长连接(没用到  可以关注下)

           Timeouts:设置请求和响应的超时时间,超时的话会报500错误。它决定了在你没有输入End of line 的时候,什么时候断开tcp连接。如果没有填写的话就会一直在这里,

      Re-use connection:在一个线程里,复用一个连接,在要求TCP长连接的时候需要用到这个。

    5.Test Action(试了下   没仔细研究)

      在jmeter使用过程中,接口之间相关关联,而有些接口响应时间较长,导致下个接口执行时,可能未能获取到需要的信息。这个时候需要对上个接口做延时处理,就用到Test Action。

    6.响应断言

      勾选Main sample only   、响应文本 要测试的模式中,输入 响应数据

      

  • 相关阅读:
    k8s podpreset 参数注入
    python pipenv 包管理
    使用火狐浏览器访问双向认证的k8s api
    k8s api
    常用的排序算法的时间复杂度和空间复杂度
    flask 启动
    Redis系列-第四篇持久化与事务
    Redis系列-第五篇分布式锁与主从复制
    Redis系列-第六篇哨兵模式
    Docker系列-第一篇Docker简介
  • 原文地址:https://www.cnblogs.com/eosclover/p/13720894.html
Copyright © 2011-2022 走看看