Задать вопрос

Нужно ли использовать keep-alive между reverse proxy (nginx) и backend сервером?

Есть веб сервер бекенда, перед ним стоит nginx. Имеет ли смысл использовать между ними keep-alive? Интересует ответ с точки зрения производительности и затрат ресурсов обоих серверов.

Размышления:
- При включенном keep-alive должно плодиться меньше соединений, тем более что через несколько постоянных соединений должны пролезать много запросов от многих пользователей.
- С другой стороны висячие keep-alive соединения расходуют ресурсы как операционки, так и обоих веб серверов.
- Предположим что бекенд будет отдавать контент медленно (я не знаю по каким причинам, но вдруг), тогда количество keep-alive соединений может сильно вырасти и остаться висеть все время их существования. Не приведет ли это к какому-нибудь неприятному эффекту? Понятно, что если их будет слишком много, то новые соединения не будет создаваться, но без keep-alive и с медленным бекендом их ведь так же будет очень много? Возможно, нужно использовать keep-alive с небольшим таймаутом (пару секунд)?
  • Вопрос задан
  • 6981 просмотр
Подписаться 3 Оценить Комментировать
Ответ пользователя Влад Животнев К ответам на вопрос (2)
@inkvizitor68sl
Linux-сисадмин с 8 летним стажем.
Ну и да, не забывайте, что nginx не так давно поддерживает keep-alive к бэкэндам, так что вполне вероятно, что в какой-нибудь lts убунте текущая версия вообще не поддерживает его.

С клиентами keep-alive лучше включать, если на ваш сайт ходят посмотреть больше, чем полторы странички, само собой. Да и nginx почти ничего не тратит на поддержание таких соединений - почти вся работа в этом месте делается ядром.
Ответ написан
Комментировать