ASP.NET Core 2.1 Обработка использования ServiceScope с зависимостями от каждого входящего сообщения промежуточного программного обеспечения WebSocket - PullRequest
0 голосов
/ 26 июня 2019

У меня есть некоторые проблемы с производительностью при использовании веб-сокетов в ASP.NET Core 2.1

Сначала у меня есть реализация веб-сокетов, подобная этому примеру: https://radu -matei.com / blog /aspnet-core-websockets-middleware /

При каждом входящем сообщении websocket мне нужно его проанализировать, вызвать некоторые службы, отправить сообщение обратно в websocket.

if (result.MessageType == WebSocketMessageType.Text)
{
   using (var scope = service.CreateScope())
   {
      var communicationService = scope.ServiceProvider.GetSomeService(); 
      await communicationService.HandleConnection(webSocket, result, buffer);
   }
}

Итаккак вы видите в каждом входящем сообщении, я создаю новый Scope, получаю сервис-провайдера, а затем вызываю сервисы по методу данного сервиса communicationService.HandleConnection.Но если сообщений много, мой процессор Azure WebService загружается до 100%.Может кто-нибудь сказать мне, правильно ли я использую эти создания областей в каждом сообщении сокета?

1 Ответ

0 голосов
/ 27 июня 2019

Трудно сказать наверняка с предоставленным вами фрагментом кода (т. Е. Временем жизни и типом communicationService. С учетом этого я посмотрю на https://docs.microsoft.com/en-us/azure/app-service/faq-availability-performance-application-issues, чтобы сделать снимок службы вашего приложения, когда скачок процессора до 100%. Вы можете обнаружить, что проблема может быть не связана с вашим using (scope).

...