web-services - Azure Web App 响应时间较长

标签 web-services azure azure-web-app-service performance-testing message-queue

我开发了一个 RESTful API,并将其部署在 Azure Web App 上。在使用 JMeter 执行负载测试时,我发现响应时间很长,即约 18 秒。这个响应时间让我感到震惊,因为我公开的端点仅接收约 1-2KB 的文本数据并将其排入 Azure 服务总线队列。

我研究并发现以下内容:

  1. Azure Web App 和队列需要位于同一区域。 是的
  2. 虚拟机的大小很重要。 我的是S3 Large
  3. 软件设计需要良好/优化。 Controller 只进行入队,没有其他操作

为了进行负载测试,我在与 Azure Web App 相同的区域中预配了一个 VM 实例,以最大程度地减少延迟。入队语句花费的时间约为毫秒,所以我想知道在服务加载时是什么花费了额外的秒数?

编辑:我的代码创建 QueueClient 的单个实例我将其用于所有请求。代码就是 ApiController 中的以下两行

ServiceBusManager.GetQueueWriter().Enqueue(data); //data is no more than ~1KB                
return Request.CreateResponse(HttpStatusCode.OK, "Data enqueued");

最佳答案

可能有多种原因:

  1. 您的 Azure VM 很容易过载(即缺少 CPU 或 RAM),因此请确保它有足够的运行空间。您可以使用 Azure Diagnostics Extension 监控虚拟机资源消耗情况或JMeter PerfMon Plugin
  2. 您的 JMeter 机器过载。默认 JMeter 配置有利于测试开发和/或调试,在进行负载测试时请确保遵循 JMeter Best Practices
  3. 问题可能出在您的应用程序代码中,请使用分析器工具遥测重新运行测试(即使用 YourKit .NET Profiler ) - 这将允许您检测最重的方法、最大的对象、最慢的数据库查询等。<
  4. 基础设施配置可能不适合高负载。检查您的应用程序服务器、数据库和其他中间件设置,并确保有足够的线程来服务 JMeter 生成的虚拟用户,否则请求将排队。

关于web-services - Azure Web App 响应时间较长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48789445/

相关文章:

web-services - 返回图像和数字的 Web 服务

node.js - 刷新页面时出现 404

c# - 推送通知不使用 Azure 从控制台发送

azure - 配置 Azure 域服务时无法 PING 注册的域名

powershell - Azure Process Explorer 中的 KuduHandles 是什么?

java - Android Web 服务客户端 (JSON)

java - 最接近Java中网页重新加载的等价物

azure - 为什么我的 IdentityServer4 应用程序无法在 Azure WebApp 托管环境中启动?

java - Java soap调用以将.XML文件传递给WebService

c# - Azure 应用服务 - 从应用程序内管理扩展