Бітва WEB-сервераў. Частка 1 - адарваны ад рэальнасці HTTP:

У гэтым артыкуле мы паспрабуем сябе ў рэверс-інжынірынгу, можна сказаць. Мы зазірнем сваімі бруднымі рукамі пад капот кожнага з вэб-сервераў, эксплуатуючы іх так, як ніхто б ніколі не эксплуатаваў.

Гэты тэст - замер сферычнага каня ў вакууме, не больш чым дадзеныя, якія былі атрыманы, і мы зараз не ведаем, што з імі рабіць.

Бітва WEB-сервераў. Частка 1 - адарваны ад рэальнасці HTTP:

методыка

У якасці аперацыйнай сістэмы для Nginx і Apache выступае Ubuntu 18.04/2019 LTS, для IIS Windows Server Core 04.12.2019. Усе аперацыйныя сістэмы перад тэстамі атрымалі апошнія абнаўлення на стан XNUMX.

Тэсты праводзіліся выключна па HTTP. На кожным з вэб-сервераў круцілася адна і тая ж старонка, бясплатны шаблон для Jekyll ад Codrops. Спасылка. На кожным з вэб-сервераў быў выключаны сціск gzip.

Тэст прапускной здольнасці праводзіўся з Httpd-tools з аргументамі:

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

На серверы ўсталёўваўся ліміт у 10, 5 і 1 працэнт ад ядра на 8, 4 і адным ядры. У якасці тэставага стэнда быў кампутар з 9900K @ 5400мгц, што азначае, што сервер які атрымаў абмежаванне ў 10%, атрымлівае каля 540мгц на ядро.

Тэст TTFB праводзіўся пры першай загрузцы сервера і замяраўся з дапамогай DevTools, пасля атрымання выніку сервер выключаўся і адкочваўся на папярэднюю кантрольную кропку, каб выключыць з'яўленне любога роду кэшаў.

Тэстыравальнік і вэб-сервер знаходзіліся на адным і тым жа хасце і на адным і тым жа віртуальным світчы.

Каб адразу ацаніць дыскавую падсістэму, вынікі бенчмарку ATTO і CrystalDIskMark, каб мець паняцце аб вузкіх месцах.

Дадзеныя зняты з віртуальнай машыны:Бітва WEB-сервераў. Частка 1 - адарваны ад рэальнасці HTTP:
Бітва WEB-сервераў. Частка 1 - адарваны ад рэальнасці HTTP:
Бітва WEB-сервераў. Частка 1 - адарваны ад рэальнасці HTTP:
Бітва WEB-сервераў. Частка 1 - адарваны ад рэальнасці HTTP:

вынікі:

TTFB:

Бітва WEB-сервераў. Частка 1 - адарваны ад рэальнасці HTTP:
Сярэдні TTFB у IIS менш за ўсіх, 0,5мс, супраць 1,4мс у Apache і 4мс у Nginx.

Прапускная здольнасць:

Спачатку разгледзім, наколькі добра кожны з сервераў маштабуецца па колькасці ядраў.

Бітва WEB-сервераў. Частка 1 - адарваны ад рэальнасці HTTP:
На графіцы прадстаўлена колькасць зваротаў тэсціроўшчыка да вэб-сервера і латэнтнасць. На графіцы відаць, што NGINX адпрацаваў 98% усіх зваротаў, аддаўшы сайт за 20мс і менш. IIS як і Apache апошнія 5% з усіх зваротаў адпрацавалі за 76мс і 14мс адпаведна.

Бітва WEB-сервераў. Частка 1 - адарваны ад рэальнасці HTTP:
Бітва WEB-сервераў. Частка 1 - адарваны ад рэальнасці HTTP:
Бітва WEB-сервераў. Частка 1 - адарваны ад рэальнасці HTTP:
На графіцы паказаны сярэдні час апрацоўкі аднаго запыту падчас стрэс тэсту.

Як можна заўважыць з графікаў, IIS прадуў і Apache і Nginx, моцна запавольваючыся пад высокай нагрузкай. 

IIS відавочна ўпадабаў 4 ядра перад васьмю, паказаўшы меншыя затрымкі на чатырох, але гэтак жа не моцна ўхваліў і адно ядро.

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

Дадаць каментар