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

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

Размышления:  

- При включенном keep-alive должно плодиться меньше соединений, тем более что через несколько постоянных соединений должны пролезать много запросов от многих пользователей.  

- С другой стороны висячие keep-alive соединения расходуют ресурсы как операционки, так и обоих веб серверов.  

- Предположим что бекенд будет отдавать контент медленно (я не знаю по каким причинам, но вдруг), тогда количество keep-alive соединений может сильно вырасти и остаться висеть все время их существования. Не приведет ли это к какому-нибудь неприятному эффекту? Понятно, что если их будет слишком много, то новые соединения не будет создаваться, но без keep-alive и с медленным бекендом их ведь так же будет очень много? Возможно, нужно использовать keep-alive с небольшим таймаутом (пару секунд)? 

 Зависит от. Если у вас большой запас по памяти/процессору - включайте (само собой, покрутив кол-во воркеров бэкэнда до нужной циферки).   

Если памяти мало - то keep-alive не будет давать "лишним" процессам бэкэнда (особенно, если это apache2) завершаться и высвобождать память. Например, без keep-alive вполне себе можно отвечать достаточно бодро двумя-тремя процессами апача, а с включенным keep-alive оно наверняка подскочит до максимума одновременно запущенных.   
  

Вообще же операция установления соединения по локальной петле стоит копейки по времени, поэтому если вы в бэкэнд явно ходите по 127.0.0.1 (или ::1) и у вас не low-latency сервис, где вы боретесь за каждую миллисекунду времени ответа - лучше выключить. 

 Ну и да, не забывайте, что nginx не так давно поддерживает keep-alive к бэкэндам, так что вполне вероятно, что в какой-нибудь lts убунте текущая версия вообще не поддерживает его.   
  

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