I den hÀr artikeln kommer vi att prova pÄ omvÀnd ingenjörskonst, kan man sÀga. Vi ska kika med vÄra smutsiga hÀnder under huven pÄ varje webbserver och utnyttja dem som ingen nÄgonsin skulle göra.
Detta test Àr en mÀtning av en sfÀrisk hÀst i vakuum, inte mer Àn data som har samlats in, och vi vet nu inte vad vi ska göra med dem.
Metodologi
Som operativsystem för Nginx och Apache anvÀnds Ubuntu 18.04 LTS, för IIS anvÀnds Windows Server Core 2019. Alla operativsystem fick de senaste uppdateringarna den 04.12.2019 innan testerna.
Tester utfördes uteslutande över HTTP. PÄ varje webbserver kördes samma sida, en gratismall för Jekyll frÄn Codrops. . PÄ varje webbserver var gzip-komprimering avstÀngd.
Kapacitetstestet genomfördes med Httpd-tools med argumenten:
ab -n 50000 -c 500 http://192.168.76.204:80/En grÀns sattes för servrarna pÄ 10, 5 och 1 procent av kÀrnorna för 8, 4 och en kÀrna. Som testmiljö anvÀndes en dator med 9900K@5400MHz, vilket betyder att servern som fick en begrÀnsning pÄ 10% fÄr cirka 540MHz per kÀrna.
TTFB-testet genomfördes vid första serverladdningen och mÀttes med hjÀlp av DevTools. Efter att ha fÄtt resultatet stÀngdes servern av och ÄterstÀlldes till en tidigare kontrollpunkt, för att utesluta förekomsten av nÄgot slags cache.
Testaren och webbservern befann sig pÄ samma vÀrd och samma virtuella switch.
För att omedelbart bedöma lagringssystemet, resultaten frÄn ATTO och CrystalDiskMark-benchmarken, för att fÄ en uppfattning om flaskhalsar.
Data tas frĂ„n den virtuella maskinen:



Resultat:
TTFB:

Genomsnittlig TTFB för IIS Àr den lÀgsta av alla, 0,5ms, jÀmfört med 1,4ms för Apache och 4ms för Nginx.
Genomströmning:
Först ska vi se hur bra varje server skalar med avseende pÄ antal kÀrnor.

Grafen visar antalet förfrÄgningar frÄn testaren till webbservern och latens. I grafen kan man se att NGINX hanterade 98% av alla förfrÄgningar och levererade webbplatsen pÄ 20ms eller mindre. IIS och Apache tog de sista 5% av alla förfrÄgningar pÄ 76ms respektive 14ms.



Grafen visar genomsnittlig tid för att behandla en förfrÄgan under stresstestet.
Som man kan se frĂ„n graferna sĂ„ förlorade IIS mot bĂ„de Apache och Nginx, vilket kraftigt bromsade under hög belastning.Â
IIS föredrog tydligt 4 kÀrnor framför Ätta, vilket visade lÀgre latens pÄ fyra, men visade heller inte stort stöd för en kÀrna.
NGINX skalar perfekt över alla 8 kÀrnor, medan Apache, verkar ett enkelkÀrnalt scenario vara det bÀsta valet.
Skalbarhet:
Nginx:
LĂ„t oss nu titta pĂ„ skalbarheten i termer av frekvens och antal kĂ€rnor.Â

Testet med ett tak pÄ 1% pÄ 4 och 1 kÀrna klarade inte Nginx, som bröt anslutningen till testaren efter att ha passerat 2000 förfrÄgningar.
Apache:

Apache, precis som Nginx, gav upp efter att ha behandlat 2500 förfrÄgningar och bröt anslutningen. Apache klarade inte testen pÄ 8, 4 och 1 kÀrna med ett tak pÄ 1%, och det klarade inte heller testet med ett 5% tak pÄ en kÀrna, vilket Àr sÀmre Àn Nginx.
IIS:

IIS skapade under testerna en gigantisk kö av förfrÄgningar men behandlade var och en av dem. Det verkar som om det inte finns nÄgra tidsgrÀnser för att behandla en begÀran som Àr förinstallerade.

Diagrammet visar den tid som krÀvdes för att avsluta testen. Alldeles absurda testkonfigurationer avvisades. FrÄn diagrammet framgÄr det hur resurskrÀvande IIS Àr och hur bra NGINX fungerar.
Skalbarhet frÄn disk:
Nginx:
Nu ska vi titta pĂ„ skalbarheten utifrĂ„n frekvens och antal kĂ€rnor och disk hastighet.Â

Den hÀr gÄngen klarade inte Nginx 4 tester, istÀllet för tvÄ.
Apache:

Apache misslyckades med samma antal tester som tidigare.
IIS:

IIS visar nĂ€stan en identisk kurva, som om det inte fanns nĂ„gra diskbegrĂ€nsningar. Generellt sett har kurvorna för alla servrar inte förĂ€ndrats nĂ€mnvĂ€rt, vilket tyder pĂ„ att var och en av dem cachade statiska filer i RAM och levererade frĂ„n dĂ€r. HĂ€r ser vi den största flaskhalsen â sjĂ€lva webbservern.
Det Ă€r för tidigt att dra slutsatser baserat pĂ„ denna testning, vi har Ă€nnu inte testat HTTPS, komprimering och HTTP/2 med ett aktivt certifikat frĂ„n Letâs Encrypt. Detta kommer vi att ta upp i nĂ€sta artikel.
KĂ€lla: habr.com
