Bitka WEB poslužitelja. 1. dio – HTTP bez kontakta:

U ovom ćemo se članku okušati u obrnutom inženjeringu, moglo bi se reći. Zavući ćemo svoje prljave ruke ispod haube svakog web poslužitelja, iskorištavajući ih na načine koje nitko nikada ne bi iskorištavao.

Ovaj test je mjerenje sferičnog konja u vakuumu, ništa više od podataka koji su dobiveni, a sada ne znamo što ćemo s njima.

Bitka WEB poslužitelja. 1. dio – HTTP bez kontakta:

tehnika

Operativni sustav za Nginx i Apache je Ubuntu 18.04 LTS, za IIS Windows Server Core 2019. Prije testova, svi operativni sustavi dobili su najnovija ažuriranja od 04.12.2019. prosinca XNUMX.

Testovi su provedeni isključivo preko HTTP-a. Svaki je web poslužitelj pokretao istu stranicu, besplatni Jekyll predložak tvrtke Codrops. Link. Svaki web poslužitelj imao je onemogućenu gzip kompresiju.

Test propusnosti napravljen je pomoću Httpd-alata s argumentima:

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

Poslužitelji su bili ograničeni na 10, 5 i 1 posto jezgre na 8, 4 i jednu jezgru. Ispitni stol je bilo računalo s 9900K@5400MHz, što znači da poslužitelj koji prima ograničenje od 10% prima oko 540MHz po jezgri.

TTFB test je proveden kada se poslužitelj prvi put pokrenuo i izmjeren pomoću DevTools; nakon primitka rezultata, poslužitelj je isključen i vraćen na prethodnu kontrolnu točku kako bi se eliminiralo pojavljivanje bilo kakve predmemorije.

Tester i web poslužitelj bili su na istom hostu i na istom virtualnom preklopniku.

Za trenutnu procjenu diskovnog podsustava, rezultate ATTO i CrystalDIskMark mjerila kako biste imali ideju o uskim grlima.

Podaci preuzeti s virtualnog stroja:Bitka WEB poslužitelja. 1. dio – HTTP bez kontakta:
Bitka WEB poslužitelja. 1. dio – HTTP bez kontakta:
Bitka WEB poslužitelja. 1. dio – HTTP bez kontakta:
Bitka WEB poslužitelja. 1. dio – HTTP bez kontakta:

Rezultati:

TTFB:

Bitka WEB poslužitelja. 1. dio – HTTP bez kontakta:
Prosječni TTFB za IIS je najmanji, 0,5 ms, naspram 1,4 ms za Apache i 4 ms za Nginx.

Propusnost:

Prvo, pogledajmo koliko se svaki poslužitelj skalira na temelju broja jezgri.

Bitka WEB poslužitelja. 1. dio – HTTP bez kontakta:
Grafikon prikazuje broj poziva testera web poslužitelju i kašnjenje. Grafikon pokazuje da je NGINX obradio 98% svih zahtjeva, isporučujući stranicu za 20 ms ili manje. IIS je, poput Apachea, dovršio zadnjih 5% svih poziva u 76ms odnosno 14ms.

Bitka WEB poslužitelja. 1. dio – HTTP bez kontakta:
Bitka WEB poslužitelja. 1. dio – HTTP bez kontakta:
Bitka WEB poslužitelja. 1. dio – HTTP bez kontakta:
Grafikon prikazuje prosječno vrijeme obrade za jedan zahtjev tijekom testa otpornosti na stres.

Kao što možete vidjeti na grafikonima, IIS je oduvao i Apache i Nginx, značajno usporavajući pod velikim opterećenjem. 

IIS je očito preferirao 4 jezgre u odnosu na XNUMX, pokazujući niže latencije na XNUMX, ali također nije izrazito favorizirao jednu jezgru.

NGINX se dobro skalira na svih 8 jezgri, a za Apache se čini da je scenarij s jednom jezgrom najbolji izbor.

Skalabilnost:

nginx:

Sada pogledajmo skalabilnost u smislu frekvencije i broja jezgri. 

Bitka WEB poslužitelja. 1. dio – HTTP bez kontakta:
Nginx nije prošao testove s ograničenjem od 1% za 4 i 1 jezgru; kada je premašio 2000 zahtjeva, prekinuo je vezu s testerom.

Apache:

Bitka WEB poslužitelja. 1. dio – HTTP bez kontakta:
Apache je, kao i Nginx, obradivši 2500 zahtjeva odustao i zatvorio vezu. Apache je pao na testu na 8, 4 i 1 jezgri s ograničenjem od 1%, no uz to je pao i na testu s ograničenjem od 5% na jednoj jezgri, što je lošije od Nginxa

IIS:

Bitka WEB poslužitelja. 1. dio – HTTP bez kontakta:
Tijekom testiranja, IIS je nakupio gigantski red zahtjeva, ali je obradio svaki od njih. Očigledno, izvan okvira nema postavljenih vremenskih ograničenja za obradu zahtjeva.

Bitka WEB poslužitelja. 1. dio – HTTP bez kontakta:
Grafikon prikazuje vrijeme potrebno za dovršetak testa. Potpuno apsurdne konfiguracije testiranja su odbačene. Dijagram pokazuje koliko je IIS zahtjevan kada je riječ o hardveru i koliko je NGINX divan.

Skalabilnost s diska:

nginx:

Sada pogledajmo skalabilnost u smislu frekvencije i broja jezgri i brzine diska. 

Bitka WEB poslužitelja. 1. dio – HTTP bez kontakta:
Ovaj put Nginx je pao na 4 testa umjesto na dva.

Apache:

Bitka WEB poslužitelja. 1. dio – HTTP bez kontakta:
Apache nije prošao isti broj testova kao prošli put.

IIS:

Bitka WEB poslužitelja. 1. dio – HTTP bez kontakta:
IIS pokazuje gotovo identičan grafikon, kao da nema diskovnih ograničenja. Općenito, grafika svih poslužitelja nije se puno promijenila, što znači da je svaki od njih predmemorirao statičke podatke u RAM-u i posluživao ih od tamo. Ovdje vidimo glavno usko grlo - sam web poslužitelj.

Prerano je donositi zaključke na temelju ovog testiranja; još nismo testirali HTTPS, kompresiju i HTTP/2 sa live certifikatom tvrtke Let's Encrypt. O tome ćemo govoriti u sljedećem članku.

Bitka WEB poslužitelja. 1. dio – HTTP bez kontakta:

Izvor: www.habr.com

Dodajte komentar