Battaglia dei server WEB. Parte 2 – scenario realistico HTTPS:

Battaglia dei server WEB. Parte 2 – scenario realistico HTTPS:

Abbiamo discusso della metodologia in prima parte un articolo, in questo testiamo HTTPS, ma in scenari più realistici. È stato ottenuto un certificato Let’s Encrypt e la compressione Brotli è stata attivata al 11.

Questa volta proveremo a riprodurre uno scenario di distribuzione del server su VDS o come macchina virtuale su un host con un processore standard. Per questo sono stati impostati i limiti a:

  • 25% — Che corrisponde a una frequenza di ~ 1350MHz
  • 35% -1890MHz
  • 41% — 2214MHz
  • 65% — 3510MHz

Il numero di connessioni simultanee è stato ridotto da 500 a 1, 3, 5, 7 e 9,

Risultati:

Ritardi:

TTFB è stato appositamente isolato come test a parte, poiché HTTPD Tools crea come se fosse un nuovo utente per ogni richiesta separata. Questo test è ancora piuttosto distaccato dalla realtà, perché un paio di pagine l'utente potrebbe comunque cliccare, e in realtà il TTFP giocherà un ruolo principale.

Battaglia dei server WEB. Parte 2 – scenario realistico HTTPS:
La prima, in assoluto la prima richiesta dopo il primo avvio della macchina virtuale IIS viene gestita in media in 120 ms.

Battaglia dei server WEB. Parte 2 – scenario realistico HTTPS:
Tutte le successive richieste mostrano un TTFP di 1.5 ms. Apache e Nginx sono indietro in questo. Personalmente l'autore considera questo test il più significativo e sceglierebbe il vincitore solo in base a questo.
Il risultato non è sorprendente, poiché IIS memorizza nella cache il contenuto statico già compresso e non lo ricompone ogni volta che viene richiesto.

Tempo speso per un cliente

Per valutare le prestazioni, è sufficiente anche un test con 1 connessione simultanea.
Ad esempio, IIS ha completato il test di una lunghezza di 5000 utenti in 40 secondi, che corrisponde a 123 richieste al secondo.

Nei grafici sottostanti è riportato il tempo fino alla piena trasmissione del contenuto del sito. Questa è la frazione delle richieste completate in un certo tempo. Nel nostro caso, l'80% di tutte le richieste è stato elaborato in 8 ms su IIS e in 4.5 ms su Apache e Nginx, mentre il intervallo fino a 8 millisecondi ha visto il 98% di tutte le richieste elaborato su Apache e Nginx.

Battaglia dei server WEB. Parte 2 – scenario realistico HTTPS:
Tempo necessario per elaborare 5000 richieste:

Battaglia dei server WEB. Parte 2 – scenario realistico HTTPS:
Battaglia dei server WEB. Parte 2 – scenario realistico HTTPS:
Tempo necessario per elaborare 5000 richieste:

Battaglia dei server WEB. Parte 2 – scenario realistico HTTPS:
Se hai una macchina virtuale con un CPU da 3.5GHz e 8 core, scegli ciò che desideri. Tutti i server web sono molto simili in questo test. Di quale server web scegliere per ogni host parleremo a breve.

Quando si tratta di una situazione leggermente più reale, tutti i server web si sfidano testa a testa.

Throughput:

Grafico dei ritardi in funzione del numero di connessioni simultanee. Più è dritto e basso – meglio è. Gli ultimi 2% sono stati esclusi dai grafici perché li renderebbero illeggibili.

Battaglia dei server WEB. Parte 2 – scenario realistico HTTPS:
Battaglia dei server WEB. Parte 2 – scenario realistico HTTPS:
Battaglia dei server WEB. Parte 2 – scenario realistico HTTPS:
Ora consideriamo il caso in cui il server è ospitato su un hosting virtuale. Prendiamo 4 core a 2.2 GHz e un core a 1.8 GHz.

Battaglia dei server WEB. Parte 2 – scenario realistico HTTPS:
Battaglia dei server WEB. Parte 2 – scenario realistico HTTPS:
Battaglia dei server WEB. Parte 2 – scenario realistico HTTPS:
Battaglia dei server WEB. Parte 2 – scenario realistico HTTPS:
Battaglia dei server WEB. Parte 2 – scenario realistico HTTPS:
Battaglia dei server WEB. Parte 2 – scenario realistico HTTPS:

Come si scalano

Se hai mai visto come sono le curve caratteristiche dei triodi, pentodi e simili, questi grafici ti saranno familiari. Questo è esattamente ciò che stiamo cercando di catturare – saturazione. Il limite oltre il quale, indipendentemente da quanti core usi, l'aumento delle prestazioni non sarà evidente.

In precedenza, la sfida consisteva nell'elaborare il 98% delle richieste con la minore latenza possibile a fronte di tutte le richieste, mantenendo la curva il più uniforme possibile. Ora, costruendo un'altra curva, troveremo il punto di lavoro ottimale per ciascuno dei server.

Per questo utilizzeremo il parametro Requests per second (RPR). Sull'asse orizzontale la frequenza, sull'asse verticale – il numero di richieste elaborate al secondo, e le linee – il numero di core.

Battaglia dei server WEB. Parte 2 – scenario realistico HTTPS:
Mostra la correlazione di quanto bene Nginx elabora le richieste una dopo l'altra. 8 core in questo test si comportano meglio.

Battaglia dei server WEB. Parte 2 – scenario realistico HTTPS:
In questo grafico è chiaramente visibile quanto meglio (non di molto) funzioni Nginx su un singolo core. Se hai Nginx, vale la pena considerare di ridurre il numero di core a uno, se ospiti solo file statici.

Battaglia dei server WEB. Parte 2 – scenario realistico HTTPS:
Battaglia dei server WEB. Parte 2 – scenario realistico HTTPS:
Battaglia dei server WEB. Parte 2 – scenario realistico HTTPS:
Sebbene IIS abbia il TTFB più basso secondo DevTools in Chrome, riesce comunque a perdere contro Nginx e Apache in una seria battaglia contro il test di stress dell'Apache Foundation.

Battaglia dei server WEB. Parte 2 – scenario realistico HTTPS:
Tutta la curvatura dei grafici è riprodotta con precisione.

Una sorta di conclusione:

Sì, Apache funziona di fatto peggio su 1 e 8 core, mentre su 4 funziona leggermente meglio.

Sì, Nginx su 8 core gestisce meglio le richieste una dopo l'altra, mentre su 1 e 4 core funziona peggio quando ci sono molte connessioni.

Sì, IIS preferisce 4 core per carichi multithread e preferisce 8 core per carichi a thread singolo. Alla fine, IIS si è rivelato leggermente più veloce di tutti su 8 core sotto elevato carico, anche se tutti i server erano in pari.

Non si tratta di un errore di misurazione, l'errore non supera i +-1 ms nei ritardi e non più di +-2-3 richieste al secondo per il RPR.

I risultati in cui 8 core si comportano peggio non sono affatto sorprendenti; molti core e SMT/Hyperthreading peggiorano notevolmente le prestazioni se abbiamo delle scadenze entro le quali dobbiamo completare l’intero pipeline.

Battaglia dei server WEB. Parte 2 – scenario realistico HTTPS:

Fonte: habr.com

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster