Azure Web 应用响应时间较长

Azure Web 应用响应时间较长

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

我进行了研究并发现了以下内容:

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

为了进行负载测试,我已在与 Azure Web App 相同的区域中配置了一个 VM 实例,以最大限度地减少延迟。入队语句需要以毫秒为单位的时间,所以我想知道在服务处于负载状态时为什么会花费额外的几秒钟?

我的代码创建了一个 QueueClient 实例,我会将其重复用于所有请求。代码只是 ApiController 中的以下两行

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

答案1

  1. 确保您的 Azure WM 实例在 CPU、RAM、磁盘和网络方面没有过载。您可以使用以下任一方法执行此操作:Azure 诊断扩展或者JMeter PerfMon 插件
  2. 确保你关注JMeter最佳实践
  3. 尝试增加负载逐步地,这样您将能够将不断增加的虚拟用户数量与不断增加的响应时间关联起来,并能够说明性能何时开始下降。
  4. 使用分析器工具遥测运行测试(即连接您的套件或者点跟踪) - 这样您将能够知道您的应用程序在哪里花费了那么多时间。

相关内容