1、jmeter在windwos上压测TCP协议
来看看脚本:
参数填写介绍如上图基本我们就是要注意红框里的几处即可,下面分别做一个介绍。
- TCPClient classname有三种设置:
- TCPClientImpl:文本数据
- BinaryTCPClientImpl:传输二进制数据,指定包结束符。
- LengthPrefixedBinaryTCPClientImpl:数据包中前2个字节为数据长度。可在bin/jmeter.properties配置文件中tcp.binarylength.prefix.length设置
- 服务器ip和端口:应该不用多说了,根据实际情况填写即可;
- Timeouts:最大连接时间和响应时间,一旦超时就被当做失败。(一般不设置)
- Re-use connection:TCP长连接,一个线程里,复用这个连接(常用)
- End of line(EOL) byte value:响应数据的最后2位,转换为10进制的值。取值区间[-128,127] 因为TCP长连接是不会断开的,我们需要从响应数据来判断并告知TCP取样器这次请求已经获得了数据/响应成功,然后运行其他线程 例如:响应数据为“F000”,最后2位是“00”,所以这里填入“0” 如果不知道返回数据,可以调测。因为没有设置EOL所以在运行后,自行点击stop。然后在“查看结果树”的响应数据中查看数据。 再如果,这个长连接就是没有数据返回,那就磨着开发给个返回值,毕竟我就是这样做的~哈哈。以后发现其他解决方法更新这里
- 要发送的文本:这个文本需要开发提供
- 坑1:十六进制数之间不能有空格(报错:Response message: java.lang.IllegalArgumentException: Hex-encoded binary string contains an uneven no. of digits)
- 坑2:不能有换行(报错:Response message: java.lang.IllegalArgumentException: Hex-encoded binary string contains an uneven no. of digits)
2、jmeter在linux上压测TCP协议
1)检查java是否安装:
命令:java -version
2)安装jmeter:
1.下载:apache-jmeter-5.xxx.tgz,上传到服务器;(同时本地也要保留一份,以后会用到的)
2.然后解压到当前传的目录:jmeter
tar zxvf apache-jmeter-5.xxx.tgz jmeter
3.然后把解压的文件配置到对应的环境变量:
export JMETER_HOME=/root/jmeter(根据目录改)
export CLASSPATH=$JMETER_HOME/lib/ext/ApacheJMeter_core.jar:$JMETER_HOME/lib/jorphan.jar:$CLASSPATH
export PATH=$JMETER_HOME/bin:$PATH:$HOME/bin
4.source /etc/profile 目的让配置文件生效
5.[[email protected] ~]# jmeter -v
出现上图所示的图片代表jmeter安装成功
3)执行命令运行脚本:
将windows上通过jmeterGUI模式调试通过的脚本(.jmx格式的脚本)复制到Linux上的目录下:
cd命令进入到jmeter安装目录下的bin目录下:
./jmeter -n -t ../../script/TCP_Sampler.jmx -l ../../script/result/test.jtl
4)test.jtl文件是生成的报告可以导出到windows,然后用jmeter的聚合报告打开
今天采了两个坑:执行下来错误是100%,采样都是0,导出到windwos上都能执行成功:
网上解决方法有二
1)
在linux的jmeter脚本中加了一个BeanShell PostProcessor
prev.setDataEncoding("UTF-8");
String response_data = prev.getResponseDataAsString();
log.error("response_data----------------:"+response_data);
打印出来发现乱码了
最后通过修改jmeter的bin目录下面的jmeter.properties文件
- #sampleresult.default.encoding=ISO-8859-1修改成:
sampleresult.default.encoding=utf-8(这个方法我没成功)
2)windows中的jmeter把脚本的路径改成反斜杠,想让linux识别,但是JMeter改不成功,后来直接在脚本里面改好了,意思就是把参数文件中路径的 斜杠改成反斜杠,(用这个方法结果成功了)