Вопрос: Какая производительность для https vs http для apache?


Примерно, сколько ударов по производительности будет занимать https по сравнению с http для одной и той же страницы? Предположим, что я могу обрабатывать 1000 запросов / с для abc.php, насколько это будет уменьшаться при доступе через https? Я знаю, что это может зависеть от аппаратного обеспечения, конфигурации, ОС и т. Д., Но я просто ищу общее правило большого пальца / оценку.


50
2017-07-21 18:45


Источник


+1 Спасибо, что спросили об этом. :) - M.N
Было бы неплохо увидеть принятый для этого ответ. - Hyppy


Ответы:


Для быстрого и грязного теста (т. Е. Никакой оптимизации вообще!) Я включил простой веб-сайт Ubuntu apache2 по умолчанию (который просто говорит «Это работает!») С HTTP и https (самозаверяющим сертификатом) на локальной Ubuntu 9.04 VM и запустил apache контрольный показатель "ab«с 10 000 запросов (без параллелизма). Клиент и сервер были на одном компьютере / виртуальной машине:

Результаты для HTTP (»ab -n 10000 http://ubuntu904/index.html«)

  • Время, затраченное на тестирование: 2,664 секунд
  • Запросов в секунду: 3753.69 (# / sec)
  • Время в заказе: 0.266мс

Результаты для HTTPS (»ab -n 10000 https://ubuntu904/index.html«):

  • Время, затраченное на тестирование: 107,673 секунд
  • Запросов в секунду: 92.87 (# / sec)
  • Время в заказе: 10.767мс

Если вы посмотрите ближе (например, с помощью tcpdump или wirehark) в сообщении tcp / ip одиночный запрос вы увидите, что для случая HTTP требуется 10 пакетов между клиентом и сервером, тогда как для https требуется 16: Задержка намного выше с https. (Больше о важности задержки Вот)

Добавление keep-alive (ab вариант -k) к тесту улучшает ситуацию, потому что теперь все запросы имеют одно и то же соединение, то есть накладные расходы SSL ниже, но https все еще измеряется медленнее:

Результаты для HTTP с keep-alive ("ab -k -n 10000 http://ubuntu904/index.html«)

  • Время, затраченное на тестирование: 1,200 секунд
  • Запросов в секунду: 8334.86 (# / sec)
  • Время в заказе: 0.120мс

Результаты для HTTPS с keep-alive ("ab -k -n 10000 https://ubuntu904/index.html«):

  • Время, затраченное на тестирование: 2,711 секунд
  • Запросов в секунду: 3688.12 (# / sec)
  • Время в заказе: 0.271мс

Вывод:

  • В этой простой тестовой таблице https намного медленнее, чем http.
  • Рекомендуется включить поддержку https и бенчмарка Ваш сайт чтобы посмотреть, хотите ли вы заплатить за накладные расходы https.
  • Используйте wirehark, чтобы получить впечатление от накладных расходов SSL.

57
2017-07-22 00:25



+1 Хорошая работа там. Спасибо, что разместили номера. - M.N
Можем ли мы получить некоторые спецификации аппаратного обеспечения этой машины? шифрование сильно зависит от мощности процессора. - Matt Simmons
Недавно я много тестировал на VPS, и единственной самой большой вещью, которая повлияла на производительность, был используемый шифр. Если вы ограничиваете шифры до 128 бит, вы можете получить около 500-600 запросов в секунду. Использование 256-битного шифра, который будет снижаться до 100 запросов в секунду. Я считаю, что когда я проводил собственное тестирование, это было 30 запросов в секунду. Очевидно, что фактические цифры зависят от вашей машины. - kovert
Мэтт Симмонс, я использовал двухъядерную 64-битную Ubuntu 9.04 VM (VMware Fusion), запущенную в начале 2008 года Mac Pro с 2x четырехъядерными процессорами Intel Xeon с тактовой частотой 2,8 ГГц. - knweiss
Ваш ответ помешал мне опубликовать вопрос, который был бы закрыт в течение 20 секунд. Благодаря! - MonkeyZeus


На современных серверах я бы сказал, что вашим узким местом будет сеть и ваше приложение, а не шифрование. TLS / SSL в apache будет написан на довольно оптимизированном C, поэтому будет затмевать ваш PHP-код, особенно если вы собираетесь делать такие вещи, как доступ к базе данных. Обслуживание статических файлов, вероятно, будет иметь большее влияние, поскольку шифрование станет большей частью всего процесса. Я не могу дать вам никаких конкретных цифр, но я был бы удивлен, если бы это было более 5% и, вероятно, приблизилось к паре процентов.


10
2017-07-21 18:53



Давид прав, это зависит от вашего контента. Хорошим способом было бы ориентироваться на скамье Apache httpd.apache.org/docs/2.2/programs/ab.html - radius
Помимо скорости шифрования, как насчет SSL-подтверждения, будет ли это иметь влияние на производительность и пропускную способность сервера? - erotsppa
Квитирование SSL добавит пару пакетов к передней части соединения. Воздействие этого будет в значительной степени зависеть от латентности соединения между сервером и клиентом. HTTP keepalives уменьшит влияние этого подтверждения. - David Pashley


Не принимайте ничего, проверьте сами! Разумеется, в ваших конкретных веб-приложениях.


8
2017-07-21 22:04





Я нахожу, что на современном оборудовании я с большей вероятностью буду привязан к I / O для конкретной транзакции, чем я вычислил (вычислить). Это особенно актуально, когда речь идет о сжатии и шифровании. В наши дни 128-битное шифрование является тривиальным - я обычно получаю гораздо более сложное построение и доставку исходящих страниц, чем я использую SSL, и не заметил существенной разницы в производительности между http и https-трафиком за несколько лет.


1
2017-07-21 19:08





Во второй рекомендации для nginx. В моих собственных тестах он отлично поддерживался как выделенный SSL-разгрузчик.


1
2017-07-22 10:23





Конечно, если обработка SSL сильно ударит, вы всегда можете переместить ее вне сервера в выделенный раздел. Есть хорошая запись об этом с nginx over Вот, Это то, что мы сделали на высоконагруженных серверах с балансировкой нагрузки уровня 7.


0
2017-07-21 18:59





Я могу подтвердить, что добавленная загрузка для шифрования очень мала по сравнению с любым другим включенным элементом (сценарии, сеть, ...)


0
2017-07-21 21:01