У меня сервер 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 подключений к веб-сокету, но сервер останавливал запросы, что приводило к тайм-аутам.