Battle of WEB-servere. Del 2 – Realistisk HTTPS-scenario:

Battle of WEB-servere. Del 2 – Realistisk HTTPS-scenario:

Vi snakket om teknikken i første del artikkelen, i denne tester vi HTTPS, men i mer realistiske scenarier. For testing fikk vi et Let's Encrypt-sertifikat og aktiverte Brotli-komprimering til 11.

Denne gangen vil vi prøve å reprodusere scenariet med å distribuere en server på en VDS eller som en virtuell maskin på en vert med en standard prosessor. For dette formålet ble det satt en grense til:

  • 25 % - Noe som tilsvarer en frekvens på ~ 1350 MHz
  • 35 % -1890 MHz
  • 41 % - 2214 MHz
  • 65 % - 3510 MHz

Antall engangsforbindelser er redusert fra 500 til 1, 3, 5, 7 og 9,

Resultater:

Forsinkelser:

TTFB ble spesifikt inkludert som en egen test, fordi HTTPD Tools oppretter en ny bruker for hver enkelt forespørsel. Denne testen er fortsatt ganske løsrevet fra virkeligheten, fordi brukeren fortsatt vil klikke et par sider, og i realiteten vil TTFP spille hovedrollen.

Battle of WEB-servere. Del 2 – Realistisk HTTPS-scenario:
Den første, vanligvis den aller første forespørselen etter den første starten av den virtuelle IIS-maskinen, tar i gjennomsnitt 120 ms.

Battle of WEB-servere. Del 2 – Realistisk HTTPS-scenario:
Alle påfølgende forespørsler viser en TTFP på 1.5 ms. Apache og Nginx henger etter i denne forbindelse. Personlig anser forfatteren denne testen som den mest avslørende og vil kun velge vinneren basert på den.
Resultatet er ikke overraskende siden IIS cacher allerede komprimert statisk innhold og ikke komprimerer det hver gang det åpnes.

Tid brukt per klient

For å evaluere ytelsen er en test med 1 enkelt tilkobling tilstrekkelig.
For eksempel fullførte IIS en test av 5000 brukere på 40 sekunder, som er 123 forespørsler per sekund.

Grafene nedenfor viser tiden før innholdet på nettstedet er fullstendig overført. Dette er andelen av forespørsler som er fullført på et gitt tidspunkt. I vårt tilfelle ble 80 % av alle forespørsler behandlet i 8 ms på IIS og i 4.5 ms på Apache og Nginx, og 8 % av alle forespørsler på Apache og Nginx ble fullført innen et intervall på opptil 98 millisekunder.

Battle of WEB-servere. Del 2 – Realistisk HTTPS-scenario:
Tiden da 5000 forespørsler ble behandlet:

Battle of WEB-servere. Del 2 – Realistisk HTTPS-scenario:
Battle of WEB-servere. Del 2 – Realistisk HTTPS-scenario:
Tiden da 5000 forespørsler ble behandlet:

Battle of WEB-servere. Del 2 – Realistisk HTTPS-scenario:
Hvis du har en virtuell maskin med en 3.5 GHz CPU og 8 kjerner, så velg hva du vil ha. Alle webservere er veldig like i denne testen. Vi snakker om hvilken webserver du skal velge for hver vert nedenfor.

Når det kommer til en litt mer realistisk situasjon, går alle webservere mot hverandre.

gjennomløp:

Graf over forsinkelser kontra antall samtidige tilkoblinger. Mykere og lavere er bedre. De siste 2 % ble fjernet fra listene fordi de ville gjøre dem uleselige.

Battle of WEB-servere. Del 2 – Realistisk HTTPS-scenario:
Battle of WEB-servere. Del 2 – Realistisk HTTPS-scenario:
Battle of WEB-servere. Del 2 – Realistisk HTTPS-scenario:
La oss nå vurdere alternativet der serveren er vert for virtuell hosting. La oss ta 4 kjerner på 2.2 GHz og en kjerne på 1.8 GHz.

Battle of WEB-servere. Del 2 – Realistisk HTTPS-scenario:
Battle of WEB-servere. Del 2 – Realistisk HTTPS-scenario:
Battle of WEB-servere. Del 2 – Realistisk HTTPS-scenario:
Battle of WEB-servere. Del 2 – Realistisk HTTPS-scenario:
Battle of WEB-servere. Del 2 – Realistisk HTTPS-scenario:
Battle of WEB-servere. Del 2 – Realistisk HTTPS-scenario:

Hvordan skalere

Hvis du noen gang har sett hvordan strømspenningsegenskapene til vakuumtrioder, pentoder og så videre ser ut, vil disse grafene være kjent for deg. Det er dette vi prøver å fange - metning. Grensen er når uansett hvor mange kjerner du kaster, vil ytelsesøkningen ikke merkes.

Tidligere var hele utfordringen å behandle 98 % av forespørslene med lavest ventetid for alle forespørsler, og holde kurven så flat som mulig. Nå, ved å konstruere en annen kurve, vil vi finne det optimale driftspunktet for hver av serverne.

For å gjøre dette, la oss ta RPR-indikatoren (Requests per second). Horisontal er frekvensen, vertikal er antall forespørsler behandlet per sekund, linjer er antall kjerner.

Battle of WEB-servere. Del 2 – Realistisk HTTPS-scenario:
Viser en korrelasjon av hvor godt Nginx behandler forespørsler etter hverandre. 8 kjerner gir bedre resultater i denne testen.

Battle of WEB-servere. Del 2 – Realistisk HTTPS-scenario:
Denne grafen viser tydelig hvor mye bedre (ikke mye) Nginx fungerer på en enkelt kjerne. Hvis du har Nginx, bør du vurdere å redusere antall kjerner til én hvis du kun er vert for statiske.

Battle of WEB-servere. Del 2 – Realistisk HTTPS-scenario:
Battle of WEB-servere. Del 2 – Realistisk HTTPS-scenario:
Battle of WEB-servere. Del 2 – Realistisk HTTPS-scenario:
IIS, selv om den har den laveste TTFB ifølge DevTools i Chrome, klarer å tape mot både Nginx og Apache i en seriøs kamp med stresstesten fra Apache Foundation.

Battle of WEB-servere. Del 2 – Realistisk HTTPS-scenario:
All kurvatur på grafene er gjengitt jernbelagt.

En slags konklusjon:

Ja, Apache fungerer dårligere på 1 og 8 kjerner, men fungerer litt bedre på 4.

Ja, Nginx på 8 kjerner behandler forespørsler bedre etter hverandre, på 1 og 4 kjerner, og fungerer dårligere når det er mange tilkoblinger.

Ja, IIS foretrekker 4 kjerner for flertrådede arbeidsbelastninger og foretrekker 8 kjerner for enkelttrådede arbeidsbelastninger. Til syvende og sist var IIS litt raskere enn alle andre på 8 kjerner under høy belastning, selv om alle servere var på nivå.

Dette er ikke en målefeil, feilen her er ikke mer enn +-1ms. i forsinkelser og ikke mer enn +- 2-3 forespørsler per sekund for RPR.

Resultatene der 8 kjerner presterer dårligere er slett ikke overraskende, mange kjerner og SMT/Hyperthreading forringer ytelsen kraftig hvis vi har en tidsramme der vi må fullføre hele pipelinen.

Battle of WEB-servere. Del 2 – Realistisk HTTPS-scenario:

Kilde: www.habr.com

Legg til en kommentar