Load Generator11负载生成器的管理和设置

负载生成器是什么?

负载生成器,英文名 Load Generator,是运行脚本的负载引擎,也就是执行Vuser脚本运行Vuser模拟真实用户操作的机器。

为什么要对负载生成器的管理和设置?

当执行一个场景时,Controller 把场景中的每个用户配到负载生成器,在默认情况下,运行脚本使用的是本地的负载生成器。

但是模拟用户行为需要消耗一定的系统资源,如果要模拟大量的虚拟用户,就要消耗较多的系统资源,一台电脑可能就无法承受,这个时候可以通过调用多个Load Generator一起来完成大规模的性能负载。

所以,我们需要对负载生成器进行管理和设置,以满足大规模的性能负载测试。

如何添加负载生成器?

第一步:

(1)通过 Vuser --> Run-time Settings 设置运行模式

 Load Generator 的核心是 MMDRV.EXE 进程,负责运行脚本模拟用户行为,该程序支持进程或线程的方式,我们选择默认的按线程运行Vuser。

进程和线程有什么区别呢?

Run Vuser as a process(进程):

如果按进程方式运行每个Vuser,则对于每个Vuser都将启动一个mdrv进程。如果设置了100个Vuser,则在任务管理器中出现100个mdrv进程。多个mdrv进程肯定会占用大量内存及其他系统资源,这就限制了可以在任一负载生成器上运行的Vuser的数量。

多数情况下,使用进程方式时一个Vuser会占用接近3MB的内存,而使用线程方式时一个Vuser大概只占用了200KB的内存。为了保证负载生成有效性,在实施性能测试前先测试一个负载器是否存在硬件瓶颈(生成负载时的CPU、内存、带宽占用情况等),确保负载器自身不会成为瓶颈,其CPU和内存的使用率最好不超过80%。

Run Vuser as a thread(线程):

如果按线程方式运行每个Vuser,即使设置了100个Vuser,也只会调用一个驱动程序 mdrv,这些Vusers将共享一个mdrv进程的内存段。这就节省了大量内存控件,就可以实现在一个负载生成器上运行更多的Vusers。

线程方式也有其缺点:

选择线程方式运行Vuser会带来一些安全问题,因为线程的资源是从进程资源中分配出来的,同一个进程中的多个线程会有共享的内存空间,这样可能会引起多个线程的同步问题。调度不好就会出问题,比如A线程要用的资源就必须等待B线程释放,而B线程也在等待其他资源释放才能继续。这就会出现这样的问题:同一个测试场景,用线程并发就会超时失败或报错,而用进程并发就没错。

两种方式虽然有区别,但两种方式的运行给服务端造成的压力是一样的。

第二步:

(2)在场景中添加负载生成器,有三种方法

一:

 二:

三:

(3)点击添加Add,进入添加窗口,点击More出现更多信息。

  • Name:输入框里可以填写具体的IP地址(本地、远程),也可以填写localhost(本机)、或非本机的其他计算机名;
  • Platform: 选择操作系统;
  • Temporary directory:LoadRunner的控制器将在临时目录中生成一些文件,用于储存场景运行时的数据;
  • Enable load generator to take part in the scenario:使负载发生器能够参与场景生成,要勾选这项,使负载生成器在场景中生效。如果某个开启的负载生成器对于某个特定场景不可用,可临时禁用负载生成器,不必要把它从列表移除。

第三步:

(4)添加后可以看到负载生成器的状态与连接

有"Ready"和"Down"两种状态.

选择"Down"状态,点击右侧“Connect”按钮进行连接,如果"Down"状态变成“Ready”,说明连接成功,该负载生成器可以使用,否则就需要检查错误出在哪里。

连接不成功可能的问题及解决方法:

  • 防火墙没关闭:Windows下,需要关闭防火墙;
  • 对方计算机Load Generator的服务器代理没有开启:添加负载机器之前需要对方开启代理运行时设置(要开启小雷达);

  • 选择 “Allow virtual users to run on this machine without user login”,允许虚拟用户无需用户登录即可在本机上运行;
  • Domain:计算机全名;
  • User:用户名;
  • Password:密码;

输入以上信息之后点击OK,在电脑右下角就出现了雷达的图标,表示开启了代理,就可以让远程的Controller无须登陆就直接连接到这个Load Generator,这时候再去添加 Load Generator就可以了。

注意:本机电脑也需要开启远程负载生成器的LoadRunner Agent服务,Start > Programs > LoadRunner > LoadRunner Agent Proces

第四步:

(5)为脚本选择负载生成器

  • 点击下拉三角按钮,可以看到我们添加的负载生成器;
  • 选择要添加的负载生成器,对各主机进行虚拟用户分配。

第五步:

(6)负载均衡分配

在默认模式下,在Controller中添加多台Load Generators机器时,不管如何添加,最终只能选中一台机器。这样最终就只有被添加的这一台机器在负载了,显然不符合我们的目的。

为了解决这个问题,我们要更换场景模式:

选择 Scenario ---> Convert Scenario to the Percentage Mode,将场景模式由组模式更换为百分比模式。

这样我们可以自由选择负载生成器了,也可以选择全部的负载生成器,点击OK按钮,所选择的机器都将被添加进来。

当某个load generator的CPU超负荷使用,Controller停止在超负荷的load生成器上加载虚拟用户,并自动在其它参与了场景的生成器中分发虚拟用户,如果没有其它负载生成器,那么Controller会停止加载虚拟用户。

第六步:

选择一个负载生成器,点击Details,找到Run-Time Quota标签页,设置初始化vuser数量。

在场景监控中,初始化默认不会超过50用户,也就是最大并发是50个用户,我们想使用超过50的并发,就需要在这里进行设置了。

两个值都默认为50:

Number of Vusers that may be initialized at one time:可以一次初始化的vuser数量,表示最多加载多少用户开始运行脚本。

Limit the number of users that may be stopped at one time:加载多少用户就停止加载,开始运行脚本,不勾选表示初始化所有用户后开始运行。

不过这里的两个值,我们一般只在单并发时才进行修改,比如单并发100个用户,那么我们把两个值都设置为100。组合场景目前的加载方式我们是每秒加载两个,所以不需要修改这里。


 

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值