Bitka za WEB servere. Dio 1 – HTTP van kontakta:

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

Ovaj test je merenje sfernog konja u vakuumu, ništa više od podataka koji su dobijeni, a sada ne znamo šta da radimo sa njim.

Bitka za WEB servere. Dio 1 – HTTP van kontakta:

Metodologija

Operativni sistem za Nginx i Apache je Ubuntu 18.04 LTS, za IIS Windows Server Core 2019. Prije testiranja, svi operativni sistemi su dobili najnovija ažuriranja od 04.12.2019. decembra XNUMX. godine.

Testovi su vršeni isključivo preko HTTP-a. Svaki web server je pokretao istu stranicu, besplatni Jekyll šablon iz Codrops-a. link. Svaki web server imao je onemogućenu gzip kompresiju.

Test propusnosti je urađen pomoću Httpd-alata sa argumentima:

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

Serveri su bili ograničeni na 10, 5 i 1 posto jezgre na 8, 4 i jednom jezgru. Test bench je bio računar sa 9900K@5400MHz, što znači da server koji dobija ograničenje od 10% dobija oko 540MHz po jezgru.

TTFB test je sproveden kada se server prvi put pokrenuo i izmeren pomoću DevToolsa; nakon što je dobio rezultat, server je isključen i vraćen na prethodnu kontrolnu tačku kako bi se eliminisala pojava bilo kakve vrste keša.

Tester i web server su bili na istom hostu i na istom virtuelnom prekidaču.

Da odmah procijenite diskovni podsistem, rezultate ATTO i CrystalDIskMark benchmarka kako biste imali predstavu o uskim grlima.

Podaci preuzeti sa virtuelne mašine:Bitka za WEB servere. Dio 1 – HTTP van kontakta:
Bitka za WEB servere. Dio 1 – HTTP van kontakta:
Bitka za WEB servere. Dio 1 – HTTP van kontakta:
Bitka za WEB servere. Dio 1 – HTTP van kontakta:

Rezultati:

TTFB:

Bitka za WEB servere. Dio 1 – HTTP van kontakta:
Prosječni TTFB za IIS je najmanji, 0,5 ms, u odnosu na 1,4 ms za Apache i 4 ms za Nginx.

Propusnost:

Prvo, pogledajmo koliko dobro se svaki server skalira na osnovu broja jezgara.

Bitka za WEB servere. Dio 1 – HTTP van kontakta:
Grafikon prikazuje broj poziva testera na web server i kašnjenje. Grafikon pokazuje da je NGINX obradio 98% svih zahtjeva, isporučujući stranicu za 20 ms ili manje. IIS je, kao i Apache, završio zadnjih 5% svih poziva za 76ms i 14ms, respektivno.

Bitka za WEB servere. Dio 1 – HTTP van kontakta:
Bitka za WEB servere. Dio 1 – HTTP van kontakta:
Bitka za WEB servere. Dio 1 – HTTP van kontakta:
Grafikon prikazuje prosječno vrijeme obrade jednog zahtjeva tokom stres testa.

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

IIS je jasno preferirao 4 jezgra u odnosu na XNUMX, pokazujući niže latencije na XNUMX, ali isto tako nije preferirao jedno jezgro.

NGINX se dobro skalira na svih 8 jezgara, a za Apache, scenarij s jednim jezgrom izgleda kao najbolji izbor.

Skalabilnost:

nginx:

Pogledajmo sada skalabilnost u smislu frekvencije i broja jezgara. 

Bitka za WEB servere. Dio 1 – HTTP van kontakta:
Nginx nije prošao testove sa ograničenjem od 1% za 4 i 1 jezgre; kada je premašio 2000 zahtjeva, prekinuo je vezu sa testerom.

Apache:

Bitka za WEB servere. Dio 1 – HTTP van kontakta:
Apache je, kao i Nginx, nakon što je obradio 2500 zahtjeva, odustao i zatvorio vezu. Apache je pao na testu na 8, 4 i 1 jezgri sa ograničenjem od 1%, ali je pored ovoga pao i na testu sa ograničenjem od 5% na jednoj jezgri, što je gore od Nginxa

IIS:

Bitka za WEB servere. Dio 1 – HTTP van kontakta:
Tokom testova, IIS je akumulirao gigantski red zahtjeva, ali je obradio svaki od njih. Očigledno, izvan kutije nema postavljenih vremenskih ograničenja za obradu zahtjeva.

Bitka za WEB servere. Dio 1 – HTTP van kontakta:
Grafikon prikazuje vrijeme potrebno za završetak testa. Potpuno apsurdne konfiguracije testiranja su odbačene. Dijagram pokazuje koliko je IIS zahtjevan kada je u pitanju hardver i koliko je NGINX divan.

Skalabilnost sa diska:

nginx:

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

Bitka za WEB servere. Dio 1 – HTTP van kontakta:
Ovog puta Nginx je pao na 4 testa umjesto na dva.

Apache:

Bitka za WEB servere. Dio 1 – HTTP van kontakta:
Apache je pao na istom broju testova kao prošli put.

IIS:

Bitka za WEB servere. Dio 1 – HTTP van kontakta:
IIS pokazuje gotovo identičan grafikon, kao da nema ograničenja diska. Generalno, grafika svih servera se nije mnogo promenila, što znači da je svaki od njih keširao statičke podatke u RAM i odatle ih servirao. Ovdje vidimo glavno usko grlo - sam web server.

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

Bitka za WEB servere. Dio 1 – HTTP van kontakta:

izvor: www.habr.com

Dodajte komentar