На моем веб-сайте везде используется протокол HTTPS, а среднее время первой загрузки составляет 3-5 секунд. Благодаря кешированию время повторной загрузки составляет 0,8 секунды.
Согласование SSL на моем сервере занимает 150-300 мс, поэтому я хочу поддерживать каждое соединение активным как можно чаще, чтобы предотвратить задержку.
SSLSessionCache установлен по умолчанию 300 секунд.
Время ожидания Apache KeepAlive недавно было уменьшено с 5 до 2 секунд.
Это изменение привело к заметному снижению средней нагрузки сервера (в среднем на 5% вместо 10%), но мне интересно, может ли это также вызывать более медленное время первой загрузки, если время первой загрузки составляет 3-5 секунд? Означает ли это, что он должен снова выполнять согласование SSL каждый раз, когда проходит 2-секундный тайм-аут?
Что лучше - иметь немного более высокие средние значения нагрузки с меньшим количеством согласований SSL (но больше спящих задач httpd) или более низкие средние значения нагрузки с большим количеством согласований SSL?
У нас определенно есть много ресурсов процессора и памяти. Итак, в конечном итоге вопрос в том, что даст нашим зрителям наилучшие результаты? Увеличить время ожидания KeepAlive до 3-5 или оставить его на уровне 2?
Спасибо!
По поводу загрузки сервера: вы не говорите, что это за операционная система. Для большинства разновидностей Unix (включая Linux), пока нагрузка меньше количества процессоров, вам, вероятно, не стоит об этом беспокоиться. В этом сценарии каждый процесс остается в ЦП до тех пор, пока он может делать там полезные вещи (более или менее). Но когда есть очередь процессов, ожидающих перехода к ЦП, ОС будет прерывать задачи до того, как они будут готовы выполнить задание - когда это произойдет, ваша пропускная способность начинает падать.
(Я никогда раньше не видел, чтобы нагрузка выражалась в% - откуда это?)
Что касается времени загрузки страницы: журналы вашего сервера не место для просмотра. Если вы хотите узнать, оказывает ли это влияние, вам нужно посмотреть водопад загрузки страницы в браузере (инструменты разработчика в Chrome, Firebug в Firefox или использовать онлайн-средство проверки, например пингдом - не забудьте использовать прокси для увеличения задержки, если вы тестируете локально). Вы ищете промежутки МЕЖДУ запросами к вашему сайту, превышающие значение keepAliveTimeout.
По моему опыту, интервалы продолжительностью более 1 секунды очень редко, даже в очень медленных сетях. И там, где они действительно возникают, это либо результат явной задержки (например, ленивая загрузка нового изображения в слайд-шоу), либо (что еще реже) патологический сбой на странице (например, получение очень большого, блокирующего javascript из очень медленного места. ).
(Хорошо, мы действительно ищем промежутки между запросами в одном сокете, но это трудно визуализировать).