Скільки показів продуктивності для https vs http для apache?


50

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


2
Було б добре побачити прийняту відповідь на це.
Хіпі

Відповіді:


57

Для швидкого та брудного тестування (тобто оптимізації взагалі немає) я включив простий веб-сайт Ubuntu apache2 за замовчуванням (який просто говорить "Це працює!") З http та https (самопідписаний сертифікат) на локальному Ubuntu 9.04 VM та запустив apache еталон " ab" з 10000 запитами (без паралельності). Клієнт і сервер були на одній машині / VM:

Результати для http (" ab -n 10000 http://ubuntu904/index.html")

  • Час, витрачений на тести: 2.664 секунди
  • Запити в секунду: 3753.69 (# / сек)
  • Час на запит: 0,266ms

Результати для https (" ab -n 10000 https://ubuntu904/index.html"):

  • Час, взятий для тестів: 107,673 секунди
  • Запити в секунду: 92,87 (# / сек)
  • Час на запит: 10,767 мс

Якщо ви уважніше подивитеся (наприклад, на tcpdump або wireshark) на tcp / ip-повідомлення одного запиту, ви побачите, що для випадку HTTP потрібно 10 пакетів між клієнтом і сервером, тоді як для https потрібно 16: затримка набагато більша при https. (Більше про важливість затримки тут )

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

Результати для http з Keep-Live (" ab -k -n 10000 http://ubuntu904/index.html")

  • Час, витрачений на тести: 1.200 секунд
  • Запити в секунду: 8334,86 (# / сек)
  • Час на запит: 0,120мс

Результати для https з Keep-Live (" ab -k -n 10000 https://ubuntu904/index.html"):

  • Час, витрачений на тести: 2.711 секунд
  • Запити в секунду: 3688.12 (# / сек)
  • Час на запит: 0,271ms

Висновок :

  • У цій простій тесті https набагато повільніше, ніж http.
  • Це гарна ідея, щоб увімкнути підтримку https та порівняти ваш веб-сайт, щоб побачити, чи хочете ви заплатити за накладні витрати https.
  • Використовуйте дротик, щоб отримати враження про накладні витрати SSL.

1
+1 Приємна робота там. Дякуємо за публікацію номерів.
MN

Чи можемо ми отримати деякі технічні характеристики на апаратному забезпеченні цієї машини? шифрування сильно залежить від потужності процесора.
Метт Сіммонс

1
Нещодавно я робив багато тестувань на VPS, і найбільшим, що вплинуло на продуктивність, був шифр, який використовується. Якщо ви обмежите шифри на 128 біт, то ви повинні мати можливість отримувати близько 500-600 запитів в секунду. Використання 256-бітового шифру, який знизиться до <100 запитів в секунду. Я вважаю, що коли я робив власне тестування, було 30 запитів на секунду. Очевидно, що фактична кількість залежить від вашої машини.
kovert

Метт Сіммонс, я використовував 2-ядерний 64-розрядний Ubuntu 9.04 VM (VMware Fusion), який працює на початку Mac Pro 2008 року з 2x Quad-Core 2,8 ГГц Intel Xeon процесорами.
knweiss

Ваша відповідь заважала мені публікувати запитання, яке було б закрито протягом 20 секунд. Дякую!
MonkeyZeus

10

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


2
Девід правий, це залежить від того, який вміст у вас є. Хорошим способом було б орієнтування на апач-
радіус

Окрім швидкості шифрування, що робити з рукостисканням SSL, чи вплине це на продуктивність та пропускну здатність сервера?
erotsppa

Рукостискання SSL додасть пару пакетів на передню частину з'єднання. Вплив цього буде значно залежати від затримки зв'язку між сервером і клієнтом. HTTP keepalives зменшить вплив цього рукостискання.
Девід Пашлі


1

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


1

Я друге рекомендую для nginx. В моїх власних тестах, він добре підтримував SSL-розвантажувач.


0

Звичайно, якщо обробка SSL сильно вдарить, ви завжди можете перемістити її поза сервером у виділене поле. Існує хороший підправити робити це з Nginx над тут . Це те, що ми зробили на високо завантажених серверах, збалансованих навантаженням 7.


0

Я можу підтвердити, що додане навантаження для шифрування дуже мало порівняно з усіма іншими включеними елементами (сценарії, мережа, ...)


0

З мого досвіду, загальне правило безпосередньо пов'язане з тим, наскільки великий ваш відкритий ключ (наприклад, 2048, проти 4096, проти 8192), все займає значно більше часу. Однак я навряд чи помічаю різницю в середовищі Desktop, але мобільний - це те, де ви бачите різницю, оскільки це вимагає обчислювальної потужності.

Взагалі, це прикро, але SSL завжди і, швидше за все, буде мати величезний штрафний показник.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.