您的位置  > 互联网

如何实现多台负载机同时运行的呢?|工作台

如有需要,需要修改端口号,然后点击“启动”按钮启动。

接下来修改采样器,使其将 HTTP 请求发送到:8081(这是它的启动位置)

然后,运行测试计划,您可以从监听器查看结果树中看到响应数据。

分布式测试

它是一个Java应用程序,消耗大量的CPU和内存。 因此,当需要模拟数千个并发用户时,用单机来模拟所有并发用户有些不够,甚至可能会导致JAVA内存溢出错误。 为了让工具能够提供更大的负载能力,Short and 有一种使用多台机器同时产生负载的机制。

那么,如何实现多台负载机的同时运行呢? 当然,不会有多个人坐在多台负载机前,大家同时启动。 这种方法比较麻烦,而且很难实现真正的同步。 事实上,我们可以通过一个客户端控制多个远程服务器,以便它们可以同步对服务器进行压力测试。

通过远程运行,测试人员可以在多台低端计算机上复制测试,从而模拟相对较大的服务器压力。 理论上,一个客户端实例可以控制任意数量的远程实例并通过它们收集测试数据。 这样,我们就具有以下特点:

* 保存测试采样数据到本机

* 通过一台机器管理多个执行引擎。

* 无需将测试计划复制到每台机器,客户端将其发送到每台服务器。

*每个远程服务器执行相同的测试计划,执行过程中不会进行负载均衡。 每台服务器都会完整地运行测试计划。

CPU 1.4GHz~3GHz、内存1GB的客户端,可以处理100~300个线程。 但也有例外。 XML 处理是 CPU 密集型的,会很快耗尽所有 CPU 资源。 一般来说,以XML技术为核心的应用系统的性能将是普通Web应用的10%到25%。 另外,如果所有负载都由一台机器产生,网卡和交换机端口都可能产生瓶颈,因此客户端线程数不应超过100。

使用远程模式并不比独立运行相同数量的非 GUI 测试更消耗资源。 但是,使用大量远程服务器可能会导致客户端过载或网络连接拥塞。

使用多机产生负载的步骤如下:

(1)安装在所有预计作为负载生成器运行的机器上,并确定其中一台机器为代理,其他机器为代理。 然后在所有代理机器上运行--文件(假设使用两台机器192.168.0.100和192.168.0.101作为代理)

(2) 在机器的bin目录下,找到. 文件并编辑文件:

查找:
remote_hosts=127.0.0.1
修改为:
remote_hosts=192.168.0.100:1099,192.168.0.101:1099 

特别注意这里的港口。 一些数据表明端口 1644 是与代理通信的默认 RMI 端口号。 但测试时发现设置为1644未能成功运行。 改成1099后就通过了。 还要注意代理的机器是否启用了防火墙。

(3) 启动本机上的应用程序,选择菜单“运行”--->“远程启动”单独启动代理,也可以直接选择“远程全部启动”启动所有代理。

开始调试日志记录

大多数测试组件都支持调试日志记录。 如果您通过 GUI 运行测试计划,则在选择测试元素后,可以使用“帮助”菜单或。 有一个选项“什么?” 在“帮助”菜单中,

通过它可以查看GUI和测试组件的类名,如图11-7所示。 通过它们,测试人员可以决定修改哪个属性以修改日志级别。

例如:我们可以点击一个HTTP请求,然后在菜单栏中选择“帮助”--->什么'?

在 bin\ 目录中,找到 . 文件。 日志级别的属性如下:

#Logging levels for the logging categories in JMeter.  Correct values are FATAL_ERROR, ERROR, WARN, INFO, and DEBUG
# To set the log level for a package or individual class, use:
# log_level.[package_name].[classname]=[PRIORITY_LEVEL]
# But omit "org.apache" from the package name.  The classname is optional.  Further examples below.
log_level.jmeter=INFO
log_level.jmeter.junit=DEBUG
#log_level.jmeter.control=DEBUG
#log_level.jmeter.testbeans=DEBUG
#log_level.jmeter.engine=DEBUG
#log_level.jmeter.threads=DEBUG
#log_level.jmeter.gui=WARN
#log_level.jmeter.testelement=DEBUG
#log_level.jmeter.util=WARN
#log_level.jmeter.util.classfinder=WARN
#log_level.jmeter.test=DEBUG
#log_level.jmeter.protocol.http=DEBUG
# For CookieManager, AuthManager etc:
#log_level.jmeter.protocol.http.control=DEBUG
#log_level.jmeter.protocol.ftp=WARN
#log_level.jmeter.protocol.jdbc=DEBUG
#log_level.jmeter.protocol.java=WARN
#log_level.jmeter.testelements.property=DEBUG
log_level.jorphan=INFO

搜索功能

当使用变量或测试计划树以及包含某些 URL 或参数的元素时,有时很难找到这一点。 现在从2.6开始有一个新功能,你可以访问它的菜单搜索。 它提供了以下选项的搜索:

* 使搜索区分大小写:

* regex 是正则表达式搜索文本,将搜索正则表达式树的组件(如果有),例如“\BTEST\b”将匹配包含测试组件的搜索元素的任何组件

在线程之间传递变量

变量的作用域仅限于它们所属的线程。 这种设计是经过深思熟虑的,可以让测试线程独立运行。 有时用户可能需要在不同线程(可能属于也可能不属于同一线程组)之间传递变量。

一种方法是使用属性。 属性由所有线程共享,因此当一个线程设置某个属性时,其他线程可以读取更新后的值。

如果线程间需要传输大量数据,可以考虑使用文件。 例如,测试人员可以在线程中使用侦听器将响应保存到文件 () 或 或。 在另一个线程中,使用 HTTP 采样器的“file:”协议读取文件,然后使用后处理器或测试组件提取信息。

如果测试开始之前测试人员可以获得测试数据,那么最好将数据保存到文件中并使用读取。

----------------------------------------------------

最后这个技巧操作起来比较麻烦,暂时不给出详细的例子。 也算是提供了一个思路吧! 只要知道有这样的事情就可以了。 以后有机会我会再练习一下^_^