jmeter分布式测试

时间:2022-11-07 20:17:40

jmeter分布式测试
jmeter运行时十分耗内存和cpu,所以可以利用多部机子进行分布式压测。
在进行分布式平台测试的时候,要最好注意以下几点:
1. 防火墙应该关闭
2. 所有客户端应该都在同一个子网中
3. 确保jmeter可以访问服务器
4. 确保各个jmeter版本一致,不同版本可能会存在协同问题
下面就linux下如何搭建jmeter分布式做相应说明:
一、 配置节点
确保所有节点(JMeter客户端和JMeter远程服务器)运行相同版本的JMeter。尽可能在所有操作系统上使用相同的Java版本。
如果测试用到了外部数据文件,那么请注意这些文件不会被JMeter客户端分发,因此测试人员需要确保每台执行机上都保存了这些数据文件(其所在目 录也必须正确)。如果有必要,用户可以为每台执行机设置不同的属性变量,即在JMeter远程服务器上编辑user.properties或者 system.properties文件。这些属性将会在JMeter远程服务器启动时被识别,并有可能被应用到测试计划之中,从而影响测试执行(例如, 与其他远程服务器发生交互)。另外,不同的JMeter远程服务器可能会使用不同内容的数据文件(例如,每台服务器必须使用不同的ID,就以此来划分数据 文件)。

二、 启动远程服务
要启动JMeter远程节点,请在执行机上运行JMETER_HOME/bin/jmeter-server (UNIX)或者JMETER_HOME/bin/jmeter-server.bat(Windows)脚本。
请注意,每个远程节点上只能运行一个JMeter远程服务器脚本,除非采用不同的RMI端口。从JMeter 2.3.1开始,JMeter远程服务器会自己启动RMI注册;用户没有必要单独启动RMI注册。假设测试人员一定要单独启动RMI注册,可以在远程节点 上定义JMeter属性server.rmi.create=false。
默认情况下,JMeter远程服务器的RMI使用动态端口号。这样就会为防火墙配置带来麻烦,因此JMeter 2.3.2及其以后的版本,会检查JMeter属性server.rmi.localport。如果该值非零,JMeter远程服务器就会用它来作为本地 端口号。

三、 将JMeter远程服务器的IP地址添加到客户端属性文件中
编辑JMeter控制机的属性文件。在/bin/jmeter.properties文件中找到属性”remote_hosts”,使用JMeter远程服务器的IP地址作为其属性值。可以添加多个服务器的IP地址,以逗号作为分隔。
jmeter分布式测试
四、 启动Jmeter客户端
编写简单的jmeter脚本,燃油选择运行远程启动选择对应的远程机,例如此处选择59.59
jmeter分布式测试
查看jmeter远程机执行结果
jmeter分布式测试
可以看到远程机已经开始运行了

五、 使用小技巧
1. 使用不同端口号
默认情况下,JMeter使用标准RMI端口号1099(这是可以改变的)。要想成功改变使用的端口号,需满足如下条件:
在远程服务器,启动Rmiregistry使用新端口号。
在远程服务器,启动JMeter并预先定义server_port属性。
在客户端,更新remote_hosts属性,在其中包含remote host:port设置。
从JMeter 2.1.1版本开始,jmeter-server脚本支持改变端口号。例如,假设测试人员希望使用端口号1664(可能因为1099端口已经被其他应用程序占用了)
2. 使用采样批次
测试计划中的监听器会把它们的结果返回到JMeter客户端,而JMeter客户端默认情况下会将这些结果写入到指定文件中,采样结果会在产生后立即发回JMeter客户端。这样就会对网络和JMeter客户端产生很大的压力。用户可以通过设置一些属性,来改变默认操作。
可以到jmeter.properties文件下进行设置
jmeter分布式测试
模式(Mode)(采样结果发送模式)默认是Standard。
Standard:在采样结果产生后立即发送。
Hold:将采样结果保存在一个数组中,直到测试结束。这可能会占用远程服务器的大量内存。
Batch:当计数器或者时间超过阈值之后,发送保存的采样结果。
Statistical:当计数器或者时间超过阈值之后,以概要的形式发送采样结果;采样结果以线程组(Thread Group)名称和采样标签(Sample Label)进行概要统计。积累的数据域包括:elapsed time、latency、bytes、sample count、error count,其他数据域将会被丢弃。
Stripped:将成功采样的响应数据移除。
StrippedBatch:将成功采样的响应数据移除,并批次发送。
Custom implementation:将模式参数设置为测试人员的客户化采样发送器的类名。该类必须实现接口SampleSender,并且类的构造函数只有一个RemoteSampleListener型的参数。
如下属性会影响Batch和Statistical模式。
num_sample_threshold:一个批次中的采样数目(默认为100)。
time_threshold:等待的毫秒数(默认为60秒)。