gpt4 book ai didi

c# - 对于作为 Azure 应用服务 (P3) 托管的 .NET Core 2 Web api 的基准 RPS,我的期望应该是什么?

转载 作者:行者123 更新时间:2023-12-02 23:28:54 24 4
gpt4 key购买 nike

我正在尝试衡量在 .NET Core 2 中开发的 Web API 的基线 RPS。以下是我迄今为止遵循的步骤

  • 从 Microsoft 的 VS 模板中生成了一个新的/空的 Web API 项目
  • 添加了一个新 Controller ,用于执行基本的“你好,您的 api 端点正在工作”响应,没有逻辑,也没有额外的 I/O 处理
  • 作为应用服务部署到 Azure。对于选择 P3 的服务计划(P3=400 总 ACU、7GB、800 美元/月)并将实例数设置为最多 20 个。
  • 已加载 JMeter 并设置 HTTP 请求负载测试来模拟负载峰值。我发现任何超过 530 个并发请求的情况下,如果我尝试在此峰值期间在浏览器中发出请求,我就会开始收到 JMeter 报告的 HTTP 错误和延迟响应。
  • 我很困惑为什么我配置的计算能力/规模无法在基线 .net core 2 Controller 上处理超过 530 个并发请求。我想知道这是否正常。想知道是否可能缺少一些优化点?我选择了基线 .NET Core Web 服务实现,因为我想从一个我确信无法进一步优化的代码库开始,这样我就可以首先专注于计算需求。

如果这些是 Azure 中托管的基准 .NET Core 2 Web 服务的预期结果,那么看起来我们将不得不花费更多的钱,因为我们希望能够处理超过 3000 个峰值期间响应时间/延迟不会超过 30 秒的并发请求。就自动负载平衡而言,在我们的实例中,峰值是随机出现的。我无法透露细节,但绝对没有办法确定这些峰值何时会出现,这是一个非常独特的业务案例,但不可避免。

我还想知道 JMeter 是否是验证这些结果的最佳工具。这似乎是一个受人尊敬的工具,如果有人有幸使用其他负载测试工具,请推荐。

这是我在 Startup.cs 中配置/服务启动时所进行的所有操作

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseHsts();
}

// TO DO: build whitelist
// app.UseCors(
// options => options.WithOrigins("http://example.com").AllowAnyMethod() );
app.UseCors(options => options.WithOrigins("*").AllowAnyMethod());
app.UseHttpsRedirection();
app.UseMvc();

}

还有

public void ConfigureServices(IServiceCollection services)
{
// ADDCors during test stages
services.AddCors();


services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);


}

最佳答案

.NET core 在处理高 RPS 方面非常不错。当您运行此类测试和设计应用程序时,有很多因素,这些因素可以基于以下但不限于。

.NET Core版本

您刚刚提到您正在使用 .NET Core 2。请注意,.NET Core 2.X 有多个版本,.NET 2.0 和 .NET 2.2 之间存在相当大的性能差异。如果您想了解有关性能差异的更多信息,请关注 Microsoft 的 Jon Galloway 的以下链接。 https://www.youtube.com/watch?v=04SmFYwLPwM&feature=youtu.be&list=LLxfaEBq0Fa7eiKokf98ojxA&t=167

基准

您可能会根据个人经验找到不同的基准,但我更喜欢由社区运营的 techempower。 https://www.techempower.com/benchmarks/

性能测试工具

JMeter 是一个不错的性能测试工具,您提到的响应时间非常长,理想情况下应以毫秒为单位,因此有些事情不正确,肯定需要调查。您可以使用 Azure 性能测试工具来验证您的测试。 Azure 性能测试工具为您提供更深入的见解。 https://learn.microsoft.com/en-us/azure/devops/test/load-test/app-service-web-app-performance-test?view=vsts

处理尖峰

当您使用 Azure Web Apps 测试峰值时,您需要注意一些事项。如果您了解 Web 负载,Azure Web Apps 是不错的选择。使用 Azure Web 应用程序处理峰值可能具有挑战性。您需要注意,如果您的峰值导致新实例配置,新虚拟机可能需要几分钟的时间来处理请求,并且通常您必须过度配置虚拟机来处理峰值,这可能是成本高昂的选择。

您更喜欢使用容器(例如 Docker)+ Orchestrator(例如 Azure Kubernetes)或无服务器(Azure Functions)或两者来处理峰值,它们是专门为此设计的,并且几乎可以立即调整以适应峰值。

当您构建应用程序来处理高 RPS 时,它可以基于以下但不限于您选择的区域、云服务的选择(Azure Web 应用程序、容器、无服务器、VMS)、智能缓存、数据库、扩展指标和选择的语言。没有单一的答案,这实际上取决于您想要实现的目标。

其他工具和测试

Microsoft 的应用程序洞察是非常强大的工具,可以更深入地了解性能测试。使用 Azure 进行测试时,请始终配置应用程序洞察来验证结果。

运行不同的测试组合,例如更长的用户启动时间、过度配置 Azure Web Apps 实例、选择操作系统(Linux 和 Windows),并结合不同的监视工具来获得一些可比较的结果。

希望有帮助!

关于c# - 对于作为 Azure 应用服务 (P3) 托管的 .NET Core 2 Web api 的基准 RPS,我的期望应该是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54053931/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com