Selles artiklis proovime nĂŒĂŒd rĂŒnde- ja tagasipööramise kaudu end sisse elada. Vaatame oma mustade kĂ€tega iga veebiserveri kapoti alla, kasutades neid viisil, mida keegi kunagi ei kasutaks.
See test on nagu sfÀÀrilise hobuse mÔÔtmine vaakumis, mitte muud kui andmed, mis on saadud, ja nĂŒĂŒd ei tea me, mida nendega teha.
Metoodika
Nginx ja Apache jaoks on operatsioonisĂŒsteem Ubuntu 18.04 LTS, IIS jaoks Windows Server Core 2019. KĂ”ik operatsioonisĂŒsteemid said testide eel viimased uuendused, seisuga 04.12.2019.
Testid viidi lĂ€bi ainult HTTP ĂŒle. Igal veebiserveril jooksis sama leht, tasuta Jekylli ĆĄabloon Codropsilt. . Igal veebiserveril oli gzip-kompressioon vĂ€lja lĂŒlitatud.
LÀbilaskevÔime test viidi lÀbi Httpd-tools abil jÀrgmiste argumentidega:
ab -n 50000 -c 500 http://192.168.76.204:80/Serveritele kehtestati piirang 10%, 5% ja 1% vĂ”rra 8-, 4- ja ĂŒhel tuumal. Testimiseks kasutati arvutit 9900K@5400MHz, mis tĂ€hendab, et server, millele on seatud 10% piirang, saab umbes 540MHz tuuma kohta.
TTFB testi tehti serveri esmakordsel laadimisel ja mÔÔdeti DevTools abil. PÀrast tulemuse saamist keerati server vÀlja ja taastati varasemasse kontrollpunkti, et vÀlistada igasuguste vahemÀlu ilmumine.
Testija ja veebiserver asusid samas hostis ja ĂŒhel ja samal virtuaalswitchil.
Diskial sĂŒsteemi kohe hindamiseks, ATTO ja CrystalDiskMarki tulemused, et saada aimu kitsaskohtadest.
Andmed on saadud virtuaalmasinalt:



Tulemused:
TTFB:

Keskmine TTFB IIS-is on kÔige madalam, 0,5 ms, vÔrreldes 1,4 ms Apache ja 4 ms Nginxiga.
LÀbilaskevÔime:
Alustame uurimist, kui hÀsti iga server skaleerub tuumade arvu jÀrgi.

Graafikul on nÀidatud testija pÀringute arvu ja latentsuse suhe. Graafikult on nÀha, et NGINX töötas 98% kÔigist pÀringutest, andes saidi vÀlja 20 ms ja vÀhem. IIS ja Apache töötasid viimased 5% kÔigist pÀringutest vastavalt 76 ms ja 14 ms jooksul.



Graafikul on nĂ€idatud keskmine ĂŒhe pĂ€ringu töötlemise aeg stressitesti ajal.
Nagu graafikutelt nĂ€ha, kaotas IIS nii Apachele kui ka Nginxile, aeglustudes oluliselt kĂ”rge koormuse all.Â
IIS eelistas selgelt nelja tuuma kaheksa ees, nĂ€idates nelja tuuma puhul vĂ€iksemaid viivitusi, kuid ei heitnud heaks ka ĂŒht tuuma.
NGINX skaleerub suurepĂ€raselt kĂ”igile 8 tuumale, Apache'i puhul tundub ĂŒhe tuuma stsenaarium olevat parim valik.
Skaleerimine:
Nginx:
NĂŒĂŒd vaatame skaleerimist sageduse ja tuumade arvu jĂ€rgi.Â

Testid 1% piirangu korral nelja ja ĂŒhe Nginx tuumaga ei lĂ€binud, ĂŒletades 2000 pĂ€ringut, katkestades ĂŒhenduse testijaga.
Apache:

Apache, nagu Nginx, töötles 2500 pĂ€ringut ja andis alla, katkestades ĂŒhenduse. Apache ei lĂ€binud testi 8, 4 ja 1 tuumaga 1% piiranguga, kuid lisaks sellele ei lĂ€binud ka testi 5% piiranguga ĂŒhel tuumal, mis on halvem kui Nginx.
IIS:

IIS kogus testide ajal tohutu pĂ€ringute jĂ€rjekorra, kuid töötles igaĂŒhe neist. Tundub, et sellel puuduvad vaikimisi pĂ€ringutöötluse aja piirangud.

Diagrammil on toodud aeg, mille jooksul test lÔpetati. TÀiesti absurdseid testkonfiguratsioone jÀeti vÀlja. Diagramm nÀitab, kui nÔudlik IIS riistvarale on, ja kui suurepÀrane on NGINX.
Skaleerimine kettalt:
Nginx:
Vaatame seekord skaleeritavust sageduse, tuumade arvu ja diskikiirususe poolest.Â

Seekord ei lÀbinud Nginx 4 testi, mitte kahte.
Apache:

Apache kukkus lÀbi sama arvu teste nagu eelmine kord.
IIS:

IIS nĂ€itab peaaegu identset graafikut, justkui diskile ei oleks mingeid piiranguid. Ăldiselt ei ole kĂ”igi serverite graafikud palju muutunud, mis tĂ€hendab, et igaĂŒks neist on vahemĂ€lu staatika mĂ€llu salvestanud ja edastanud sealt. Siin nĂ€eme peamist kitsaskohta â ise veebiserver.
JĂ€reldusi selle testimise pĂ”hjal on veel vara teha, me pole veel testinud HTTPS-i, kompresseerimist ja HTTP/2 koos elava sertifikaadiga Letâs Encryptilt. Sellest rÀÀgime jĂ€rgmises artiklis.
Allikas: habr.com
