Я столкнулся с проблемой, связанной с тем, что мой API генерировал огромную загрузку ЦП lsass.exe. Среда:
- Windows Server 2016
- .NET Core 2.2 (также протестировано с. NET Core 3.0)
Чтобы исследовать его, я создал новый веб-сайт ASP.NET Core, используя шаблон по умолчанию (dotnet new web
). Я обновил конфигурацию Kestrel, чтобы она выглядела следующим образом:
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.ConfigureKestrel((context, options) =>
{
options.AddServerHeader = false;
options.Listen(IPAddress.Any, 5001, listenOptions =>
{
listenOptions.UseHttps(StoreName.My, "*.mycertificate.domain", false, StoreLocation.LocalMachine);
});
})
.UseStartup<Startup>();
});
Помимо этого веб-сайта, я создал нагрузочный тест с использованием JMeter, чтобы поразить веб-сайт с такой нагрузкой:
При запуске теста, просматривающего домашнюю страницу веб-сайта, в результате процесс lsass.exe для интенсивного использования ЦП закрывает 100%.
Я запустил другие тесты, используя эти конфигурации, и результатвсе тот же
- Kestrel, использующий различные способы загрузки сертификата
- IIS с использованием веб-сайта InProcess с привязкой https к сертификату
- HTTP.sys
Есть идеи, как правильно настроить https на aspnet-core для создания API с большой нагрузкой? Спасибо за вашу помощь