ASP NET Задержка принятия Core WebSocket - PullRequest
0 голосов
/ 04 мая 2020

У меня сервер Websocket работает в ASP. NET Core. Как только сервер достигает 15 одновременных подключений к веб-сокету, он начинает принимать новые подключения только один раз в секунду. Первые 15 являются мгновенными, но будущие соединения задерживаются.

        public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStartup<Startup>();
                });

Тогда моя конфигурация включает только основы.

        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }

            app.UseWebSockets();
            app.UseMiddleware<WebsocketMiddleware>();

            app.UseStaticFiles();
        }

Первоначально я подозревал, что это может быть проблема с обработкой в пользовательское промежуточное ПО, но после диагностики c не было обнаружено узких мест.

Есть ли скрытая конфигурация для ASP NET Задержка параллельных соединений ядра?

10:15:15 INF] Microsoft.AspNetCore.Hosting.Diagnostics[1]
      Request starting HTTP/1.1 GET http://localhost:5000/
10:15:16 INF] Microsoft.AspNetCore.Hosting.Diagnostics[1]
      Request starting HTTP/1.1 GET http://localhost:5000/
10:15:17 INF] Microsoft.AspNetCore.Hosting.Diagnostics[1]
      Request starting HTTP/1.1 GET http://localhost:5000/
10:15:18 INF] Microsoft.AspNetCore.Hosting.Diagnostics[1]
      Request starting HTTP/1.1 GET http://localhost:5000/
10:15:19 INF] Microsoft.AspNetCore.Hosting.Diagnostics[1]
      Request starting HTTP/1.1 GET http://localhost:5000/

Эти запросы тестировались с помощью JMeter, который мгновенно создавал 20 подключений к веб-сокету, но сервер останавливал запросы, что приводило к тайм-аутам.

1 Ответ

0 голосов
/ 09 мая 2020

Я тоже нашел эту проблему. Я развернул его на liunx и обнаружил, что первый запрос создаст большое количество потоков, а затем второй запрос будет быстрым, потому что поток был создан. Не знаете почему?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...