Azure 负载测试。了解虚拟用户如何影响性能

     2023-03-23     190

关键词:

【中文标题】Azure 负载测试。了解虚拟用户如何影响性能【英文标题】:Azure Load Test. Understanding how virtual users effect performance 【发布时间】:2017-03-03 19:50:14 【问题描述】:

我正在尝试理解最近一次 Azure 云负载测试的结果,我们针对我们的一个 API 运行该测试

在测试 API 时,我已将负载测试虚拟用户配置为没有思考时间。所以本质上,每次虚拟用户收到响应时,它都会立即发送另一个请求。

我们也没有使用任何类型的用户会话,也没有为每个用户缓存任何数据。这是一个基本测试,将一些 JSON 发布到 API 上的端点,然后对接收到的数据执行一些计算。

看来,通过改变虚拟用户的数量,我们可以让服务更高效。我的意思是,它可以更快地响应并且仍然每秒处理更多请求。

两个负载测试的结果如下所示。

第一个测试告诉我,我们的 API 能够在 2 分钟内处理 60k 个请求。

我无法理解的是,为什么添加更多虚拟用户会增加平均响应时间并降低 RPS,从而导致 API 在 2 分钟内仅处理 55k 请求。

为什么 API 现在只能处理 460 RPS,而我们已经知道它可以处理 500 RPS?

【问题讨论】:

【参考方案1】:

这里有3个问题: 1.为什么更多的虚拟用户会增加响应时间; 2.为什么更多的VU会降低RPS; 3.为什么更多 VU 会减少总请求数。

解释如下:

    更多并发 VU 会创建更多并发会话,这需要服务器上的更多资源(例如会话上下文、队列大小、线程并发),从客户端的角度来看,这会增加服务器处理时间和响应时间。

    仅当负载生成器以与接收响应无关的恒定频率发出请求时,在这种情况下降低 RPS 才会不一致。实际上,在发出请求后,每个 VU 都会等待,直到收到响应。由于服务器响应变慢,等待时间增加,导致 RPS 下降。 这个问题有第二个答案。由于负载生成器的性能容量有限,模拟更多 VU 需要客户端上的更多资源,这可能会导致发出请求的延迟。当您将测试配置为零思考时间时,负载生成器可能会无意中注入延迟,从而导致额外的 RPS 降低。

    请求总数与 VU 和 RPS 的数量成正比。显然,在您的情况下,RPS 减少产生了更大的影响,并且总请求数减少了。

通常情况下,负载测试中增加 VU 所导致的 RPS 降低效果看起来像是一个悖论,但实际上并非如此。

【讨论】:

我在服务本身内部有一些性能计数器,所以我可以看到当有更多用户时服务需要更长的时间来响应。所以我不认为负载生成器无意中在我的测试中注入了延迟。正如您所建议的,这可能与更多当前会话有关。我会继续挖掘。谢谢【参考方案2】:

没有“确切”的单一原因,但请记住,随着负载生成器数量的增加,连接数量、服务器上并行操作的数量等也会增加。您不能假设,通过随着时间的推移增加用户负载,您将继续获得更好的吞吐量和响应时间。事实上,有时您会增加负载并在性能图上发现难以捉摸的“曲线拐点”——延迟峰值(以及请求失败),而吞吐量下降。从负载测试的角度来看,这将是一件好事,因为您现在对现有软件+基础设施在交易率等方面的期望有了相当好的了解。

您需要进一步深入研究以确定确切原因,但这很容易与线程池耗尽、内存问题、cpu 问题、磁盘问题、特定资源(例如缓存或数据库)的瓶颈、网络有关饱和度等。

【讨论】:

“您现在对现有软件+基础设施在交易率等方面的期望有一个相当好的想法”就是这样,现在我不知道。我进行负载测试是因为我想确保 API 能够应对 500 RPS。从技术上讲,第一个测试处理了 500 RPS,没有问题并且响应迅速。我不知道,虽然生活环境会更接近。 200 个虚拟用户或 300 个虚拟用户。

性能测试练习

...的类型,它们之间什么关系?  性能测试类型包括负载测试,压力测试,容量测试等。负载测试:负载测试是一种主要为了测试软件系统是否达到需求文档设计的目标,譬如软件在一定时期内,最大支持多少并发用户数,... 查看详情

使用 Visual Studio 2013 进行负载测试,将参数传递给虚拟用户

】使用VisualStudio2013进行负载测试,将参数传递给虚拟用户【英文标题】:LoadtestingwithVisualStudio2013passingparameterstovirtualusers【发布时间】:2015-09-2804:31:55【问题描述】:我是使用VisualStudio进行负载测试的新手。我有一个包含16个不... 查看详情

2018-1-15性能测试之虚拟用户开发

...提。2)深入了解系统架构:分析系统的架构弄清楚开展测试需要做哪些准备工作,系统潜在的压力点在哪,确定重点模拟用户的哪些业务和操作。3)设计性能测试场景:性能测试场景是Vuser开发的依据,Vuser脚本开发应该以性能... 查看详情

Visual Studio 2010 如何在负载测试中管理虚拟用户?

】VisualStudio2010如何在负载测试中管理虚拟用户?【英文标题】:HowVisualStudio2010managevirtualusersinloadtest?【发布时间】:2014-10-1003:59:03【问题描述】:我有150个并发用户的负载运行。然而,在测试执行后,我切换到虚拟用户活动图... 查看详情

如何在运行时更改jmeter的负载(代码片段)

...情况下,能够在不停止测试的情况下更改性能测试产生的负载是有用的或必要的。这可以通过使用ApacheJMeter™的恒定吞吐量计时器和Beanshell服务器来完成。在这篇文章中,我们将介绍如何实现这一点,同时提供示例。  ... 查看详情

理解azure虚拟机的性能监视

...就从虚拟机的监控作为切入点。今天的内容就从最基本的了解虚拟机的性能指标开始。我们知 查看详情

Azure 长响应时间瓶颈?

...其中包含一个Web应用服务和一个SQL数据库。我已经设置了负载测试并通过云部署它来访问网站。负载测试代理的配置属性是4核从10个并发用户开始,每20秒+10个,最多150个用户请求之 查看详情

如何理解压力负载性能测试测试

...的范围,实际上性能测试本身包含了性能、强度、压力、负载等多方面的测试内容。压力测试是标准工作环境下,不断增加系统负荷,最终测试出该系统能力达到的最大负荷(稳定和峰值)。是对服务器的稳定性以及负载能力等方面... 查看详情

如何从性能中心执行大容量负载测试

】如何从性能中心执行大容量负载测试【英文标题】:HowtoexecuteHighVolumeloadtestfromPerformancecenter【发布时间】:2021-01-2017:13:13【问题描述】:有人可以建议我们如何在Microfocus性能中心2020版中为以下要求创建“测试运行”:首先将1... 查看详情

性能测试简介

...测试:模拟大量客户端请求发送给服务器,评估服务端的负载处理能力,硬件的使用效率等,具体参见性能测试的核心概念基于代码级接口的性能测试,原理上与协议级别的接口类似,是利用API通过线程并发的方式向Server端发送... 查看详情

性能测试的工具

参考技术AHPLoadRunner是一种预测系统行为和性能的负载测试工具。通过以模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题,LoadRunner能够对整个企业架构进行测试。通过使用LoadRunner,企业能最大限度地缩短测... 查看详情

性能测试的分类以及性能测试的指标

...试以确定变化对性能的影响。1.概念:通过逐步增加系统负载,确定在满足性能指标的情况下,找出系统所能承受最大负载的测试。作用:系统最大负载量达到用户要求时,系统才能正式上线。注意:①通过负载测试,可以确定... 查看详情

azure创建4层slb运行网站

...我们习惯了使用虚拟机的方式。我们将使用两台虚拟机和负载均衡的方式来运行网站,这里负载均衡要特别强调一下:1.我们选择的是4层负载均衡;2.此负载均衡是免费的,而且性能非常棒;3.可以支持内部负载均衡(只有内网IP... 查看详情

如何在 Gatling 负载测试中为多个虚拟用户使用单个 OAuth2.0 令牌

】如何在Gatling负载测试中为多个虚拟用户使用单个OAuth2.0令牌【英文标题】:HowtouseasingleOAuth2.0tokenforMultipleVirtualUsersinaGatlingloadtest【发布时间】:2019-04-0417:24:25【问题描述】:我需要通过Gatling(我完全是新手!)对需要OAuth2.0令... 查看详情

性能测试之稳定性测试

...加新的联系人,修改个人信息等罗列主要用户场景及相应负载量用户场景可以根据软件主要业务进行设定对主要场景负载量需要有一个清晰的定义(或者通过负载测试验证了用户场景的负载量,这将作为一个标准的负载在稳定性... 查看详情

loadrunner

LoadRunnner,是一种预测系统行为和性能的负载测试工具。通过以模拟上千用户实施并发负载及实时性能监测的方式来确认和查找问题与瓶颈。VirtualUserGenerator(VuGen)用于捕获最终用户业务流程和创建自动化性能测试脚本(也称为... 查看详情

性能测试分类

...作,响应时间不超过5s如果测试不通过就开始调优。 负载测试:负载测试主要是考察软件系统在既定负载下的性能表现。对负载测试有如下理解:1.负载测试是站在用户的角度去观察在一定条件下软件系统的性能表现。2.负载... 查看详情

让我带你理清azure的负载均衡器

最近在了解Azure云计算服务,发现里面有很多负载均衡类的服务,并且单从名字也无法知道各自是干什么的,我对此进行了简单的归纳,希望可以帮助大家有一个认识。介绍Azure的负载均衡器分为全球负载均衡器和区域负载均衡... 查看详情