Для приложения .NET Core 2.2, развернутого на одном хосте AWS EC2, я сравниваю хостинг IIS с обычным хостингом Kestrel.
Для настройки IIS я следовал документации MS.
Для Kestrel я просто использовал:
dotnet app.dll --server.urls http://*:5000
Я провожу «стресс-тест» с JMeter, чтобы сравнить пропускную способность. Этот тест просто вызывает конечную точку приложения со 100 потоками в течение 10 секунд (5 секунд разминки). Обратите внимание, что конечная точка в основном получает одни и те же данные из базы данных MSSQL Server при каждом вызове, без кеширования и т. Д.
В результате Kestrel не выполняет 75% запросов с ошибками закрытия / тайм-аута сокета:
ВОПРОС: Какая ошибка конфигурации может привести к такому поведению Kestrel? Я пробовал использовать базовый обратный прокси-сервер nginx перед Kestrel, но все равно получаю те же результаты.