在信创的大背景下,我的单位也在执行国产化替代了。我们采取的思路是逐层替代的方式,在网络层首先替换负载均衡设备,从 F5 替换成几个国产设备之中的一个。
测试环境的 F5 设备版本太老了,替换后发现国产的设备性能要强很多。领导为了对比到底哪个国产的负载均衡设备更好,好在哪里,具体好多少,提出一个思路让我们测一下两种场景的性能,然后对其进行对比:
- 使用负载均衡设备下的系统性能
- 不使用负载均衡设备下的系统性能
使用负载均衡的系统对外暴露的是一个 URL,测试起来很简单。不使用负载均衡的系统,对外服务节点有 8 个,暴露了 8 个 URL,该怎么设置 LoadRunner 的脚本呢?
先明确一下目标:不使用负载均衡设备把流量均匀的分配到8个相同的服务节点上。我想到两种思路:
- 让分配到 8 个节点的请求数一致。测试工具发送请求的原理是发一个成功了或超时了再发第二个,但是每个节点的处理能力略有不同,如果强制向 8 个节点发送相同数量的请求,会导致有的节点处理不过来,有的节点已经处理完成了再等待新的请求,这样也不算均衡。
- 让 8 个节点的连接数一致。同一时刻有相同数量的用户连接到每个节点上,意味着同一时刻每个节点处理的任务数是相同,这样从连接数上看是均衡的。
我们决定使用第二种思路解决这个问题,具体是按下面的步骤操作的 :
- 把 8 个访问地址里的 IP做成参数。 URL 由前面的服务器地址 http://192.18.*.*和后面的服务地址/service/get/**组成, 8 台服务器有 8 个不同的 IP地址。首先把 IP做成 LoadRunner 里的参数。
- 配置参数文件。要实现多个用户均匀访问 8 个地址的方式,比如共200 个用户,可以配置每 25 个用户对应一个访问地址。所以我们可以在 IP地址参数文件里这样配置,IP1,IP2,IP3......IP25,IP1......IP25......,这样重复 8 次,正好 200 个参数。
- 配置参数值的更新方式。在 LoadRunner 中配置参数时可以选择两个选项
select next row和update value on,对应这两个选项我们分别选择unique和once,就是在启动 vuser 时给每个 vuser 分配一个值,每个值都取一个参数列表里的新值,后面的循环中不再更新这个值。
这样在启动 vuser 时,200 个用户中的每一个都从参数列表中取一个 IP,然后固定使用这个 IP直到脚本执行结束。由于 IP是平均分配的,就达到了均匀分配流量的目的。
最终我们成功拿到了不使用负载均衡的性能和使用负载均衡的性能,对比出了差异,完成了任务。