Jmeter分布式测试

在使用Jmeter做并发测试的时候,可能由于控制机的性能不足,难以完成任务。比如后台服务器可以承担的最大并发数50000,结果,运行Jmeter的Master设备在发送50000并发的时候自己先宕机了。为了解决这个现象,我们就必须寻找压测奴隶帮我们解决任务,Jmeter控制机控制其他多台电脑一起发送50000请求到后台服务器,这样就完美解决了问题。
我们先来看一下整体的思路。


image.png

<本次配置>

Master机:Windows物理机

Slave机:Linux虚拟机;Windows物理机

Server:Linux虚拟机(被测服务器)

一、预先准备工作

1. Linux服务器环境(LAMP)搭建

CentOS7安装PhpStudy,搭建Linux服务器环境(LAMP+LNMP)

CentOS7安装PhpStudy+ECShop要点 & 异常处理

2. Linux服务器资源监控

1)Linux服务器资源监控

使用Nmon ==>Linux性能监控工具Nmon的安装使用、生成数据报告

(可联合JMeter插件工具、以及Linux自带的top命令实时监控)

2)MySQL数据库服务器监控

使用Spotlight ==>数据库性能监控工具Spotlight on MySQL的安装

二、 Linux服务器(Slave机)配置JMeter运行&监听环境

1. 安装JAVA环境

Master机和Slave机都需要安装相同版本的JAVA环境(如:JDK 8),并配置环境变量。如:Linux系统中安装JDK ==>CentOS7系统中安装JDK8-过程记录

JAVA目录位置:/usr/local/java(预先在/usr/local目录下创建java目录:mkdir java)

image

2. 上传JMeter至服务器

1)预先将apache-jmeter-4.0.zip压缩包上传至Linux服务器,如/usr/local/jmeter目录下(预先在/usr/local目录下创建jmeter目录:mkdir jmeter)

2)解压:unzip apache-jmeter-4.0.zip

image

3. 配置JMeter环境变量

以命令vi /etc/profile打开环境变量配置文件,在配置文件内接近末尾位置添加以下内容,如下:

---Set JMETER Environment---JMETER_HOME=/usr/local/jmeter/apache-jmeter-4.0PATH=PATH:JMETER_HOME/binexportJMETER_HOME PATH# ---Set JMETER Environment---

保存以上配置内容,然后使环境变量生效:source /etc/profile

查看JMeter配置版本:jmeter -v

image

4. 启动jmeter-server

路径切换:cd /usr/local/jmeter/apache-jmeter-4.0/bin

操作命令:jmeter-server或./jmeter-server

image

启动jmeter-server服务,若出现以下异常:

image

解决方案 ==>[JMeter]...java.rmi.RemoteException: Cannot start. localhost.localdomain is a loopback address_解决方案

具体操作:编辑jmeter-server文件,将服务器的主机IP设置为固定值(与Linux服务器ifconfig查询出的实际IP保持一致)

One way to fix this is to define RMI_HOST_DEF belowRMI_HOST_DEF=-Djava.rmi.server.hostname=192.168.248.138

然后再次启动jmeter-server,即可正常启动

image

若出现以下异常:

"Server failed to start: java.rmi.server.ExportException: Listen failed on port: 0; nested exception is:

java.io.FileNotFoundException: rmi_keystore.jks (No such file or directory)

An error occurred: Listen failed on port: 0; nested exception is:

java.io.FileNotFoundException: rmi_keystore.jks (No such file or directory)"

则修改jmeter.properties文件为如下:

Set this if you don't want to use SSL for RMIserver.rmi.ssl.disable=true

5. 上传ServerAgent至服务器,启动监控服务器资源

1)将ServerAgent-2.2.1.zip压缩包上传至Linux服务器,如/usr/local/server-agent目录下(预先在/usr/local目录下创建server-agent目录:mkdir server-agent)

2)解压:unzip ServerAgent-2.2.1.zip

image

3)查看文件权限:ls -la

确保startAgent.sh具有可执行权限

image

4)启动ServerAgent:./startAgent.sh

ServerAgent默认监听4444端口,如下:

image

三、Windows主控机(Master机)配置JMeter运行&监听环境

1. 预先安装JAVA和JMeter

在Windows主控机中,提前安装好与Linux服务器相同版本的JAVA、JMeter,并各自配置好系统环境变量

1)JAVA环境变量:

JAVA_HOME:C:\Program Files\Java\jdk1.8.0_91(JDK安装的目录)

Path:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;

CLASSPATH:.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar;(最前面有一个点.)

2)JMeter环境变量:

JMETER_HOME:E:\CI_Env\apache-jmeter-4.0

PATH:%JMETER_HOME%\bin;

2. 配置远程主机地址

配置文件:jmeter.properties

配置JMeter的bin目录(E:\CI_Env\apache-jmeter-4.0\bin)下的jmeter.properties文件,添加remote_hosts远程地址和端口(Slave机对应的IP,默认端口1099),如下:

Remote Hosts - comma delimited#remote_hosts=127.0.0.1#remote_hosts=localhost:1099,localhost:2010remote_hosts=192.168.248.138:1099,127.0.0.1:1099

3. 启动jmeter服务

双击运行jmeter-server.bat,与Linux服务器(Slave机)保持通信联通

路径:E:\CI_Env\apache-jmeter-4.0\bin

image

4. 启动JMeter GUI工具

启动程序:jmeter.bat

路径:E:\CI_Env\apache-jmeter-4.0\bin

image

四、执行JMeter分布式测试

1. 预先准备:录制测试脚本

==>[JPT_05]性能测试-脚本开发(登录&随机购买业务)

2. 对测试脚本进行参数配置,调试脚本

利用Badboy录制脚本,导入到JMeter的GUI操作界面中进行脚本调试

变量设置:

【User Defined Variables】

设置参数:host=192.168.248.138(本次Linux服务器的IP)

参数引用:

ServerName or IP:${hosts}

Host / IP:${hosts}

image
image
image

PS:-----【Important!】-----

【1】脚本中定义变量host,目的是为了便于脚本的复用和移植。当服务器IP变更时,只需要在【User Defined Variables】配置元件中将host取值修改,其他关联引用host的位置也会自动获取该值,而不需要每个位置都手动去修改,存在耗费时间且可能修改遗漏的风险。

【2】连接Linux服务器时,为了确保正常执行测试,每个请求中涉及url地址的Path路径需要大小写严格书写(与Linux服务器中配置的url保持一致)。

【3】对于JMeter4.0,若要使得其性能监控插件可正常监控展示出图像曲线,在执行测试之前,需要在【Write results to file / Read from file】的Filename选择框中添加某个自定义的jtl文件的绝对路径,如:E:\CI_Env\JM_LogResult\123.jtl(存放jtl文件的目录已提前创建好,初始时jtl文件可不存在,执行测试完成之后即会生成与自定义相同名称的jtl文件)。

【4】JMeter脚本中若包含有【CSV Data Set Config 】配置元件配置了csv参数化的文件,需要将该参数化的文件分别上传到每一台Slave机的JMeter的bin目录下存放(与jmeter-server服务文件在同一目录),同时Master机也需要存放该参数化文件到JMeter的bin目录下;然后在JMeter的GUI界面中【CSV Data Set Config 】配置Filename为相对路径(如:username.txt),不宜采用绝对路径,否则执行测试可能异常(可查看Linux服务器中的jmeter-server.log日志文件),测试过程中Linux服务器中的测试数据可能不会返回到Windows主控机的JMeter界面中展示。

具体可参看 ==>JMeterThread:Test failed! java.lang.IllegalArgumentException: File...must exist and be readable_解决方案

3. 执行JMeter分布式测试

1)执行方式选择

【1】Run --> Remote Start --> 192.168.248.138:1099

【2】Run --> Remote Start --> 127.0.0.1:1099

【3】Run --> Remote Start All

【4】Run --> Start

<1> 调用Slave机(远程Linux服务器)上JMeter的Non-GUI模式执行测试

<2> 调用Slave机(此处Master机本身也作为Slave机之一)执行测试

<3> 调用所有配置过的Slave机器执行测试

<4> 常规的执行测试方式,以当前Master机对Linux服务器执行测试

image

2)设置:线程数、循环数、定时场景,启动测试

本次选定执行方式:Run --> Remote Start All

配置线程、循环次数(Step1配置)、定时等的设置,开启执行测试,效果如下:

image
image

PerfMon Metrics Collector:监控服务器资源

image

Hits per Second

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