IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 用jmeter压测tcp -> 正文阅读

[网络协议]用jmeter压测tcp

在工作中有个接口是tcp协议的,然后需要压测一下,就想到jmeter有现成的tcp取样器,搜了一下,压测流程大致和http差不多,需要注意的是tcp请求的一些设置,在此记录一下~

最开始的基础配置

1.根据需求改一下配置文件,根据需求看看自己要发的是哪一种请求,直接在配置文件里搜索一些tcp,设置成对应的参数,
在这里插入图片描述在这里插入图片描述

参数的意思:
TCP Sampler提供了3个报文编码类型的实现,分别是

org.apache.jmeter.protocol.tcp.sampler. TCPClientImp

org.apache.jmeter.protocol.tcp.sampler. BinaryTCPClientImpl

org.apache.jmeter.protocol.tcp.sampler. LengthPrefixedBinaryTCPClientImpl

1)TCPClientImpl以文本编辑器中所编辑的纯文本为内容进行发送。—这个是默认的,如果就是这个就不用改了

2)BinaryTCPClientImpl以文本编辑器中所编辑的16进制字符(hex)内容为基础转换为二进制的 字节内容进行发送。

3)LengthPrefixedBinaryTCPClientImpl在BinaryTCPClientImpl基础上默认以发送内容的长度为 字节前缀进行填充

需要注意的是,配置完需要重启一下 生效。

配置完开干

2.我按需求改成第3个参数,兴致勃勃的发起请求,结果链接失败,请教了开发,原来我们这个接口参数前面还加了一些参数,总之如果在tcp请求你去弄就是超级麻烦,所以我就换了个思路,用beanshell处理器先处理要请求的数据,再在tcp请求里直接引入就好了。。

处理的数据是把字符串转换成十六进制的,然后也是直接在放入数据时这一步参数化了(我看还有一种方法是直接把数据转换好放在csv里。。也可以嘛,都行)

String json ="xxxxx";

public static String toHexString(String str){
        StringBuffer hexString = new StringBuffer();
        for (int i = 0; i < str.length(); i++) {
            int ch = (int) str.charAt(i);
            String strHex = Integer.toHexString(ch);
            hexString.append(strHex);
        }
        return hexString.toString();
    }
vars.put("data", toHexString(json));

在这里插入图片描述
在beanshell里面处理完拿到data数据,再在tcp取样器中直接用了,就直接用了它默认的报文编码类型,然后就看到客户端调用成功了。
在这里插入图片描述

调通以后踩到的坑

3.虽然调用成功,但是我发现多发几次明明客户端收到请求也正常返回了,但是取样器结果Response code:500
百度了一些说因为未配置 「结束符」 所致,只有当客户端在取响应流中读到 「结束符」 才会认为本次业务完成,否则会一直阻塞,直到流被关闭。
useEolByte这个字段 ,配置一下,比如我这个请求是十六进制,最后两位是0a,那么这个需要转换成十进制的,就是 10

在这里插入图片描述
给它填上,每次请求完,就直接结束,不会再阻塞了。
一个转换的工具网页https://tool.oschina.net/hexconvert/
在这里插入图片描述

一些思考

4.然后因为我就压这一个接口,所以正常压就可以了。但是如果是多个tcp接口压测可能就不是这么简单了,(因为它要握手握手握手不知道啥时候松手),百度了一下,大概是这样的:如果有很多tcp接口,且都是有规律的,可以在Re-use connection和关闭链接这里设置一下,:
其他的都勾选Re-use connection, 表示大家都可以共用一个socket,最后一个勾关闭链接,tcp执行完就关闭了
在这里插入图片描述

如果不知道参数长啥样

5.最开始我不确定我发的这个tcp协议的请求是长啥样的,也用了一下wireshark,平时都用的fiddler,很久很久没测过http协议以外的了,但是tcp还得用这个小鲨鱼才抓得到,打开数据实在太多了,可以用过滤器筛选想要的数据,直接筛选tcp协议的端口吧
tcp.port==XXX

找到直接要的那条数据,右键追踪流,然后点tcp流

在这里插入图片描述
弹出来一个框框,把下面的数据改成原始数据,然后就能拿到这个tcp协议本来的样子了,
在这里插入图片描述
复制出来,放在tcp工具里调用一下,能调通就说明拿对了,然后再在jmeter里调吧~


笔记大概就这么多吧。。如果后面还有再继续写上来

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-09-30 01:21:54  更:2022-09-30 01:22:01 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年4日历 -2024/4/26 1:25:45-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码