Скільки показів продуктивності для 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.