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

一般来说,我们在测试服务器性能的时候,只需要本地跑一个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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 223,126评论 6 520
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 95,421评论 3 400
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 169,941评论 0 366
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 60,294评论 1 300
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 69,295评论 6 398
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,874评论 1 314
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 41,285评论 3 424
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 40,249评论 0 277
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,760评论 1 321
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,840评论 3 343
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,973评论 1 354
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,631评论 5 351
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 42,315评论 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,797评论 0 25
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,926评论 1 275
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 49,431评论 3 379
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,982评论 2 361

推荐阅读更多精彩内容