如果你的JMeter客户机不能进行属性,来模拟 足够的用户强调您的服务器或在网络水平是有限的,存在一个选项来控制多个远程JMeter 引擎从一个JMeter客户机。 通过运行JMeter远程,你可以复制 一个测试在许多低端电脑,从而模拟服务器上的负载更大。 一个 JMeter的实例客户端可以控制任意数量的远程JMeter实例,并收集 所有的数据。 这提供了以下功能:

  • 测试样品的保存到本地计算机
  • 管理多个JMeterEngines从一个机器
  • 不需要复制测试计划每个服务器-客户端发送到服务器
 
注:相同的测试计划是由所有的服务器。 JMeter不分发服务器之间的负载,每一个运行完整的测试计划。 如果你设置1000个线程,有6个JMeter服务器,你最终注入6000个线程。
 

然而,远程模式并使用更多的资源比独立运行相同数量的非gui测试。 如果使用了许多服务器实例,客户机JMeter可以成为重载,因为客户端网络连接。 这是提高了切换到剥夺模式(见下文),但你应该经常检查你的客户不是超载。

注意,虽然您可以执行JMeterEngine在您的应用程序 服务器,您需要注意这一事实,这将是增加处理 开销在应用服务器上,因此您的测试结果 有些污染。 推荐的方法是有一个或多个机器上 相同的以太网段配置运行您的应用程序服务器 JMeter引擎。 这将最小化网络测试的影响 结果而不影响应用程序服务器的性能 本身。

步骤0:配置节点

确保所有节点(客户机和服务器):

  • 运行JMeter的完全相同的版本。
  • 所有系统上使用相同的Java版本。 使用不同版本的Java可能工作但不鼓励。

 

在每个服务器上的文件。 这些属性将会捡起当服务器启动和可能 测试计划中使用影响其行为(例如,连接到一个不同的远程服务器)。 或者使用不同的内容所使用的任何数据文件来完成测试 (例如,如果每个服务器必须使用独特的id,把这些数据文件)之间的

步骤1:启动服务器

(windows)脚本。

注意,在每个节点上只能有一个JMeter服务器不同,除非使用RMI端口。

JMeter 2.3.1以来,JMeter服务器应用程序启动RMI注册中心本身; 没有必要开始单独RMI注册表。 回到之前的行为,定义JMeter的财产

server.rmi.create=false

在服务器主机系统。

 

控制这个端口号。 如果这是零,它将被用作本地端口号服务器引擎。

步骤2:添加服务器IP客户的属性文件

”, 添加的值运行JMeter服务器的IP地址。 可以添加多个这样的服务器,以逗号分隔。

。 如。

jmeter -Rhost1,127.0.0.1,host2

标志(下面描述)

步骤3:从GUI客户机启动JMeter客户端检查配置

”。 你会注意到Run菜单包含两个子菜单:“遥控起动”和“远程停止” (见图1)。这些菜单包含您在属性文件中设置客户端。 使用远程启动和停止的 正常的JMeter启动和停止的菜单项。

jmeter 远程测试图1 -运行菜单

步骤3 b:启动JMeter从非gui客户机

GUI模式只能用于调试,作为一个更好的选择,你应该在远程服务器上启动测试(s)从非GUI客户机(命令行)。 命令就是:

jmeter -n -t script.jmx -r

jmeter -n -t script.jmx -R server1,server2,…

其他旗帜可能有用:

-Gproperty =值
定义一个属性在所有服务器(可能出现不止一次)
- x
退出远程服务器的测试。

命令行客户端将退出当所有的远程服务器已停止。

手工设置

在某些情况下,jmeter-server脚本可能不会为你工作(如果您正在使用一个操作系统平台没有预期到的JMeter开发人员)。 下面是如何开始JMeter服务器(步骤1),更多的手动过程:

步骤1:启动RMI注册表

在服务器主机系统 遵循下面的说明。

,确保以下jar文件在你的系统类路径:

  • JMETER_HOME / lib / ext / ApacheJMeter_core.jar
  • JMETER_HOME / lib / jorphan.jar
  • JMETER_HOME / lib / logkit-2.0.jar

 

步骤1 b:启动JMeter服务器

”)。

步骤2和3是相同的。

建议

如果有防火墙或其他网络过滤器JMeter客户机和服务器之间, 您将需要确保他们通过设置允许连接。 如果有必要,使用监控软件展示交通生成。

如果你运行Suse Linux,这些建议可能会有帮助。 默认的安装可能会启用防火墙。 在这种情况下, 远程测试将不会正常工作。 下面的建议被谢尔盖十了。

如果你看到连接拒绝,打开调试通过以下选项。

rmiregistry -J-Dsun.rmi.log.debug=true \
     -J-Dsun.rmi.server.exceptionTrace=true \
     -J-Dsun.rmi.loader.logLevel=verbose \
     -J-Dsun.rmi.dgc.logLevel=verbose \
     -J-Dsun.rmi.transport.logLevel=verbose \
     -J-Dsun.rmi.transport.tcp.logLevel=verbose \

文件。

回送是不可用的。 使用以下设置来解决这个问题。

取代

`dirname $0`/jmeter  -s "$@"

HOST="-Djava.rmi.server.hostname=[computer_name][computer_domain] \
      -Djava.security.policy=`dirname $0`/[policy_file]" \
`dirname $0`/jmeter $HOST -s "$@"

为了更好地支持使用RMI通信通道的ssh隧道 远程测试,因为JMeter 2.6:

  • “可以设置为控制RemoteSampleListenerImpl使用RMI端口
  • ”参数。

使用不同的端口

。 可以改变这种情况。 对于这个工作成功, 所有需要同意如下:

  • 使用新的端口号
  • 定义
  • 设置

已经使用)。

在Windows上(在一个DOS框)
C:\JMETER> SET SERVER_PORT=1664
C:\JMETER> JMETER-SERVER [other options]
在Unix:
$ SERVER_PORT=1664 jmeter-server [other options]
(注意: 使用大写的环境变量)

”属性。

不创建一个日志文件)。

使用不同的样本发送者

听众在测试计划将结果发送回客户端JMeter将结果写入指定的文件 默认情况下,样品返回同步生成。 这可能会影响服务器的最大吞吐量测试;样本结果必须在线程可以发回 继续下去。 有一些JMeter属性可以设置为改变这种行为。

模式
因为2.9。 这应该是在客户机上设置节点。
标准
尽快发送样品同步生成
持有
数组中保存样品,直到运行结束。 这可能在服务器上使用了大量的内存,气馁。
DiskStore
),直到运行结束。 JVM退出的序列化数据文件被删除。
StrippedDiskStore
删除responseData成功的样本中,并使用DiskStore发送者发送它们。
批处理
)超过一个阈值, 此时样品发送同步。 可以在服务器上配置的阈值使用以下属性:
num_sample_threshold
100年
time_threshold
时间阈值,默认60000毫秒= 60秒
看到也中模式,下面描述。
统计
发送一个总结样本当数或时间超过一个阈值。 样品是由线程组名称和总结样品标签。 以下字段是积累:
  • 运行时间
  • 延迟
  • 字节
  • 样品数
  • 错误数
其他字段,不同样品丢失。
剥夺了
删除responseData从成功中样本
StrippedBatch
删除responseData成功的样本中,并使用批量发送方发送它们。
在服务器节点)。
StrippedAsynch
删除responseData成功的样本中,并使用异步发送方发送它们。
自定义实现
 
这并不是一个问题,总有一个更有效的方法来实现这个功能。
 

模式:

num_sample_threshold
)
time_threshold
等待的毫秒数(默认60秒)

处理节点失败的开始

为大规模的测试有可能将部分远程服务器不可用。 例如,当您使用自动化脚本分配许多云机器和使用它们作为发电机, 要求机器可能会失败的一些引导因为云的问题。 因为JMeter 2.13有新的属性来控制这种行为。

财产 之间的毫秒数睡觉尝试。

财产。

相关文章:

  • 2021-06-16
  • 2021-11-09
  • 2021-09-16
  • 2021-11-07
  • 2022-02-19
  • 2021-11-09
  • 2021-10-18
猜你喜欢
  • 2021-08-25
  • 2021-11-24
  • 2022-12-23
  • 2022-01-07
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案