LR:进行负载均衡测试的正确姿势!
Posted 软件测试经验与教训
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LR:进行负载均衡测试的正确姿势!相关的知识,希望对你有一定的参考价值。
编者按:
原文来自于测试之道杂志,小编对原文进行了较多改动。一是因为原文有一些无关紧要的内容,二是当时的编辑似乎直接把谷歌翻译的内容发了出来,语句不通顺,语法错误连篇,看了很长时间仍然云里雾里。
另外由于图片不好替换,所以阅读本文时请忽视图片中的文字错误。以下是正文,若文中有错误,欢迎留言指教。
本文目的
以下是解释为什么用 Load Runner 做系统级负载测试时需要大约 6 个负载生成器。
摘要(怎样进行真正的负载均衡测试):
不要用 ip 欺骗做负载均衡(使用多台机器)。
在每次测试之前设置负载均衡器虚拟用户配额。
负载生成器是逐个启动虚拟用户,而不是并发。
在场景配置管理中将负载生成器分组。
问题
下图是当 IP 欺骗器运行用户时负载的状态截图(2台负载机和2台web服务器),可以看出来前面很长一段时间负载并不均衡。
从图中可以看出来,只用两个负载生成器来获得高用户负载的测试是可能的,但测试执行时间会很长,并且需要去除前面的不均衡的部分。
同时我们也可以从中看出2个问题:
为什么当开启IP欺骗时负载均衡不按预期工作,场景开始执行后很长一段时间内web02没有收到请求?
如果使用多于两个负载生成器会发生什么,系统级的负载测试使用多少台负载机合适?
1、负载机工作机制:逐个启动虚拟用户而非同时
LoadRunner 逐个的增加每个负载生成器的虚拟用户,增加方式不是在负载生成器 1 上启动第一个用户再在负载生成器 2 上启动第二个用户,而是先运行负载生成器1上的用户,运行完如果还有更多用户,LR再跳到负载生成器2上启动其他用户。换句话说,如果我们在两台负载生成器上运行 100 个虚拟用户,最先的 50 个用户会在第一个负载生成器运行,然后再在第二个负载生成器运行剩余的50个用户。
如果有两个web服务器和两台负载机,就会出现图2中的情况。另外可以通过查看 Load Runner 的负载生成器状态对话框来确认用户运行情况。
看起来似乎有点麻烦,那么能否使用一台负载机来进行负载均衡测试呢?答案是不能。
在系统级负载测试中需要多个负载生成器的原因:
换言之,LoadRunner的欺骗可以用于少量用户、少量脚本的功能测试,但是不适用于负载均衡。
但在一篇2007年的文章中看到了不一样的解释:
所以,IP 欺骗不是实现负载均衡的解决方法。
看完以后我疑惑了:
2、系统级负载均衡使用多少台负载机?
这方面笔者经验较少,不能给出一个准确答案。不过从上面的介绍就可以看出来,使用更多的负载生成器,LoadRunner 切换下个负载生成器的时间就越少,负载生成器越多切换就越快。原文中给出的答案是4-6台最好。
是不是只要设置多台负载机,就能实现负载均衡测试呢?
不是,还需进行以下操作:
为每台负载生成器设置虚拟用户配额,否则一台生成器趋向于运行所有负载(会导致负载不均衡)。
每个脚本对应的负载生成器,应该是一个分组而非单个的生成器。
1)每个负载生成器运行时必须设置配额
默认情况下,LoadRunner 为每个负载生成器设置 500个虚拟用户。这意味着如果你不修改默认值,那么当你在两个负载生成器上运行100 个用户时,所有用户会在同一个负载生成
器中运行,并且负载生成器会将这些请求解析为一个用户,并将所有请求送到一个 web 服务器。
下面是设置配额的截图:
如果希望达到负载均衡,那么每次改变虚拟用户数时这个配额必须设置。
2 ) 对负载生成器分组
这是为了在负载生成器多于一个时,可以让每个脚本平均分布,达到真正的负载均衡。我们不希望脚本“A”的请求总是并只是发送到 web 服务器“1”,而是希望脚本 A、B、C 的请求平均发送到 web服务器 1 和服务器 2 上。对web服务器来说,只有请求IP不同才能实现这种情况。为了强制一个脚本在多于一个负载生成器上运行,就需要在 Load Runner 场景管理中把负载生成器“分组”。
按照以下步骤设置负载生成器的:
将场景改为百分比模式。
设置脚本使用“所有生成器”(只有改了模式才能操作)
打开Scenario->Covert Scenario to Percentage Mode。
点击“Generators”按钮。
在“Load Generators”对话框,对要用的负载生成器分组。
重新选择生成器,取消选择“Convert to %mode” (或 “Convert Scenario to Vuser Group Mode”)。
重新选择每个脚本虚拟用户的数量。
注意:每个脚本分配的虚拟用户必须多于一个,否则该脚本会被指派到一个唯一的负载生成器。
使脚本的用户运行在两个负载生成器上:
以上是关于LR:进行负载均衡测试的正确姿势!的主要内容,如果未能解决你的问题,请参考以下文章