Сблъсък на WEB сървъри. Част 2 – реалистичен сценарий за HTTPS:

Сблъсък на WEB сървъри. Част 2 – реалистичен сценарий за HTTPS:

За методиката разказахме в първата част статията, в тази тестваме HTTPS, но в по-реалистични сценарии. За тестването бе получен сертификат Let’s Encrypt, включено е компресиране Brotli на 11.

Този път ще се опитаме да възпроизведем сценарий за разгръщане на сървър на VDS или като виртуална машина на хост с типичен процесор. За това установихме лимит в:

  • 25% — което в превод на честота е ~ 1350МГц
  • 35% - 1890МГц
  • 41% — 2214МГц
  • 65% — 3510МГц

Броят на едновременните свързвания намаля от 500 до 1, 3, 5, 7 и 9,

Резултати:

Закъснения:

TTFB бе изведен специално като отделен тест, защото HTTPD Tools за всяко отделно запитване създава нов потребител. Този тест все още е доста отдалечен от реалността, защото потребителят все пак ще кликне на няколко страници и в действителност основна роля ще играе TTFP.

Сблъсък на WEB сървъри. Част 2 – реалистичен сценарий за HTTPS:
Първото, изобщо най-първото запитване след първото стартиране на виртуалната машина IIS се изпълнява средно за 120 мс.

Сблъсък на WEB сървъри. Част 2 – реалистичен сценарий за HTTPS:
Всички последващи запитвания показват TTFP от 1.5 мс. Apache и Nginx изостават в това. Лично авторът смята този тест за най-показателен и би избрал победител само по него.
Резултатът не е изненадващ, тъй като IIS кешира вече компресирано статично съдържание и не го компресира отново всеки път, когато бъде поискано.

Време, изразходвано за един клиент

За оценка на производителността е достатъчен и тест с 1 едновременно свързване.
Например, IIS завърши тестването на дължината на 5000 потребители за 40 секунди, което е 123 запитвания в секунда.

В графиките по-долу е показано времето до пълното предаване на съдържанието на сайта. Това е дял от запитванията, обработени за определено време. В нашия случай 80% от всички запитвания са обработени за 8мс на IIS и за 4.5мс на Apache и Nginx, а интервалът до 8 милисекунди е изпълнен от 98% от всички запитвания на Apache и Nginx.

Сблъсък на WEB сървъри. Част 2 – реалистичен сценарий за HTTPS:
Времето, за което 5000 запитвания бяха обработени:

Сблъсък на WEB сървъри. Част 2 – реалистичен сценарий за HTTPS:
Сблъсък на WEB сървъри. Част 2 – реалистичен сценарий за HTTPS:
Времето, за което 5000 запитвания бяха обработени:

Сблъсък на WEB сървъри. Част 2 – реалистичен сценарий за HTTPS:
Ако имате виртуална машина с 3.5Гхц ЦП и 8 ядра, изберете това, което искате. Всички уеб сървъри са много сходни в това тестване. За това кой уеб сървър да изберете за всеки хост ще говорим по-долу.

Когато става дума за малко по-реална ситуация, всички уеб сървъри са наравно.

Пропускателна способност:

График на забави от броя на едновременни свързвания. По-плавно и по-ниско – по-добре. Последните 2% бяха изключени от графиците, защото ще ги направят нечетливи.

Сблъсък на WEB сървъри. Част 2 – реалистичен сценарий за HTTPS:
Сблъсък на WEB сървъри. Част 2 – реалистичен сценарий за HTTPS:
Сблъсък на WEB сървъри. Част 2 – реалистичен сценарий за HTTPS:
Сега да разгледаме вариант, при който сървърът е разположен на виртуален хостинг. Нека вземем 4 ядра с 2.2GHz и едно ядро на 1.8GHz.

Сблъсък на WEB сървъри. Част 2 – реалистичен сценарий за HTTPS:
Сблъсък на WEB сървъри. Част 2 – реалистичен сценарий за HTTPS:
Сблъсък на WEB сървъри. Част 2 – реалистичен сценарий за HTTPS:
Сблъсък на WEB сървъри. Част 2 – реалистичен сценарий за HTTPS:
Сблъсък на WEB сървъри. Част 2 – реалистичен сценарий за HTTPS:
Сблъсък на WEB сървъри. Част 2 – реалистичен сценарий за HTTPS:

Как се мащабира

Ако някога сте виждали как изглеждат характеристичните криви на електровакуумни триоди, пентоди и т.н., тези графики ще ви бъдат познати. Именно това се опитваме да уловим – наситеност. Пределът, при който, независимо колко ядра добавим, растежът на производителността няма да бъде забележим.

По-рано предизвикателството беше да се обработят 98% от запитванията с възможно най-ниска латентност на всички запитвания, да се запази кривата колкото се може по-плавна. Сега с помощта на изграждането на друга крива, ще намерим оптималната работна точка за всеки от сървърите.

За тази цел ще вземем показателя Requests per second (RPR). По хоризонтала – честота, по вертикалата – брой запитвания, обработени за секунда, линиите – брой ядра.

Сблъсък на WEB сървъри. Част 2 – реалистичен сценарий за HTTPS:
Показва се корелацията колко добре Nginx обработва запитвания едно след друго. 8 ядра в такова тестване показват по-добри резултати.

Сблъсък на WEB сървъри. Част 2 – реалистичен сценарий за HTTPS:
На този график е прекрасно видно колко по-добре (не много) Nginx работи на едно ядро. Ако имате Nginx, си струва да обмислите намаляването на броя на ядрата до едно, ако хоствате само статика.

Сблъсък на WEB сървъри. Част 2 – реалистичен сценарий за HTTPS:
Сблъсък на WEB сървъри. Част 2 – реалистичен сценарий за HTTPS:
Сблъсък на WEB сървъри. Част 2 – реалистичен сценарий за HTTPS:
IIS, макар и да има най-нисък TTFB според DevTools в Chrome, успява да бъде превзет от Nginx и Apache в сериозна битка със стрес теста на Apache Foundation.

Сблъсък на WEB сървъри. Част 2 – реалистичен сценарий за HTTPS:
Цялата извивка на графиците е точно възпроизведена.

Своеобразен извод:

Да, Apache е категорично по-лош на 1 и 8 ядра, а на 4 работи малко по-добре.

Да, Nginx на 8 ядра обработва по-добре запитвания едно след друго, на 1 и 4 ядра работи по-зле, когато има много свързвания.

Да, IIS предпочита 4 ядра за многонишкова натовареност и предпочита 8 ядра за еднонишкова. В крайна сметка IIS се оказа малко по-бърз от всички на 8 ядра при високо натоварване, въпреки че всички сървъри бяха в равновесие.

Това не е измервателна грешка, отклонението тук не надвишава +-1ms. в латентностите и не повече от +- 2-3 запитвания в секунда за RPR.

Резултатите, когато 8 ядра показват по-слаби резултати, не са изненадващи, много ядра и SMT/Хипернишкови процесори значително влошават производителността, ако имаме времеви рамки, в които трябва да завършим целия процес.

Сблъсък на WEB сървъри. Част 2 – реалистичен сценарий за HTTPS:

Източник: habr.com

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster