Quanto di una prestazione ha colpito per https vs http per apache?

Quanto di un colpo di performance sarà https rispetto a http per la stessa pagina? Supponiamo di poter gestire 1000 richieste / s per abc.php, quanto diminuirà quando si accede tramite https? So che questo potrebbe essere dipendente da hardware, config, OS ecc etc ma sto solo cercando una regola generale di stima / stima.

  • Password protegge la directory con Apache: "Imansible controllare l'utente. Controlla il tuo fornitore di authn! "
  • Apache non riesce a iniziare con il nuovo certificato SSL
  • Come impostare Mod_WSGI per Python su Ubuntu
  • Tempi di attesa lunghi prima della risposta del server Apache 2.2 (Gentoo LAMP)
  • Gli host virtuali di Apache protetti?
  • apache con php fastcgi continua a scendere
  • Consente la visualizzazione / traversa della directory per un VirtualHost specifico in Apache 2.2
  • È ansible servire diversi DocumentRoot da Host virtuale in configuration Apache a seconda dell'indirizzo IP del visitatore?
  • Apache locale in Windows XP non finisce le richieste di pagina
  • Mysql utilizzo di memory elevata e utilizzo di swap
  • Da A a Z per l'impostazione di una casella Linux per un hosting locale sicuro
  • Correndo phpmyadmin e suphp
  • 8 Solutions collect form web for “Quanto di una prestazione ha colpito per https vs http per apache?”

    Per un test veloce e sporco (ovvero non ottimizzazione in alcun modo!) Ho abilitato il semplice sito web di default di Ubuntu apache2 (che dice semplicemente "funziona!") Con http e https (certificato autofirmato) su un Ubuntu 9.04 VM locale e ha eseguito l'apache benchmark " ab " con 10.000 richieste (nessuna concorrenza). Il client e il server erano sulla stessa macchina / VM:

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

    • Tempo preso per i test: 2.664 secondi
    • Richieste al secondo: 3753,69 (# / sec)
    • Tempo per richiesta: 0.266ms

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

    • Tempo preso per i test: 107.673 secondi
    • Richieste al secondo: 92.87 (# / sec)
    • Tempo per richiesta: 10.767ms

    Se si esamina più da vicino (ad esempio con tcpdump o wireshark) alla comunicazione tcp / ip di una singola richiesta , vednetworking 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'importnza della latenza qui )

    L'aggiunta di "keep-alive" ( ab option -k ) al test migliora la situazione perché ora tutte le richieste condividono la stessa connessione, vale a dire l'overhead SSL è inferiore – ma https è ancora più misurabile:

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

    • Tempo per i test: 1.200 secondi
    • Richieste al secondo: 8334.86 (# / sec)
    • Tempo per richiesta: 0.120ms

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

    • Tempo preso per i test: 2.711 secondi
    • Richieste al secondo: 3688.12 (# / sec)
    • Tempo per richiesta: 0.271ms

    Conclusioni :

    • In questa semplice testcase https è molto più lenta di http.
    • È consigliabile abilitare il supporto https e confrontare il tuo sito web per vedere se vuoi pagare l'overhead https.
    • Utilizza il wireshark per avere un'impressione dell'alto overhead SSL.

    Sui server moderni, direi che il collo di bottiglia sarebbe la networking e la tua applicazione, non la crittografia. Il TLS / SSL in apache sarà scritto in C abbastanza ottimizzato, in modo da essere danneggiato dal codice PHP, specialmente se si intende fare cose come l'accesso al database. Servire i file statici probabilmente avrà un impatto maggiore, poiché la crittografia diventerà una parte più grande di tutto il process. Non posso darti alcuna cifra concreta, ma sarei sorpreso se fosse più del 5% e probabilmente più vicino a un paio di percento.

    Non assumere niente, prova da te! Naturalmente sulle tue applicazioni web specifiche.

    • ab
    • assedio
    • JMeter

    Trovo che su hardware moderno, ho più probabilità di essere I / O vincolati per una transazione particolare di quello che sono processre (calcolo) legato. Ciò è particolarmente vero quando si parla di compressione e crittografia. La crittografia a 128 bit è banale in questi giorni – generalmente sono in colpo d'edificio molto più difficile e consegnare le pagine in output di quello che sto utilizzando SSL e non ho notato una differenza significativa nelle performance tra traffico http e https in pochi anni.

    Secondo la raccomandazione per nginx. Nelle mie prove, ha mantenuto bene come uno scaricatore SSL dedicato.

    Naturalmente, se l'elaborazione SSL colpisce duramente, è ansible spostarlo sempre fuori server in una casella dedicata. C'è una bella descrizione di fare questo con nginx qui . Questo è qualcosa che abbiamo fatto su un elevato livello caricato 7 caricamento di server bilanciati.

    Posso confermare che il carico aggiunto per la crittografia è molto piccolo rispetto ad each altro elemento incluso (scripting, networking, …)

    Dalla mia esperienza la regola generale è direttamente correlata a quanto la tua chiave pubblica è grande (ad esempio 2048, vs 4096, vs 8192) tutti richiedono molto più tempo. Tuttavia, difficilmente noterò una differenza in un ambiente Desktop, ma il cellulare è where si vede una differenza in quanto richiede il potere di calcolo.

    In generale, è sfortunato, ma SSL ha sempre e probabilmente sempre una penalità di performance enorme.

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.