Wie viel Leistung bringt https im Vergleich zu http für dieselbe Seite? Angenommen, ich kann 1000 Anfragen / s für abc.php verarbeiten. Um wie viel wird sich die Anzahl verringern, wenn über https darauf zugegriffen wird? Ich weiß, dass dies möglicherweise von Hardware, Konfiguration, Betriebssystem usw. abhängt, aber ich suche nur nach einer allgemeinen Faustregel / Schätzung.
apache-2.2
performance
erotsppa
quelle
quelle
Antworten:
Für einen Quick & Dirty-Test (dh überhaupt keine Optimierung!) Habe ich die einfache Ubuntu apache2-Standardwebsite (die nur "It works!" Sagt) mit http und https (selbstsigniertes Zertifikat) auf einer lokalen Ubuntu 9.04-VM aktiviert und den Apache ausgeführt Benchmark "
ab
" mit 10.000 Anfragen (keine Parallelität). Client und Server befanden sich auf demselben Computer / VM:Ergebnisse für http ("
ab -n 10000 http://ubuntu904/index.html
")Ergebnisse für https ("
ab -n 10000 https://ubuntu904/index.html
"):Wenn Sie sich die TCP / IP-Kommunikation einer einzelnen Anfrage genauer ansehen (z. B. mit tcpdump oder wireshark), werden Sie feststellen, dass der http-Fall 10 Pakete zwischen Client und Server erfordert, während https 16 erfordert: Die Latenz ist bei https viel höher. (Mehr über die Wichtigkeit der Latenz hier )
Das Hinzufügen von Keep-Alive (
ab
Option-k
) zum Test verbessert die Situation, da jetzt alle Anforderungen dieselbe Verbindung verwenden, dh der SSL-Overhead ist geringer - aber https ist immer noch langsamer messbar:Ergebnisse für http with keep-alive ("
ab -k -n 10000 http://ubuntu904/index.html
")Ergebnisse für https mit keep-alive ("
ab -k -n 10000 https://ubuntu904/index.html
"):Fazit :
quelle
Auf modernen Servern würde ich sagen, dass Ihr Engpass das Netzwerk und Ihre Anwendung ist, nicht die Verschlüsselung. Das TLS / SSL in Apache wird in ziemlich optimiertem C geschrieben, wird also von Ihrem PHP-Code in den Schatten gestellt, besonders wenn Sie Dinge wie den Datenbankzugriff tun. Das Bereitstellen statischer Dateien wird wahrscheinlich größere Auswirkungen haben, da die Verschlüsselung einen größeren Teil des gesamten Prozesses ausmacht. Ich kann Ihnen keine konkreten Zahlen nennen, aber ich wäre überrascht, wenn es mehr als 5% und wahrscheinlich ein paar Prozent näher wäre.
quelle
Nimm nichts an, teste es selbst! Natürlich auf Ihren spezifischen Web-Apps.
quelle
Ich stelle fest, dass bei moderner Hardware die Wahrscheinlichkeit größer ist, dass ich für eine bestimmte Transaktion E / A-gebunden bin, als dass ich prozessorgebunden (rechnergebunden) bin. Dies gilt insbesondere für die Komprimierung und Verschlüsselung. Die 128-Bit-Verschlüsselung ist heutzutage trivial - ich werde im Allgemeinen viel härter beim Erstellen und Bereitstellen der ausgehenden Seiten als bei der Verwendung von SSL getroffen und habe in einigen Jahren keinen signifikanten Unterschied in der Leistung zwischen http- und https-Verkehr bemerkt.
quelle
Ich stimme der Empfehlung für Nginx zu. In meinen eigenen Tests hat es sich als dedizierter SSL-Offloader gut behauptet.
quelle
Natürlich können Sie die SSL-Verarbeitung, wenn sie stark ausfällt, jederzeit vom Server in eine dedizierte Box verschieben. Es gibt einen schönen Bericht darüber, wie man das hier mit Nginx macht . Dies haben wir auf hoch ausgelasteten Servern mit Layer 7-Lastausgleich getan.
quelle
Ich kann bestätigen, dass der zusätzliche Aufwand für die Verschlüsselung im Vergleich zu allen anderen enthaltenen Elementen (Scripting, Netzwerk, ...) sehr gering ist.
quelle
Nach meiner Erfahrung hängt die allgemeine Regel direkt davon ab, wie groß Ihr öffentlicher Schlüssel ist (z. B. 2048, vs 4096, vs 8192), und das alles dauert erheblich länger. Ich kann jedoch kaum einen Unterschied in einer Desktop-Umgebung feststellen, aber bei Mobilgeräten ist ein Unterschied festzustellen, da dies Rechenleistung erfordert.
Im Allgemeinen ist es bedauerlich, aber SSL hat immer und wird wahrscheinlich immer einen enormen Leistungsverlust mit sich bringen.
quelle