Битка между WEB-сървъри. Част 1 – откъснат от реалността HTTP:

В тази статия ще се опитаме в реверс инженеринг, така да се каже. Ще надникнем с нашите мръсни ръце под капака на всеки от уеб сървърите, експлоатирайки ги по начин, по който никой никога не би ги експлоатирал.

Тестът е измерване на сферичен конь във вакуум, не повече от данни, които бяха получени, и сега не знаем какво да правим с тях.

Битка между WEB-сървъри. Част 1 – откъснат от реалността HTTP:

Методика

Операционната система за Nginx и Apache е Ubuntu 18.04 LTS, а за IIS - Windows Server Core 2019. Всички операционни системи получиха последните актуализации на 04.12.2019.

Тестовете се провеждаха изключително по HTTP. На всеки от уеб сървърите работеше същата страница, безплатен шаблон за Jekyll от Codrops. ЛинкНа всеки от уеб сървърите беше изключено компресирането gzip.

Тестът за пропускателна способност се провеждаше с Httpd-tools с аргументи:

ab -n 50000 -c 500 http://192.168.76.204:80/

На сървърите беше зададена лимит в 10, 5 и 1 процент от ядрата с 8, 4 и едно ядро. За тестова система беше използван компютър с 9900K@5400MHz, което означава, че сървърът с ограничение от 10% получава около 540MHz на ядро.

Тестът TTFB се провеждаше при първоначалното зареждане на сървъра и беше измерен с помощта на DevTools, след което, след получаване на резултата, сървърът беше изключван и възстановяван на предишна контрольна точка, за да се изключи появата на всякакви кешове.

Тестировчикът и уеб сървърът бяха на един и същи хост и на един и същи виртуален суич.

За незабавно оценяване на дисковата подсистема бяха предоставени резултатите от бенчмарка ATTO и CrystalDIskMark, за да получим представа за възможните узки места.

Данните бяха взети от виртуална машина:Битка между WEB-сървъри. Част 1 – откъснат от реалността HTTP:
Битка между WEB-сървъри. Част 1 – откъснат от реалността HTTP:
Битка между WEB-сървъри. Част 1 – откъснат от реалността HTTP:
Битка между WEB-сървъри. Част 1 – откъснат от реалността HTTP:

Резултати:

TTFB:

Битка между WEB-сървъри. Част 1 – откъснат от реалността HTTP:
Средният TTFB на IIS е най-нисък, 0.5ms, в сравнение с 1.4ms на Apache и 4ms на Nginx.

Производителност:

Нека първо разгледаме колко добре всеки от сървърите мащабира по отношение на броя ядра.

Битка между WEB-сървъри. Част 1 – откъснат от реалността HTTP:
На графиката е показано броят на заявките от тестировчика към уеб сървъра и латентността. На графиката е видно, че NGINX обработи 98% от всички заявки, предоставяйки сайта за 20ms и по-малко. IIS и Apache обработиха последните 5% от всички заявки за 76ms и 14ms съответно.

Битка между WEB-сървъри. Част 1 – откъснат от реалността HTTP:
Битка между WEB-сървъри. Част 1 – откъснат от реалността HTTP:
Битка между WEB-сървъри. Част 1 – откъснат от реалността HTTP:
На графиката е показано средното време за обработка на една заявка по време на стрес теста.

Както може да се забележи от графиките, IIS е загубил от Apache и Nginx, значително забавяйки се при висока натовареност. 

IIS очевидно е предпочел 4 ядра пред 8, показвайки по-малки забавяния на четирите, но не е одобрил и едно ядро.

NGINX се мащабира перфектно на всичките 8 ядра, докато за Apache, изглежда, че едноядрената конфигурация е най-добрият вариант.

Мащабируемост:

Nginx:

Сега да разгледаме мащабируемостта според тактовата честота и броя на ядрата. 

Битка между WEB-сървъри. Част 1 – откъснат от реалността HTTP:
Тестовете с ограничение от 1% на 4 и 1 ядра не преминаха, при Nginx, който прекъсваше връзката с тестера след 2000 заявки.

Apache:

Битка между WEB-сървъри. Част 1 – откъснат от реалността HTTP:
Apache, подобно на Nginx, се предаде след обработка на 2500 заявки и разкъса връзката. Apache не премина теста на 8, 4 и 1 ядра с лимит от 1%, а също така не успя и на теста с 5% ограничение на едно ядро, което е по-лошо от Nginx.

IIS:

Битка между WEB-сървъри. Част 1 – откъснат от реалността HTTP:
По време на тестовете IIS натрупа огромна опашка от заявки, но обработи всяка от тях. Изглежда, че в него по подразбиране не са инсталирани таймаути за обработка на заявките.

Битка между WEB-сървъри. Част 1 – откъснат от реалността HTTP:
На диаграмата е представено времето, необходимо за завършване на теста. Абсурдни конфигурации бяха отстранени. От диаграмата се вижда колко ресурси изисква IIS и колко чудесен е NGINX.

Мащабируемост от диска:

Nginx:

Сега да разгледаме мащабируемостта според тактовата честота, броя на ядрата и скоростта на диска. 

Битка между WEB-сървъри. Част 1 – откъснат от реалността HTTP:
Този път Nginx не премина 4 теста, вместо два.

Apache:

Битка между WEB-сървъри. Част 1 – откъснат от реалността HTTP:
Apache провали същото количество тестове, както и преди.

IIS:

Битка между WEB-сървъри. Част 1 – откъснат от реалността HTTP:
IIS показва почти идентичен график, сякаш не е имало ограничения на диска. Като цяло, графиците на всички сървъри не се промениха много, което означава, че всеки от тях е кеширал статиката в оперативната памет и я предоставял оттам. Тук виждаме основното тесно място – самият уеб сървър.

Рано е да се правят заключения въз основа на това тестване, тъй като все още не сме тествали HTTPS, компресия и HTTP/2 с валиден сертификат от Let’s Encrypt. За това ще разкажем в следващата статия.

Битка между WEB-сървъри. Част 1 – откъснат от реалността HTTP:

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

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