Комментарии 21
зачем было это переводить? статья абсолютно пустая.
конфигов нет, многопоточных тестов нет, зато зачем-то bbr включили.
Спасибо, что не тест СУБД, а то как-то в похожей ситуации автор все комментарии слюной забрызгал, рассказывая, что «база должна оптимально настраиваться сама во время инсталляции!!1».
никак не спорю с вами, но замечу, если база может оптимально настроиться сама — за это ей жирный плюс.
ну, например, если сравнивать postgresql и ms sql, то последний с настройками по умолчанию использует всю доступную память сервера. и если приложения требуют — отдаёт её обратно. уже «из коробки» имеет разумные значения MAXDOP (количество потоков, на которые может быть распределён запрос). и т. д., и т. п.
В смысле — включить?
Ну вот после компиляции с целевой платформой windows получается exe-файл. Если не воротить ничего нестандартного, то его запуск запустит Kestrel.
А если каталог с программой зарегистрировать в IIS как веб-приложение, то Kestrel запускаться не будет (это определяется на основе переменных окружения, которые передаёт ASP.NET Core-модуль в IIS).
Думаю, не ошибусь, если скажу что с практической точки зрения наиболее интересен вариант nginx + kestrel
И сразу вопрос к знающим. А можно ли обойтись там без kestrel в принципе? Вроде бы, есть какой-то OWIN, можно ли его использовать каким-то простым способом, или надо для этого много кодить? Обычный publish создаёт вариант под kestrel же? Я как-то даже особо не задумывался, часто делаю разные API, просто шаблонный проект из студии беру, пилю нужные контроллеры, потом publish в папочку под Linux, ну и на сервак. Всё работает, все счастливы. Но в высоконагруженном проекте, если можно обойтись без kestrel, то как это сделать? И даст ли это существенный прирост? Насколько я понимаю - kestrel при наличии nginx (без которого никуда) - просто лишняя сущность, которую если выпилить, станет только лучше.
Или не?
«Сокеты UNIX для повышения производительности при работе за Nginx»
А можно ли обойтись там без kestrel в принципе? Вроде бы, есть какой-то OWIN, можно ли его использовать каким-то простым способом, или надо для этого много кодить?
OWIN — это (устаревший) стандарт конфигурации веб-сервера, к нему должен прилагаться поддерживающий его веб-сервер. Вы не можете использовать OWIN вместо Kestrel.
И нет, Kestrel — совершенно не лишняя сущность. Попробуйте в "классической" связке nginx + php-fpm избавиться от php-fpm — c Kestrel та же история.
OWIN умер вместе с .net framework. Если честно, то я не знаю, были ли другие реализации OWIN кроме katana для iis. Теоритически можно было бы создать реализацию для nginx, но .net core пошёл другой дорогой и на данный момент на linux нельзя запустить приложение без kestrel
Жалко, что в этой статье нет тестов этой реализации, особенно — на платформе Windows: там она имеет неплохой потенциал, вполне сравнимый с IIS InProcess, и интересно было бы посмотреть, как она этот потенциал использует.
На других же платформах ее вряд ли стоит использовать при сколь-нибудь заметной нагрузке — сомнительно, чтобы эта, в общем-то, самопальная, реализация смогла бы превзойти спецально оптимизированный веб-сервер.
А вот неожиданностью для меня стало то, что производительность Windows-серверов c Kestrel оказалась выше производительности аналогичных Linux-серверов. Это меня удивило.
Для меня тоже было полной неожиданностью, что многонитиевое (multi threading) приложение под Linux показало худшие результаты, чем то же самое приложение под Windows. После детального анализа и самого приложения и чтения форумов, выяснилось, что это особенность нынешней реализации .Net Core. Обещали исправить к релизу .Net Core 6.0 — посмотрим, исправят ли. В нашем случае производительность примерно на 40-50% хуже под Linux, чем под Windows.
Тест пропускной способности ASP.NET Core 5.0 в Kestrel, IIS, Nginx и Caddy