记录一次绕过负载均衡直接测试多个服务节点性能的工作

  在信创的大背景下,我的单位也在执行国产化替代了。我们采取的思路是逐层替代的方式,在网络层首先替换负载均衡设备,从 F5 替换成几个国产设备之中的一个。

  测试环境的 F5 设备版本太老了,替换后发现国产的设备性能要强很多。领导为了对比到底哪个国产的负载均衡设备更好,好在哪里,具体好多少,提出一个思路让我们测一下两种场景的性能,然后对其进行对比:

  1. 使用负载均衡设备下的系统性能
  2. 不使用负载均衡设备下的系统性能

  使用负载均衡的系统对外暴露的是一个 URL,测试起来很简单。不使用负载均衡的系统,对外服务节点有 8 个,暴露了 8 个 URL,该怎么设置 LoadRunner 的脚本呢?

  先明确一下目标:不使用负载均衡设备把流量均匀的分配到8个相同的服务节点上。我想到两种思路:

  1. 让分配到 8 个节点的请求数一致。测试工具发送请求的原理是发一个成功了或超时了再发第二个,但是每个节点的处理能力略有不同,如果强制向 8 个节点发送相同数量的请求,会导致有的节点处理不过来,有的节点已经处理完成了再等待新的请求,这样也不算均衡。
  2. 让 8 个节点的连接数一致。同一时刻有相同数量的用户连接到每个节点上,意味着同一时刻每个节点处理的任务数是相同,这样从连接数上看是均衡的。

  我们决定使用第二种思路解决这个问题,具体是按下面的步骤操作的 :

  1. 把 8 个访问地址里的 IP做成参数。 URL 由前面的服务器地址 http://192.18.*.*和后面的服务地址/service/get/**组成, 8 台服务器有 8 个不同的 IP地址。首先把 IP做成 LoadRunner 里的参数。
  2. 配置参数文件。要实现多个用户均匀访问 8 个地址的方式,比如共200 个用户,可以配置每 25 个用户对应一个访问地址。所以我们可以在 IP地址参数文件里这样配置,IP1,IP2,IP3......IP25,IP1......IP25......,这样重复 8 次,正好 200 个参数。
  3. 配置参数值的更新方式。在 LoadRunner 中配置参数时可以选择两个选项select next row和update value on,对应这两个选项我们分别选择unique和once,就是在启动 vuser 时给每个 vuser 分配一个值,每个值都取一个参数列表里的新值,后面的循环中不再更新这个值。

  这样在启动 vuser 时,200 个用户中的每一个都从参数列表中取一个 IP,然后固定使用这个 IP直到脚本执行结束。由于 IP是平均分配的,就达到了均匀分配流量的目的。

  最终我们成功拿到了不使用负载均衡的性能和使用负载均衡的性能,对比出了差异,完成了任务。

相关推荐
11路没有终点10 天前
SkyWalking+Arthas全链路诊断实战
性能测试
11路没有终点11 天前
Java 微服务性能调优:jstack/jmap/jstat 三剑客实战指南
jvm·性能测试
牛油果子哥q13 天前
LLM 服务网关设计:流量分发、鉴权、限流、多模型路由、负载均衡、接口版本管理(C++ 网关落地)
运维·负载均衡
daopuyun13 天前
LoadRunner性能测试工具新版本,新增AI辅助功能,脚本制作与运行结果分析变更简单
性能测试·loadrunner·性能测试工具
2601_9622845018 天前
Python 和Java 哪个更适合做自动化测试?
java·自动化测试·python·接口测试·性能测试
飞鸟真人18 天前
亿级用户IM系统 之 DPVS Maglev动态权重(七、DPVS Maglev 动态负载调度)
负载均衡·dpvs·亿级im系统·动态负载均衡·maglev·动态maglev
AngusKit19 天前
AngusTester 是什么:AI 原生软件测试
自动化测试·人工智能·测试工具·性能测试·web测试·api测试·llm测试
Jae den19 天前
负载均衡到底解决什么问题?
运维·负载均衡
CDN36019 天前
CDN 回源负载均衡实战:解决多源站回源流量不均、源站单点故障,出海业务配置指南
运维·负载均衡
bdy_y920 天前
推理引擎测试指南:像调校赛车一样测试AI引擎
人工智能·大模型·性能测试