Можно ли включить Keep-alive с помощью балансировщика нагрузки? - PullRequest
12 голосов
/ 21 ноября 2011

Я пытаюсь оптимизировать свое веб-приложение, используя Google Page Speed ​​API, который выделил отсутствие «Keep-alive» в моих заголовках HTTP-ответа как основной недостаток скорости страницы.

В разговоре с моимВнутренние разработчики и системные администраторы сказали мне, что использование Keep-alive на сайте невозможно, потому что мы используем балансировщик нагрузки.

Мне интересно, это точно?Существуют ли балансировщики нагрузки, поддерживающие Keep-alive?

Мне кажется странным, что API Page Speed ​​пожаловался бы на Keep-alive, если бы его нельзя было использовать с балансировщиками нагрузки, потому что я мог бы представить достаточное количество приложенийи крупные сайты используют балансировщики нагрузки.

Спасибо!

1 Ответ

6 голосов
/ 10 января 2012

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

Балансировщик нагрузки будет обрабатывать каждое входящее соединение с одним из внутренних серверов. Теперь для каждого объекта браузер должен создать новое соединение, чтобы просто извлечь этот объект (например, все маленькие изображения). Установление и закрытие TCP-соединений занимает некоторое время. Вот почему Google Page Speed ​​предлагает включить поддержку активности. Другой вариант - поместить все ваши маленькие изображения в одно большое изображение и использовать css-спрайты, чтобы отобразить его часть в разных местах на вашей странице.

Но вернемся к балансировщику нагрузки. Если у вас есть балансировщик сетевой нагрузки, он должен работать без каких-либо вопросов - он просто перенаправит входящее TCP-соединение на один из внутренних серверов. Если у вас есть HTTP-балансировщик нагрузки, он примет соединение, прочитает запрос, отправит запрос на внутренний сервер, дождется его ответа и отправит ответ обратно в браузер. Если вы включите keep-alive, балансировщик нагрузки должен переслать следующий запрос, полученный по тому же соединению.

Для динамических страниц вам не нужно поддерживать активность. Поддержание активности в основном полезно для статического содержимого (js, images, css), поскольку для каждой HTML-страницы обычно имеется более 10 статических объектов. Поэтому я бы предложил продолжить обслуживание html через этот балансировщик нагрузки и показывать статический контент с другим именем хоста (static.example.com).

...