Alto tempo de resposta no Azure Web App

Alto tempo de resposta no Azure Web App

Desenvolvi uma API RESTful que implantei no Azure Web App. Ao realizar o teste de carga usando JMeter, vejo que o tempo de resposta é enorme, ou seja, aproximadamente 18 segundos. Esse tempo de resposta me assusta porque o endpoint que expus recebe apenas cerca de 1-2 KB de dados de texto e os enfileira na fila do barramento de serviço do Azure.

Eu pesquisei e encontrei o seguinte:

  1. O Aplicativo Web do Azure e a Fila precisam estar na mesma região.sim, eles estão
  2. O tamanho da VM é importante.O meu é S3 Grande
  3. O design de software precisa ser bom/otimizado.O controlador apenas enfileira, nenhuma outra operação

Para testes de carga, provisionei uma instância de VM na mesma região que o Aplicativo Web do Azure para minimizar a latência. A instrução enqueue leva um tempo da ordem de milissegundos, então eu me pergunto o que está demorando os segundos extras enquanto o serviço está sendo carregado?

Meu código cria uma única instância de QueueClient que reutilizo para todas as solicitações. O código consiste apenas nas duas linhas a seguir dentro de um ApiController

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

Responder1

  1. Certifique-se de que suas instâncias do Azure WM não estejam sobrecarregadas em termos de CPU, RAM, disco e rede. Você pode fazer isso usandoExtensão de Diagnóstico do AzureouPlug-in JMeter PerfMon
  2. Certifique-se de estar seguindoMelhores práticas do JMeter
  3. Tente aumentar a cargagradualmente, dessa forma você poderá correlacionar o aumento do número de usuários virtuais com o aumento do tempo de resposta e poderá indicar quando o desempenho começa a diminuir.
  4. Execute seu teste com telemetria da ferramenta profiler (ou seja, conecteSeuKitoupontoTrace) - dessa forma você poderá saber onde seu aplicativo passa tanto tempo.

informação relacionada