Включить KeepAlive или нет?

9

Каково мнение о том, что KeepAlive работает с сайтом Magento с высоким трафиком? Похоже, что большинство людей рекомендуют включить его, но затем Magento заявляет, что в максимальной производительности и масштабируемости с Magento Enterprise Edition они отказываются от этого, утверждают они.

«Когда веб-сервер находится под большой нагрузкой, сохранение постоянных соединений становится невыгодным, поэтому директива KeepAlive всегда должна быть отключена»

Мысли?

Джереми Миллер
источник

Ответы:

4

Отличный вопрос!

Традиционно KeepAlive был хорошей вещью, поскольку он значительно снижает накладные расходы TCP на общую загрузку страницы, когда многие запросы (например, все изображения, css, js) обслуживаются с одного сервера. Если ваша страница содержит 85 ресурсов, это 85 дополнительных трехсторонних квитирований TCP, и задержка увеличивается. Много лет назад при более медленных интернет-соединениях это было гораздо важнее, чем сейчас, хотя это все еще весьма актуально для мобильных браузеров или любых медленных / с высокой задержкой соединений.

Однако упомянутое здесь влияние касается времени, в течение которого эти TCP-соединения остаются открытыми, и того, может ли это быстро исчерпать ваши дочерние процессы Apache. Большинство значений по умолчанию, которые я видел:

KeepAliveTimeOut 15
MaxClients 256

Это означает, что если бы у меня было 256 разных браузеров, запрашивавших контент в течение одних и тех же 15 секунд, то 257-му клиенту пришлось бы ждать, пока соединения не прервутся. Не хорошо - это не особенно большой трафик вообще, поэтому он объясняет этот совет. Это также может привести к увеличению количества клиентов MaxClients, которые могут потреблять много памяти. Когда я использую KeepAlives, я обычно устанавливаю KeepAliveTimeout на 2 или 3 секунды; это время простоя между запросами, а не все время для всех запросов.

Если вы используете KeepAlive, существует баланс между KeepAliveTimeout, MaxClients и ресурсами сервера. Чтобы помочь с этим, «service httpd / apache2 fullstatus» покажет вам количество подключений, используемых KeepAlives за один раз - обозначенное заглавной буквой «K».

Хотя для Magento я не думаю, что вам нужен KeepAlives.

Что вы должны делать, если у вас корпоративный сайт с очень высоким трафиком, - использовать CDN для статического контента.

Если вы продаете в нескольких странах, использование CDN не только ускорит общую загрузку страниц для ваших клиентов (что хорошо), но и значительно уменьшит пропускную способность, приходящую на ваш сервер. Настройки в разделе «Система»> «Конфигурация»> «Интернет»> «Не защищен» позволяют легко интегрировать любой CDN для мультимедиа, обложки и JavaScript. Это будет основная часть фактических HTTP-запросов, и в качестве бонуса вы можете использовать различные записи DNS для распараллеливания загрузок по именам хостов. Если вы делаете это правильно, то эти запросы едва коснутся вашего сервера, так что больше нет реальной необходимостидля KeepAlive. В этом случае вам следует отключить KA; мы не хотим поддерживать связь, когда мы знаем, что остальная часть контента подается откуда-то еще. Если вам нужна отдельная рекомендация CDN: CloudFlare - это фантастика, и вы даже получаете SSL с бесплатным пакетом.

При использовании CDN, подобного этому, или если вы используете какой-либо другой вид обратного прокси (например, Varnish), ваши Apache HTTP KeepAlives в основном не имеют значения.

Подводя итог, я согласен, что вам, вероятно, следует отключить KeepAlive, чтобы избежать насыщения ваших процессов Apache под нагрузкой, но определенно использовать CDN или другой обратный прокси-сервер для ресурсов, чтобы ваши страницы загружались максимально быстро.

Уилл Парсонс
источник
1
Keepalive по-прежнему актуальны во время извлечения источника из CDN. Включение / отключение не следует воспринимать легкомысленно и тщательно проверять. Я бы выступил за сокращение запросов, уменьшение активов до того, как рассматривать CDN - неправильно настроенные, они могут легко сделать магазины медленнее, чем быстрее.
Бен Лессани - Сонасси
Как настроить эту локальную систему поддержки активности для сервера XAMPP?
Бхавин Туммар