首先安装有jmeter以及配置好安装环境

安装和配置环境这里不细讲!
jmeter的下载地址:https:// jmeter.apache.org
JDK下载地址:https://www.oracle.com

jmeter添加tcp取样器做设备压测

#第一次遇到要做产品设备的压测,接到需求:做设备上传TCP请求的压力测试,本人对jmeter不太熟悉。而且还要第一次做tcp的请求。虽然没接触过过但是网上文章很多但是很杂但是一些基础还是有设置教程。今天整理一份对产品硬件向服务器发送十六进制报文请求登录心看跳返回希望对大家有帮助!

一:先看一个完整的流程

1.jmeter添加线程组并添加tcp取样器

使用JMeter发送topic timestamp jmeter发送tcp请求_jmeter


2.输入参数(重点讲这里的参数设置);

使用JMeter发送topic timestamp jmeter发送tcp请求_压测_02


3.请求成功;

使用JMeter发送topic timestamp jmeter发送tcp请求_配置文件_03

罗列图二中的解释

TCPClient classname:表示处理请求的类,默认是TCPClientImpl类.因为我是发送16进制报文就选择填入:org.apache.jmeter.protocol.tcp.sampler.BinaryTCPClientImpl

ServerName or IP Port Number:这里输入主机服务器IP地址和端口号

Re-use connection:如果选中,这个链接处于保持打开状态,不选中就是读取数据后就关闭,一般我是直接勾选这个就行。

Close connection:若选中,这个链接将会在运行中取样器之后被关闭

SO_LINGER:enable/disable(启用/禁用)这个SO_LINGER设置特定的值,单位为秒,(个人对这个不是太理解)

End of line (EOL) by value:表示结束符,如果设置值在-128到127之外将会跳过eol 检查,可以在jmeter.properties文件中增加属性eolByte进行设置。(可以不填写

Connect TimeOUt:连接超时可以自己设置tcp请求连接的超时时间(单位毫秒,0 表示禁用超时)

Response Timeout:请求响应超时,与请求连接是一样的设置(单位毫秒,0 表示禁用超时)

Set NoDelay:若选中,它将会禁用Nagle’s算法(利用缓存功能)

Text to Send: 发送文本信息,这填入16进制报文(注意:不能留空格

Login User:用户名-可不填

Password:密码-可不填

配置jmeter文件

1.要发送一个tcp请求要设置jmeter中的配置需要修改bin目录下的jmeter.properties文件将tcp.handler=BinaryTCPClientImpl显示,若配置文件没有这一项就自己添加进来保存。(我自己的就没有显示所以这个是我自己添加进来的)

使用JMeter发送topic timestamp jmeter发送tcp请求_jmeter_04


2.配置文件更改好之后重启jmeter并填入上面的粗体信息,添加结果树和聚合报告一个简单的tcp压测就完成了一般是能正常返回若是响应码在400-499或者500-599之前都是响应失败的。

二:问题解决

下面是我遇到的一些问题和解决的办法

发起tcp请求之后,请求没有停止,一直是发情请求的状态。

使用JMeter发送topic timestamp jmeter发送tcp请求_配置文件_05


只能强制停止该请求但是响应肯定是错误的。

使用JMeter发送topic timestamp jmeter发送tcp请求_jmeter_06


这个问题困扰了我一天,因为这是设备请求成功之后会不断与服务器进行一个心跳的交换,表示设备在线,没有固定的返回值没法判断,所以需要开发人员配合在服务器的响应返回值中的末尾添加一个固定的返回值并在发请求的End of line (EOL) by value中添加结束符进行响应验证,(注意:响应的结束符是16进制的这里要转成十进制数字填入)响应末尾设置固定返回值是转换成十进制后范围在-128到127之间

使用JMeter发送topic timestamp jmeter发送tcp请求_16进制_07


在End of line (EOL) by value中转换成十进制填写在发送请求就成功了!!

使用JMeter发送topic timestamp jmeter发送tcp请求_配置文件_08


随笔日记。(亲测有效!有理解错误的地方多多纠正,希望我的经验对大家有帮助!)