如果你的JMeter客户机不能进行属性,来模拟 足够的用户强调您的服务器或在网络水平是有限的,存在一个选项来控制多个远程JMeter 引擎从一个JMeter客户机。 通过运行JMeter远程,你可以复制 一个测试在许多低端电脑,从而模拟服务器上的负载更大。 一个 JMeter的实例客户端可以控制任意数量的远程JMeter实例,并收集 所有的数据。 这提供了以下功能:
- 测试样品的保存到本地计算机
- 管理多个JMeterEngines从一个机器
- 不需要复制测试计划每个服务器-客户端发送到服务器
然而,远程模式并使用更多的资源比独立运行相同数量的非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启动和停止的菜单项。
步骤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有新的属性来控制这种行为。
财产 之间的毫秒数睡觉尝试。
财产。