美文网首页
分布式Jmeter测试高性能UDP服务

分布式Jmeter测试高性能UDP服务

作者: 一帅 | 来源:发表于2018-07-30 17:59 被阅读0次

一般来说,我们在测试服务器性能的时候,只需要本地跑一个Jmeter进程就可以把应用程序的性能上限给压测出来。但那是对普通服务。如果是对高性能服务的话,一台Jmeter机器远远压测不到服务的上限。所以我们需要分布式Jmeter

分布式Jmeter原理

如下图


分布式Jmeter原理
  1. Jmeter分布式测试时,选择其中一台作为调度机(master),其它机器做为执行机(slave)。
  2. 执行时,master会把脚本发送到每台slave上,slave 拿到脚本后就开始执行,slave执行时不需要启动GUI,我理解它应该是通过命令行模式执行的。
  3. 执行完成后,slave会把结果回传给master,master会收集所有slave的信息并汇总。

不过要注意以下几点

  1. 每一台jmeter远程服务器(slave机器)都执行相同的测试计划,jmeter不会在执行期间做负载均衡,每一台服务器都会完整地运行测试计划
  2. 采用JMeter远程模式并不会比独立运行相同数目的非GUI测试更耗费资源。但是,如果使用大量的JMeter远程服务器,可能会导致客户端过载,或者网络连接发生拥塞;
  3. 默认情况下,master机器是不执行参与生成并发数据的;
  4. 调度机(master)和执行机(slave)最好分开,由于master需要发送信息给slave并且会接收slave回传回来的测试数据,所以mater自身会有消耗,所以建议单独用一台机器作为mater

环境拓扑结构

如下图:1个master(192.168.171.128) 2个slave(192.168.171.131 192.168.171.133) 这些都是虚拟机ip;
Target是部署于同一个局域网中的UDP服务器(10.100.50.127)


环境拓扑图

前提条件

  • 关闭所有Jmeter宿主机的防火墙
  • 所有Jmeter宿主机在同一个局域网中
  • 尽量保证所有宿主机的JDK版本以及Jmeter版本是一样的
  • Jmeter4.0中需要配置SSL

下面我们来演示一下如何配置SSL

$ cd jmeter/bin
$ ./create-rmi-keystore.sh
What is your first and last name?
  [Unknown]:  rmi
What is the name of your organizational unit?
  [Unknown]:  My unit name
What is the name of your organization?
  [Unknown]:  My organisation name
What is the name of your City or Locality?
  [Unknown]:  Your City
What is the name of your State or Province?
  [Unknown]:  Your State
What is the two-letter country code for this unit?
  [Unknown]:  XY
Is CN=rmi, OU=My unit name, O=My organisation name, L=Your City, ST=Your State, C=XY correct?
  [no]:  yes

Copy the generated rmi_keystore.jks to jmeter/bin folder or reference it in property 'server.rmi.ssl.keystore.file'

如果是在windows上,则执行bin/create-rmi-keystore.bat。执行完成后会生成一个文件rmi_keystore.jks。圣后这个文件后,保证每一个Jmeter宿主机上都使用的是这个文件

配置环境

所有的宿主机都要安装Jmeter并配置环境变量

1.将Jmeter压缩包上传到所有的宿主机上。解压后的目录为/opt/software/jmeter/apache-jmeter-4.0


路径

2.配置环境变量

第一步:vi /etc/profile

export JMETER_HOME=/opt/software/jmeter/apache-jmeter-4.0
export PATH=$PATH:$JMETER_HOME/bin

第二步:
source /etc/profile

配置好之后需要测试一下

jmeter -v
    _    ____   _    ____ _   _ _____       _ __  __ _____ _____ _____ ____     
   / \  |  _ \ / \  / ___| | | | ____|     | |  \/  | ____|_   _| ____|  _ \   
  / _ \ | |_) / _ \| |   | |_| |  _|    _  | | |\/| |  _|   | | |  _| | |_) | 
 / ___ \|  __/ ___ \ |___|  _  | |___  | |_| | |  | | |___  | | | |___|  _ <  
/_/   \_\_| /_/   \_\____|_| |_|_____|  \___/|_|  |_|_____| |_| |_____|_| \_\ 4.0 r1823414  

Copyright (c) 1999-2018 The Apache Software Foundation

如果提示没有权限,就把bin目录的文件加一下执行权限就好了

配置slave环境

做好上面的两步后,slave只需要启动一下jmeter-server就可以了

[root@wu131 bin]# ./jmeter-server
Created remote object: UnicastServerRef2 [liveRef: [endpoint:[192.168.171.131:46530](local),objID:[-4433b170:164ea9464d7:-7fff, 6570738052316875328]]]

配置master环境

  1. 修改bin/jmeter.properties文件
# Remote Hosts - comma delimited
# 这里配置两个slave的地址,如果资源不够也可以配置master自己的地址,但是master也需要启动jmeter-server
remote_hosts=192.168.171.131:1099,192.168.171.133:1099
#remote_hosts=localhost:1099,localhost:2010

# RMI port to be used by the server (must start rmiregistry with same port)
server_port=1099

#否则远程执行,会报一个ssl错误
server.rmi.ssl.disable=true
  1. 配置脚本
    由于我需要测试高性能的UDP服务器,所以在这里我下载了UDP插件,并配置8个线程。配置好之后保存并上传到master机器上jmeter中的bin目录。然后执行jmeter -n -t UDP.jmx -r -l result1.jtl (启动所有从机执行脚本)
  • -n 表示没有界面的运行
  • -t 后面紧跟指定的需要运行的测试case(测试case在windows上用jmeter图形界面事先写好)
  • -l 指定了测试报告的文件(也可以指定路径,默认在当前目录下),生成的报告可以保存到本地windows上在jmeter中打开查看。
[root@wu128 bin]# jmeter -n -t UDP.jmx -r -l result1.jtl 
Creating summariser <summary>
Created the tree successfully using UDP.jmx
Configuring remote engine: 192.168.171.131:1099
Configuring remote engine: 192.168.171.133:1099
Starting remote engines
Starting the test @ Mon Jul 30 17:56:40 CST 2018 (1532944600189)
Remote engines have been started
Waiting for possible Shutdown/StopTestNow/Heapdump message on port 4445
summary + 121003 in 00:00:16 = 7465.2/s Avg:     0 Min:     0 Max:   775 Err:     0 (0.00%) Active: 16 Started: 16 Finished: 0
summary +  75374 in 00:00:30 = 2521.4/s Avg:     0 Min:     0 Max:   729 Err:     0 (0.00%) Active: 16 Started: 16 Finished: 0
summary = 196377 in 00:00:47 = 4207.8/s Avg:     0 Min:     0 Max:   775 Err:     0 (0.00%)
summary + 174502 in 00:00:15 = 11746.2/s Avg:     0 Min:     0 Max:   722 Err:     0 (0.00%) Active: 0 Started: 16 Finished: 16
summary = 370879 in 00:01:02 = 6027.9/s Avg:     0 Min:     0 Max:   775 Err:     0 (0.00%)
Tidying up remote @ Mon Jul 30 17:57:45 CST 2018 (1532944665446)
... end of run

也可以指定ip运行

jmeter -n -t UDP.jmx -R 192.168.171.131 -l result1.jtl      指定从机IP

相关文章

网友评论

      本文标题:分布式Jmeter测试高性能UDP服务

      本文链接:https://www.haomeiwen.com/subject/ywvfvftx.html