利用Jmeter进行分布式部署对系统性能进行测试

漏洞分析 5年前 (2020) 阿Q
2,145 0

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

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

一、单机脚本的调试

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
修改TCP Sampler,如下图就可以了

2:在Jmeter中新建TCP采样器

3:名称:随便写
TCPClient classname:处理二进制,和配置文件一致,BinaryTCPClientImpl;
服务器名称或IP:要测试的ip地址;
端口号:服务器,要测试系统的端口;
End of Line:结束符,文本最后两位十六进制数转成十进制之后的数值,即结束码的二进制数据,例如字串结束符是16时,此处填写22;
要发送的文本:直接复制要发送的二进制数。

4:运行Jmeter就完成简单的Socket测试。

二、分布式部署

当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)
搜rmi.ssl.disable=false,取消注释,修改false为true,
4. 双击启动jmeter-server.bat ,启动完后如下图:

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
选择远程启动:(进行单个测试)

选择远程启动所有:(所有机器一起启动)

控制机显示:
找到 jmeter.properties,取消mode=Standard 注释后可在控制机看到响应数据。
7. 此案例选用一台控制机和四台执行机的部署,其中两台执行机上告正常数据,两台执行机上告异常数据
8. 注意事项:本文上传的数据存放在csv文件中,应在每台测试机中存放相同的数据,并和控制机中文件路径保持一致。
本文使用Jmeter测试工具,选取基于Socket通信协议的物联网管理平台上传数据作为性能测试点,对单机脚本调试和分布式部署的流程进行详细说明,并对其中涉及到的注意事项进行总结,能够准确可靠地测试系统的性能。

版权声明:阿Q 发表于 2020-04-09 00:13。
转载请注明:利用Jmeter进行分布式部署对系统性能进行测试 | 安全库

相关文章