Web services Azure Web应用上的高响应时间
我已经开发了一个RESTful api,部署在Azure Web App上。在使用JMeter执行负载测试时,我发现响应时间非常长,即约18秒。这个响应时间让我震惊,因为我公开的端点只接收~1-2KB的文本数据,并将其排入azure服务总线队列 我研究发现:Web services Azure Web应用上的高响应时间,web-services,azure,azure-web-app-service,performance-testing,message-queue,Web Services,Azure,Azure Web App Service,Performance Testing,Message Queue,我已经开发了一个RESTful api,部署在Azure Web App上。在使用JMeter执行负载测试时,我发现响应时间非常长,即约18秒。这个响应时间让我震惊,因为我公开的端点只接收~1-2KB的文本数据,并将其排入azure服务总线队列 我研究发现: Azure Web应用程序和队列需要位于同一区域是的,他们是 虚拟机的大小很重要我的是S3大的 软件设计需要良好/优化仅控制器排队,无其他操作 为了进行负载测试,我在Azure Web应用程序所在的同一区域设置了一个VM实例,以最小化延迟。
QueueClient
的实例,我将其重新用于所有请求。代码就是ApiController
ServiceBusManager.GetQueueWriter().Enqueue(data); //data is no more than ~1KB
return Request.CreateResponse(HttpStatusCode.OK, "Data enqueued");
可能有几个原因:
代码在哪里?既然您提到了队列,“响应时间”是RESTAPI调用返回的延迟,还是处理队列消息之前的时间?我看到队列传递延迟变化很大,从几乎瞬间到30秒或更长。您是否研究过服务总线队列客户端的初始化?是否在控制器构造函数中重新创建队列客户端?这可能会很快增加,特别是如果ServiceBus限制了您的连接数量。如果是这样,您应该考虑使用依赖项注入来重用实例。另请参见@McGuireV10响应时间是REST API调用返回的延迟。在这种情况下,队列消息处理只需要300毫秒。@Alexat我有一个singleton类,它创建QueueClient的一个实例,然后我将该实例用于所有请求。1-从门户上的图表中,我看到CPU和RAM没有过载。RAM使用率低于~200MB,CPU使用率也太低。2-或者,我也使用基于Azure云的负载测试工具进行了测试,结果基本相同-响应时间长。3-我已经用代码更新了我的问题,看起来非常简单和直接,尽管我会查看分析器。4-唯一涉及的机器是Azure Web App,我已将其扩展到Azure(独立机器)上的最高产品,时间似乎提高了约8秒,但仍然很高(约8-10秒)