Настройка Apache KeepAlive Timeout для HTTPS

Мой сайт везде использует HTTPS и имеет среднее время первой загрузки 3-5 секунд. Благодаря кешированию время повторной загрузки составляет 0,8 секунды.

На моем сервере согласование SSL занимает 150-300 мс, поэтому я хочу поддерживать каждое соединение как можно чаще, чтобы избежать задержки.

Для SSLSessionCache установлено значение по умолчанию 300 секунд.

Apache KeepAlive Timeout недавно был уменьшен с 5 до 2 секунд.

Это изменение привело к заметному снижению средней нагрузки на сервер (в среднем на 5% вместо 10% в среднем), но мне интересно, может ли оно также вызывать более медленное время первой загрузки, если первые времена загрузки составляют 3-5 секунд? Означает ли это, что он должен выполнять проверку SSL снова каждый раз, когда проходит 2-секундный таймаут?

Лучше иметь немного более высокие средние значения нагрузки с меньшим количеством согласований SSL (но с большим количеством спящих задач httpd), или более низкие средние значения нагрузки с большим количеством согласований SSL?

У нас определенно достаточно ресурсов процессора и памяти. Итак, в конечном итоге вопрос заключается в том, что приведет к лучшей производительности для наших зрителей? Увеличение таймаута KeepAlive до 3-5 или сохранение его на 2?

Спасибо!

1 ответ

Что касается нагрузки на сервер: вы не говорите, что это за операционная система. Для большинства разновидностей Unix (включая Linux), если нагрузка меньше количества процессоров, вам, вероятно, не стоит об этом беспокоиться. В этом сценарии каждый процесс остается в ЦП до тех пор, пока он может делать полезные вещи там (более или менее). Но когда есть очередь процессов, ожидающих, чтобы добраться до ЦП, ОС будет прерывать задачи, прежде чем они будут готовы к выдаче - когда это происходит, ваша пропускная способность начинает падать.

(Я никогда раньше не видел нагрузки, выраженной в% - откуда это взялось?)

Относительно времени загрузки страницы: журналы вашего сервера не место для поиска. Если вы хотите выяснить, оказывает ли это влияние, вам нужно посмотреть на водопад загрузки страниц в браузере (инструменты разработчика в Chrome, Firebug в Firefox или использовать онлайн-проверку, такую ​​как pingdom - не забудьте использовать прокси для добавления задержка, если вы тестируете локально). Вы ищете промежутки между запросами к вашему сайту больше, чем ваш keepAliveTimeout.

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

(Хорошо, так что мы на самом деле ищем промежутки между запросами в одном сокете - но это трудно визуализировать).

Другие вопросы по тегам