LR:进行负载均衡测试的正确姿势!

Posted 软件测试经验与教训

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LR:进行负载均衡测试的正确姿势!相关的知识,希望对你有一定的参考价值。

编者按:

原文来自于测试之道杂志,小编对原文进行了较多改动。一是因为原文有一些无关紧要的内容,二是当时的编辑似乎直接把谷歌翻译的内容发了出来,语句不通顺,语法错误连篇,看了很长时间仍然云里雾里。

另外由于图片不好替换,所以阅读本文时请忽视图片中的文字错误。以下是正文,若文中有错误,欢迎留言指教。


本文目的

以下是解释为什么用 Load Runner 做系统级负载测试时需要大约 6 个负载生成器。


摘要(怎样进行真正的负载均衡测试)

  • 不要用 ip 欺骗做负载均衡(使用多台机器)。

  • 在每次测试之前设置负载均衡器虚拟用户配额。

  • 负载生成器是逐个启动虚拟用户,而不是并发。

  • 在场景配置管理中将负载生成器分组。


问题

下图是当 IP 欺骗器运行用户时负载的状态截图(2台负载机和2台web服务器),可以看出来前面很长一段时间负载并不均衡。



从图中可以看出来,只用两个负载生成器来获得高用户负载的测试是可能的,但测试执行时间会很长,并且需要去除前面的不均衡的部分。

LR:进行负载均衡测试的正确姿势!


同时我们也可以从中看出2个问题:

  1. 为什么当开启IP欺骗时负载均衡不按预期工作,场景开始执行后很长一段时间内web02没有收到请求?

  2. 如果使用多于两个负载生成器会发生什么,系统级的负载测试使用多少台负载机合适?

1、负载机工作机制:逐个启动虚拟用户而非同时

LoadRunner 逐个的增加每个负载生成器的虚拟用户,增加方式不是在负载生成器 1 上启动第一个用户再在负载生成器 2 上启动第二个用户,而是先运行负载生成器1上的用户,运行完如果还有更多用户,LR再跳到负载生成器2上启动其他用户。换句话说,如果我们在两台负载生成器上运行 100 个虚拟用户,最先的 50 个用户会在第一个负载生成器运行,然后再在第二个负载生成器运行剩余的50个用户。

如果有两个web服务器和两台负载机,就会出现图2中的情况。另外可以通过查看 Load Runner 的负载生成器状态对话框来确认用户运行情况。

LR:进行负载均衡测试的正确姿势!



看起来似乎有点麻烦,那么能否使用一台负载机来进行负载均衡测试呢?答案是不能。

在系统级负载测试中需要多个负载生成器的原因:

换言之,LoadRunner的欺骗可以用于少量用户、少量脚本的功能测试,但是不适用于负载均衡。

但在一篇2007年的文章中看到了不一样的解释:

所以,IP 欺骗不是实现负载均衡的解决方法。

看完以后我疑惑了:


2、系统级负载均衡使用多少台负载机?

这方面笔者经验较少,不能给出一个准确答案。不过从上面的介绍就可以看出来,使用更多的负载生成器,LoadRunner 切换下个负载生成器的时间就越少,负载生成器越多切换就越快。原文中给出的答案是4-6台最好。



是不是只要设置多台负载机,就能实现负载均衡测试呢?

不是,还需进行以下操作:

  • 为每台负载生成器设置虚拟用户配额,否则一台生成器趋向于运行所有负载(会导致负载不均衡)。

  • 每个脚本对应的负载生成器,应该是一个分组而非单个的生成器。


1)每个负载生成器运行时必须设置配额

默认情况下,LoadRunner 为每个负载生成器设置 500个虚拟用户。这意味着如果你不修改默认值,那么当你在两个负载生成器上运行100 个用户时,所有用户会在同一个负载生成

器中运行,并且负载生成器会将这些请求解析为一个用户,并将所有请求送到一个 web 服务器。

下面是设置配额的截图:

LR:进行负载均衡测试的正确姿势!


如果希望达到负载均衡,那么每次改变虚拟用户数时这个配额必须设置。


2 ) 对负载生成器分组

这是为了在负载生成器多于一个时,可以让每个脚本平均分布,达到真正的负载均衡。我们不希望脚本“A”的请求总是并只是发送到 web 服务器“1”,而是希望脚本 A、B、C 的请求平均发送到 web服务器 1 和服务器 2 上。对web服务器来说,只有请求IP不同才能实现这种情况。为了强制一个脚本在多于一个负载生成器上运行,就需要在 Load Runner 场景管理中把负载生成器“分组”。

按照以下步骤设置负载生成器的:

  1. 将场景改为百分比模式。

  2. 设置脚本使用“所有生成器”(只有改了模式才能操作)

  3. 打开Scenario->Covert Scenario to Percentage Mode。

  4. 点击“Generators”按钮。

  5. 在“Load Generators”对话框,对要用的负载生成器分组。

  6. 重新选择生成器,取消选择“Convert to %mode” (或 “Convert Scenario to Vuser Group Mode”)。

  7. 重新选择每个脚本虚拟用户的数量。

注意:每个脚本分配的虚拟用户必须多于一个,否则该脚本会被指派到一个唯一的负载生成器。

使脚本的用户运行在两个负载生成器上:


以上是关于LR:进行负载均衡测试的正确姿势!的主要内容,如果未能解决你的问题,请参考以下文章

LR 负载均衡器管理,分布式负载生成器

洛神云网络SLB负载均衡新姿势

解锁服务调用姿势与负载均衡

高并发负载均衡

IPVS(LVS)负载均衡简介及实验测试

lvs的负载均衡测试