jmeter在windwos和linux上压测TCP协议

1、jmeter在windwos上压测TCP协议

来看看脚本:

jmeter在windwos和linux上压测TCP协议_第1张图片

参数填写介绍如上图基本我们就是要注意红框里的几处即可,下面分别做一个介绍。

  1. TCPClient classname有三种设置:
    • TCPClientImpl:文本数据
    • BinaryTCPClientImpl:传输二进制数据,指定包结束符。
    • LengthPrefixedBinaryTCPClientImpl:数据包中前2个字节为数据长度。可在bin/jmeter.properties配置文件中tcp.binarylength.prefix.length设置
  2. 服务器ip和端口:应该不用多说了,根据实际情况填写即可;
  3. Timeouts:最大连接时间和响应时间,一旦超时就被当做失败。(一般不设置)
  4. Re-use connection:TCP长连接,一个线程里,复用这个连接(常用)
  5. End of line(EOL) byte value:响应数据的最后2位,转换为10进制的值。取值区间[-128,127] 因为TCP长连接是不会断开的,我们需要从响应数据来判断并告知TCP取样器这次请求已经获得了数据/响应成功,然后运行其他线程 例如:响应数据为“F000”,最后2位是“00”,所以这里填入“0” 如果不知道返回数据,可以调测。因为没有设置EOL所以在运行后,自行点击stop。然后在“查看结果树”的响应数据中查看数据。 再如果,这个长连接就是没有数据返回,那就磨着开发给个返回值,毕竟我就是这样做的~哈哈。以后发现其他解决方法更新这里
  6. 要发送的文本:这个文本需要开发提供
    • 坑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.[root@yace01 ~]# jmeter -v

jmeter在windwos和linux上压测TCP协议_第2张图片

出现上图所示的图片代表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改不成功,后来直接在脚本里面改好了,意思就是把参数文件中路径的 斜杠改成反斜杠,(用这个方法结果成功了)

你可能感兴趣的:(性能测试)