WEB-palvelimien taistelu. Osa 1 – HTTP ei kosketa:

Tässä artikkelissa kokeilemme käsiämme käänteisessä suunnittelussa, voisi sanoa. Laitamme likaiset kätemme jokaisen verkkopalvelimen konepellin alle ja hyödynnämme niitä tavoilla, joita kukaan ei koskaan hyödyntäisi.

Tämä testi on pallomaisen hevosen mittaus tyhjiössä, ei muuta kuin saatuja tietoja, ja nyt emme tiedä mitä tehdä sillä.

WEB-palvelimien taistelu. Osa 1 – HTTP ei kosketa:

tekniikka

Nginxin ja Apachen käyttöjärjestelmä on Ubuntu 18.04 LTS, IIS Windows Server Core 2019:lle. Ennen testejä kaikki käyttöjärjestelmät saivat uusimmat päivitykset 04.12.2019 alkaen.

Testit suoritettiin yksinomaan HTTP:n kautta. Jokainen verkkopalvelin pyöritti samaa sivua, Codropsin ilmaista Jekyll-mallia. Linkki. Jokaisen verkkopalvelimen gzip-pakkaus oli poistettu käytöstä.

Suorituskykytesti tehtiin Httpd-työkaluilla argumenteilla:

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

Palvelimet rajoitettiin 10, 5 ja 1 prosenttiin ytimestä 8, 4 ja yhteen ytimeen. Testipenkki oli tietokone 9900K@5400MHz, mikä tarkoittaa, että 10% rajan vastaanottava palvelin vastaanottaa noin 540MHz per ydin.

TTFB-testi suoritettiin palvelimen ensimmäisen käynnistyksen yhteydessä ja mitattiin DevToolsilla; tuloksen saatuaan palvelin sammutettiin ja palautettiin edelliseen tarkistuspisteeseen kaikenlaisten välimuistien poistamiseksi.

Testaaja ja verkkopalvelin olivat samalla isännällä ja samalla virtuaalikytkimellä.

Välittömästi levyalijärjestelmän arvioimiseksi ATTO- ja CrystalDISkMark-benchmark-testien tulokset, jotta saadaan käsitys pullonkauloista.

Virtuaalikoneesta otettu data:WEB-palvelimien taistelu. Osa 1 – HTTP ei kosketa:
WEB-palvelimien taistelu. Osa 1 – HTTP ei kosketa:
WEB-palvelimien taistelu. Osa 1 – HTTP ei kosketa:
WEB-palvelimien taistelu. Osa 1 – HTTP ei kosketa:

tulokset:

TTFB:

WEB-palvelimien taistelu. Osa 1 – HTTP ei kosketa:
IIS:n keskimääräinen TTFB on pienin, 0,5 ms verrattuna Apachen 1,4 ms ja Nginxin 4 ms.

suoritusteho:

Katsotaanpa ensin, kuinka hyvin kukin palvelin skaalautuu ytimien lukumäärän perusteella.

WEB-palvelimien taistelu. Osa 1 – HTTP ei kosketa:
Kaavio näyttää verkkopalvelimelle tulevien testaajien kutsujen määrän ja viiveen. Kaavio osoittaa, että NGINX käsitteli 98 % kaikista pyynnöistä ja toimitti sivuston 20 sekunnissa tai vähemmän. IIS, kuten Apache, suoritti viimeiset 5 % kaikista puheluista 76 ms:ssa ja 14 ms:ssa.

WEB-palvelimien taistelu. Osa 1 – HTTP ei kosketa:
WEB-palvelimien taistelu. Osa 1 – HTTP ei kosketa:
WEB-palvelimien taistelu. Osa 1 – HTTP ei kosketa:
Kaavio näyttää yhden pyynnön keskimääräisen käsittelyajan stressitestin aikana.

Kuten kaavioista näkyy, IIS räjäytti sekä Apachen että Nginxin, hidastuen merkittävästi suurella kuormituksella. 

IIS suosi selvästi neljää ydintä 4:n sijaan, mikä osoitti alhaisempia viiveitä XNUMX:llä, mutta ei myöskään suosinut voimakkaasti yhtä ydintä.

NGINX skaalautuu hyvin kaikkiin 8 ytimeen, ja Apachelle yhden ytimen skenaario näyttää olevan paras valinta.

Skaalautuvuus:

nginx:

Tarkastellaan nyt skaalautuvuutta taajuuden ja ytimien lukumäärän suhteen. 

WEB-palvelimien taistelu. Osa 1 – HTTP ei kosketa:
Nginx ei läpäissyt testejä 1 %:n rajalla 4 ja 1 ytimelle; kun se ylitti 2000 pyyntöä, se katkaisi yhteyden testaajaan.

Apache:

WEB-palvelimien taistelu. Osa 1 – HTTP ei kosketa:
Apache, kuten Nginx, käsiteltyään 2500 pyyntöä, luovutti ja sulki yhteyden. Apache epäonnistui 8-, 4- ja 1-ytimen testissä 1 %:n rajalla, mutta lisäksi se epäonnistui myös yhden ytimen 5 %:n rajalla, mikä on huonompi kuin Nginx

IIS:

WEB-palvelimien taistelu. Osa 1 – HTTP ei kosketa:
Testien aikana IIS keräsi jättimäisen jonon pyyntöjä, mutta käsitteli niistä jokaisen. Ilmeisesti pyynnön käsittelylle ei ole asetettu aikakatkaisuja.

WEB-palvelimien taistelu. Osa 1 – HTTP ei kosketa:
Kaaviossa näkyy testin suorittamiseen kulunut aika. Täysin absurdit testauskokoonpanot hylättiin. Kaavio osoittaa, kuinka vaativa IIS on laitteiston suhteen ja kuinka upea NGINX on.

Skaalautuvuus levyltä:

nginx:

Tarkastellaan nyt skaalautuvuutta taajuuden ja ytimien lukumäärän sekä levyn nopeuden suhteen. 

WEB-palvelimien taistelu. Osa 1 – HTTP ei kosketa:
Tällä kertaa Nginx epäonnistui neljässä testissä kahden sijasta.

Apache:

WEB-palvelimien taistelu. Osa 1 – HTTP ei kosketa:
Apache epäonnistui samassa määrässä testejä kuin viime kerralla.

IIS:

WEB-palvelimien taistelu. Osa 1 – HTTP ei kosketa:
IIS näyttää lähes identtisen kaavion, ikään kuin levyrajoituksia ei olisi. Yleisesti ottaen kaikkien palvelimien grafiikat eivät juuri muuttuneet, mikä tarkoittaa, että jokainen niistä tallensi staattista dataa RAM-muistiin ja palveli sitä sieltä. Tässä näemme suurimman pullonkaulan - itse web-palvelimen.

On liian aikaista tehdä johtopäätöksiä tämän testauksen perusteella, emme ole vielä testaanneet HTTPS:ää, pakkausta ja HTTP/2:ta Let's Encryptin live-sertifikaatilla. Puhumme tästä seuraavassa artikkelissa.

WEB-palvelimien taistelu. Osa 1 – HTTP ei kosketa:

Lähde: will.com

Lisää kommentti