Quanto di un impatto sulle prestazioni per https vs http per apache?


50

All'incirca quanto di un hit di prestazione prenderà https rispetto a http per la stessa pagina? Supponiamo che io possa gestire 1000 richieste / e per abc.php, di quanto diminuirà quando accederà tramite https? So che questo potrebbe dipendere da hardware, configurazione, sistema operativo ecc. Ecc., Ma sto solo cercando una regola generale / stima.


2
Sarebbe bello vedere una risposta accettata per questo.
Hyppy,

Risposte:


57

Per un test rapido e sporco (cioè nessuna ottimizzazione di sorta!) Ho abilitato il semplice sito Web predefinito apache2 di Ubuntu (che dice semplicemente "Funziona!") Con http e https (certificato autofirmato) su una VM Ubuntu 9.04 locale ed ho eseguito l'apache benchmark " ab" con 10.000 richieste (nessuna concorrenza). Client e server erano sulla stessa macchina / VM:

Risultati per http (" ab -n 10000 http://ubuntu904/index.html")

  • Tempo impiegato per i test: 2,664 secondi
  • Richieste al secondo: 3753,69 (# / sec)
  • Tempo per richiesta: 0,266 ms

Risultati per https (" ab -n 10000 https://ubuntu904/index.html"):

  • Tempo impiegato per le prove: 107,673 secondi
  • Richieste al secondo: 92,87 (# / sec)
  • Tempo per richiesta: 10.767ms

Se dai un'occhiata più da vicino (ad esempio con tcpdump o WireShark) alla comunicazione tcp / ip di una singola richiesta , vedrai che il caso http richiede 10 pacchetti tra client e server mentre https richiede 16: la latenza è molto più alta con https. (Maggiori informazioni sull'importanza della latenza qui )

L'aggiunta di keep-alive ( abopzione -k) al test migliora la situazione perché ora tutte le richieste condividono la stessa connessione, ovvero l'overhead SSL è inferiore, ma https è ancora misurabile più lentamente:

Risultati per http con keep-alive (" ab -k -n 10000 http://ubuntu904/index.html")

  • Tempo impiegato per i test: 1.200 secondi
  • Richieste al secondo: 8334,86 (# / sec)
  • Tempo per richiesta: 0,120 ms

Risultati per https con keep-alive (" ab -k -n 10000 https://ubuntu904/index.html"):

  • Tempo impiegato per le prove: 2,711 secondi
  • Richieste al secondo: 3688,12 (# / sec)
  • Tempo per richiesta: 0,271 ms

Conclusione :

  • In questo semplice test https è molto più lento di http.
  • È una buona idea abilitare il supporto https e confrontare il tuo sito Web per vedere se vuoi pagare l'overhead https.
  • Usa WireShark per avere un'idea del sovraccarico SSL.

1
+1 Bel lavoro lì. Grazie per aver pubblicato i numeri.
MN,

Possiamo ottenere alcune specifiche sull'hardware di quella macchina? la crittografia dipende fortemente dalla potenza del processore.
Matt Simmons,

1
Di recente ho fatto molti test su un VPS e l'unica cosa che ha influito sulle prestazioni è stata la cifra utilizzata. Se limiti le cifre a 128 bit, dovresti essere in grado di ottenere circa 500-600 richieste al secondo. Utilizzando un codice a 256 bit che scenderà a <100 richieste al secondo. Credo che quando ho fatto i miei test sono state 30 richieste al secondo. Ovviamente i numeri effettivi dipendono dalla tua macchina.
Converti il

Matt Simmons, ho usato una VM Ubuntu 9.04 a 2 core a 64 bit (VMware Fusion) in esecuzione su un Mac Pro dei primi del 2008 con 2 CPU quad-core a 2,8 GHz Intel Xeon.
knweiss,

La tua risposta mi ha impedito di pubblicare una domanda che sarebbe stata chiusa entro 20 secondi. Grazie!
MonkeyZeus,

10

Sui server moderni, direi che il tuo collo di bottiglia sarebbe la rete e la tua applicazione, non la crittografia. TLS / SSL in apache sarà scritto in C abbastanza ottimizzato, quindi sarà sminuito dal tuo codice PHP, specialmente se stai per fare cose come l'accesso al database. La gestione di file statici avrà probabilmente un impatto maggiore, poiché la crittografia diventerà una parte più importante dell'intero processo. Non posso darvi dati concreti, ma sarei sorpreso se fosse superiore al 5% e probabilmente più vicino al paio per cento.


2
David ha ragione, dipende dal tipo di contenuto che hai. Il modo migliore sarebbe fare un benchmark con la panchina apache httpd.apache.org/docs/2.2/programs/ab.html
raggio

A parte la velocità di crittografia, che dire dell'handshake SSL, ciò avrà un impatto sulle prestazioni e sulla velocità di trasmissione del server?
erotsppa,

L'handshake SSL aggiungerà un paio di pacchetti all'inizio di una connessione. L'impatto dipenderà in larga misura dalla latenza della connessione tra server e client. I keepalive HTTP ridurranno l'impatto di questa stretta di mano.
David Pashley,


1

Trovo che su hardware moderno, ho più probabilità di essere associato a I / O per una particolare transazione rispetto a quanto sono associato al processore (calcolo). Ciò è particolarmente vero quando si parla di compressione e crittografia. La crittografia a 128 bit è banale al giorno d'oggi - in genere mi sento colpito molto più duramente nella costruzione e nella consegna delle pagine in uscita rispetto a quanto sto utilizzando SSL, e non ho notato una differenza significativa nelle prestazioni tra il traffico http e https in alcuni anni.


1

Secondo la raccomandazione per nginx. Nei miei test, ha resistito bene come offloader SSL dedicato.


0

Ovviamente se l'elaborazione SSL ha un forte impatto, puoi sempre spostarla off-server in una casella dedicata. C'è una bella annotazione su come farlo con nginx qui . Questo è qualcosa che abbiamo fatto su server bilanciati con carico di livello 7 altamente caricati.


0

Posso confermare che il carico aggiunto per la crittografia è molto piccolo rispetto a tutti gli altri elementi inclusi (script, rete, ...)


0

Dalla mia esperienza, la regola generale è direttamente correlata alla grandezza della vostra chiave pubblica (ad es. 2048, vs 4096, vs 8192), impiega molto più tempo. Tuttavia, a malapena riesco a notare una differenza in un ambiente desktop, ma il mobile è il punto in cui si vede una differenza poiché richiede potenza di elaborazione.

In generale è sfortunato, ma SSL ha sempre e probabilmente subirà sempre un'enorme penalità di prestazione.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.