基于Socket协议的系统性能测试案例解析

2020-10-09 11:07郑永刚
数字技术与应用 2020年8期

郑永刚

摘要:本文选用Jmeter测试工具,对基于Socket通信协议的系统进行性能测试。主要针对测试脚本编写的流程和注意事项进行说明,对分布式部署的流程进行整理,并对分布式测试过程中的注意事项进行总结。可以很好地指导初次使用用户进行测试工作。

关键词:Jmeter测试;分布式部署;Socket通信协议

中图分类号:TP393.04 文献标识码:A 文章编号:1007-9416(2020)08-0051-03

本文以8000用户同时向物联网平台上传燃气表数据为例,对基于Socket通信协议的系统性能测试进行案例解析。在8000用户中,4000用户上告正常数据,4000用户上告异常数据,数据同时上传时,监控服务器资源性能指标。

本例选用Jmeter进行分布式部署对系统性能进行测试。Jmeter是一款完全免费的开源软件,提供了方便的图形界面来编辑和开发测试脚本,支持http、jdbc、ldap、soap、jms、ftp、Socket 等协议,通过线程组,能够轻易的设置不同测试的并发用户,可以轻易在Windows、Linux和Mac上运行,进行功能、性能和分布式测试。

1 单机脚本的调试

Jmeter不但可以测试HTTP/HTTPS的请求,还可以测试Socket协议的请求。对于HTTP/HTTPS的请求,可以通过Badboy或者Jmeter录制,对于Socket协议的请求需要通过Jmeter录制或手动编写的方法完成脚本。本文使用的测试机为Win7系统,Jmeter 5.0,JDK 1.8,录制详细部署环境如下:

(1)修改Jmeter的配置文件。

文件位置:D:\Jmeter\apache-jmeter-5.0\bin\ jmeter.properties[1]

修改TCP Sampler,如图1即可。

(2)在Jmeter中新建TCP采样器,如图2所示。

(3)配置取样器参数,如图3所示。

名称:随便写;

TCPClient classname:处理二进制,和配置文件一致,BinaryTCPClientImpl;

服务器名称或IP:要测试的ip地址;

端口号:服务器,要测试系统的端口;

End of Line:结束符,文本最后两位十六进制数转成十进制之后的数值,即结束码的二进制数据,例如字串结束符是16时,此处填写22;

要发送的文本:直接复制要发送的二进制数。

(4)运行Jmeter,完成Socket测试。

2 分布式部署

当Jmeter处理高并发,一台机器调用JVM不够测试时,可以使用分布式的形式来进行分压,分布式简单的说就是由一台控制机去启动Jmeter配置相关参数后,通过JAVA的RMI(Remote Method Invocation)远程到其他机器(执行机)进行负载。分布式部署步骤如下:

(1)控制机和执行机的Jmeter和JDK版本尽量保持一致,环境配置得配好(Jmeter 5.0,JDK 1.8);

(2)双击打开控制机中bin目录下的create-rmi-keystore.bat,填寫完相关信息后,回车,会产生rmi_ keystore.jks文件,将此文件拷贝到执行机的bin目录下;

(3)找到执行机中bin目录下的jmeter.properties,打开jmeter.properties,对如下三处进行修改:

remote_hosts=192.168.1.10(本机IP)

server_port=1099(端口号)

server.rmi.ssl.disable=true(改false为true)

(4)双击启动jmeter-server.bat ,启动完后如图4所示。

(5)回到控制机,找到jmeter.properties,和执行机类同,先改两项:

server_port=1099(默认端口号)

server.rmi.ssl.disable=true(改false为true)

另外,remote_hosts=192.168.1.10:1099(执行机器的ip:端口),若还有更多执行机之间以英文逗号隔开。设置完之后找到jmeter-server.bat双击打开。

(6)打开jmeter.bat已经设定好的脚本:

假设设置的线程数是1,那么有N台执行机的话,实际并发数是N*1。

选择远程启动单台测试机,如图5所示:(进行单个测试)

选择远程启动所有测试机,如图6所示:(所有机器一起启动)

控制机显示:

找到jmeter.properties,取消mode=Standard 注释后可在控制机看到响应数据。

(7)此案例选用一台控制机和四台执行机的部署,其中两台执行机上告正常数据,两台执行机上告异常数据。

(8)注意事项:本文上传的数据存放在csv文件中,应在每台测试机中存放相同的数据,并和控制机中文件路径保持一致。

本文使用Jmeter测试工具,选取基于Socket通信协议的物联网管理平台上传数据作为性能测试点,对单机脚本调试和分布式部署的流程进行详细说明,并对其中涉及到的注意事项进行总结,能够准确可靠地测试系统的性能。