La battaglia dei server WEB. Parte 2 – uno scenario realistico per HTTPS:

La battaglia dei server WEB. Parte 2 – uno scenario realistico per HTTPS:

Abbiamo parlato del metodo in parte uno un articolo, in questo testiamo HTTPS, ma in scenari più realistici. È stato ottenuto un certificato Let’s Encrypt e abilitata la compressione Brotli al 11%.

Questa volta proveremo a riprodurre uno scenario di distribuzione del server su un VDS o come macchina virtuale su un host con un processore standard. Per questo abbiamo impostato il limite 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:

Il TTFB è stato appositamente estratto come test separato, perché HTTPD Tools crea un nuovo utente per ogni singola richiesta. Questo test è ancora abbastanza distaccato dalla realtà, perché un utente cliccherà comunque su un paio di pagine, e nella realtà il TTFP giocherà il ruolo principale.

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

La battaglia dei server WEB. Parte 2 – uno scenario realistico per HTTPS:
Tutte le richieste successive mostrano un TTFP di 1,5 ms. Apache e Nginx sono indietro in questo.
Personalmente, l'autore considera questo test il più rappresentativo e sceglierei il vincitore solo in base a questo.

Il risultato non è sorprendente, poiché IIS memorizza nella cache il contenuto statico compresso e non lo ricompresse ogni volta che viene richiesto.

Tempo speso per un cliente
Per valutare le prestazioni è sufficiente un test con una connessione simultanea.

Ad esempio, IIS ha completato il test con 5000 utenti in 40 secondi, ovvero 123 richieste al secondo.

La battaglia dei server WEB. Parte 2 – uno scenario realistico per HTTPS:
Nei grafici sottostanti è riportato il tempo fino al completamento della trasmissione del contenuto del sito. Questa è la percentuale di richieste eseguite in un determinato intervallo di 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 l'intervallo fino a 8 millisecondi ha visto il 98% di tutte le richieste elaborate su Apache e Nginx.

La battaglia dei server WEB. Parte 2 – uno scenario realistico per HTTPS:
La battaglia dei server WEB. Parte 2 – uno scenario realistico per HTTPS:
Nei grafici sottostanti è riportato il tempo fino al completamento della trasmissione del contenuto del sito. Questa è la percentuale di richieste eseguite in un determinato intervallo di 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 l'intervallo fino a 8 millisecondi ha visto il 98% di tutte le richieste elaborate su Apache e Nginx.

La battaglia dei server WEB. Parte 2 – uno scenario realistico per HTTPS:
Tempo impiegato per elaborare 5000 richieste:

Se hai una macchina virtuale con un CPU da 3,5GHz e 8 core, scegli quello che preferisci. Tutti i server web sono molto simili in questo test.

Throughput:

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

La battaglia dei server WEB. Parte 2 – uno scenario realistico per HTTPS:
La battaglia dei server WEB. Parte 2 – uno scenario realistico per HTTPS:
La battaglia dei server WEB. Parte 2 – uno scenario realistico per HTTPS:
Grafico dei ritardi in funzione del numero di connessioni simultanee. Più è piatto e basso – meglio è. Gli ultimi 2% sono stati esclusi dai grafici perché li renderebbero illeggibili.

La battaglia dei server WEB. Parte 2 – uno scenario realistico per HTTPS:
La battaglia dei server WEB. Parte 2 – uno scenario realistico per HTTPS:
La battaglia dei server WEB. Parte 2 – uno scenario realistico per HTTPS:
La battaglia dei server WEB. Parte 2 – uno scenario realistico per HTTPS:
La battaglia dei server WEB. Parte 2 – uno scenario realistico per HTTPS:
La battaglia dei server WEB. Parte 2 – uno scenario realistico per HTTPS:

Ora consideriamo il caso in cui il server è ospitato su un hosting virtuale. Prendiamo 4 core a 2,2GHz e un core a 1,8GHz.

Come si scalano

Se hai mai visto come appaiono le curve di carico per triode, pentodi e simili, questi grafici ti assomiglieranno. È proprio questo che stiamo cercando di catturare – la saturazione. Il limite, quando non importa quanti core hai, l'aumento delle prestazioni non sarà percepito.

In precedenza, tutta la sfida consisteva nel gestire il 98% delle richieste con la latenza più bassa possibile, mantenendo la curva il più uniforme possibile. Ora, tracciando un'altra curva, troveremo il punto di lavoro ottimale per ciascun server.

La battaglia dei server WEB. Parte 2 – uno scenario realistico per HTTPS:
Per questo prenderemo in considerazione il valore Requests per second (RPR). Sull'asse orizzontale la frequenza, sull'asse verticale — il numero di richieste elaborate al secondo, le linee – il numero di core.

La battaglia dei server WEB. Parte 2 – uno scenario realistico per HTTPS:
Mostra la correlazione di quanto bene Nginx gestisce le richieste una dopo l'altra. 8 core in questo test sono più efficaci.

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

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

Tutta la curvatura dei grafici è rappresentata in modo rigoroso.

In una sorta di conclusione:

Sì, Apache funziona decisamente 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 il carico multi-thread e preferisce 8 core per il carico single-thread. In definitiva, IIS si è rivelato leggermente più veloce di tutti su 8 core sotto carico elevato, anche se tutti i server si sono comportati in modo simile.

Non si tratta di un errore di misurazione; l'errore qui non supera ±1 ms nei ritardi e non più di ±2-3 richieste al secondo per l'RPR.

La battaglia dei server WEB. Parte 2 – uno scenario realistico per HTTPS:

Fonte: habr.com

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