Frage Wie viel von einer Leistung schlug für https vs http für Apache?


Etwa wie viel von einem Leistungseinschlag wird https im Vergleich zu http für die gleiche Seite nehmen? Angenommen, ich kann 1000 Anfragen / s für die abc.php verarbeiten, um wie viel wird es beim Zugriff über https sinken? Ich weiß, dass dies von Hardware, Konfiguration, Betriebssystem usw. abhängig sein könnte, aber ich suche nur nach einer allgemeinen Faustregel / Schätzung.


50
2017-07-21 18:45


Ursprung


+1 Danke für die Nachfrage. :) - M.N
Es wäre schön, eine akzeptierte Antwort dafür zu sehen. - Hyppy


Antworten:


Für einen schnellen & dreckigen Test (dh keinerlei Optimierung!) Aktivierte ich die einfache Ubuntu apache2 Standardwebseite (die nur "Es funktioniert!") Mit http und https (selbstsigniertes Zertifikat) auf einer lokalen Ubuntu 9.04 VM und führte den Apache aus Benchmark "ab"mit 10.000 Anfragen (keine Nebenläufigkeit). Client und Server waren auf demselben Rechner / VM:

Ergebnisse für http ("ab -n 10000 http://ubuntu904/index.html")

  • Zeitaufwand für Tests: 2.664 Sekunden
  • Anfragen pro Sekunde: 3753.69 (# / sec)
  • Zeit pro Anfrage: 0,266ms

Ergebnisse für https ("ab -n 10000 https://ubuntu904/index.html"):

  • Zeitaufwand für Tests: 107.673 Sekunden
  • Anfragen pro Sekunde: 92,87 (# / sec)
  • Zeit pro Anfrage: 10.767ms

Wenn Sie genauer hinschauen (z. B. mit tcpdump oder wireshark) bei der TCP / IP-Kommunikation von a Einzelanfrage Sie werden sehen, dass der http-Fall 10 Pakete zwischen Client und Server erfordert, während https 16 erfordert: Latenz ist viel höher mit https. (Mehr über die Bedeutung der Latenz Hier)

Hinzufügen von Keep-Alive (ab Möglichkeit -k) zu dem Test verbessert die Situation, da jetzt alle Anfragen die gleiche Verbindung teilen, d. h. der SSL-Overhead ist niedriger - aber https ist immer noch langsamer messbar:

Ergebnisse für http mit Keep-Alive ("ab -k -n 10000 http://ubuntu904/index.html")

  • Zeitaufwand für Tests: 1.200 Sekunden
  • Anfragen pro Sekunde: 8334.86 (# / sec)
  • Zeit pro Anfrage: 0.120ms

Ergebnisse für https mit Keep-Alive ("ab -k -n 10000 https://ubuntu904/index.html"):

  • Zeitaufwand für Tests: 2.711 Sekunden
  • Anfragen pro Sekunde: 3688.12 (# / sec)
  • Zeit pro Anfrage: 0,271ms

Fazit:

  • In diesem einfachen Testfall ist https viel langsamer als http.
  • Es empfiehlt sich, die https-Unterstützung und den Benchmark zu aktivieren deine Website um zu sehen, ob Sie den https-Overhead bezahlen möchten.
  • Verwenden Sie wireshark, um einen Eindruck vom SSL-Overhead zu bekommen.

57
2017-07-22 00:25



+1 Schöne Arbeit dort. Danke für das Posten der Nummern. - M.N
Können wir einige Spezifikationen auf der Hardware dieser Maschine bekommen? Die Verschlüsselung hängt stark von der Prozessorleistung ab. - Matt Simmons
Ich habe vor kurzem eine Menge Tests an einem VPS durchgeführt und das Einzige, was die Leistung beeinflusst hat, war die verwendete Chiffre. Wenn Sie Verschlüsselungen auf 128 Bit beschränken, sollten Sie in der Lage sein, etwa 500-600 Anfragen pro Sekunde zu erhalten. Verwenden einer 256-Bit-Chiffre, die auf <100 Anfragen pro Sekunde fällt. Ich glaube, als ich meine eigenen Tests machte, waren es 30 Anfragen pro Sekunde. Offensichtlich hängen die tatsächlichen Zahlen von Ihrer Maschine ab. - kovert
Matt Simmons, ich benutzte eine 2-Kern 64-Bit Ubuntu 9.04 VM (VMware Fusion), die auf einem frühen 2008 Mac Pro mit 2x Quad-Core 2.8 GHz Intel Xeon CPUs lief. - knweiss
Ihre Antwort hat mich daran gehindert, eine Frage zu stellen, die innerhalb von 20 Sekunden geschlossen worden wäre. Vielen Dank! - MonkeyZeus


Auf modernen Servern würde ich sagen, Ihr Engpass wäre das Netzwerk und Ihre Anwendung, nicht die Verschlüsselung. Das TLS / SSL in Apache wird in ziemlich optimiertem C geschrieben sein, daher wird es von Ihrem PHP-Code in den Schatten gestellt, besonders wenn Sie Dinge wie den Datenbankzugriff tun werden. Serving statische Dateien werden wahrscheinlich eine größere Auswirkung haben, da die Verschlüsselung ein größerer Teil des gesamten Prozesses wird. Ich kann Ihnen keine konkreten Zahlen nennen, aber ich wäre überrascht, wenn es mehr als 5% und wahrscheinlich ein paar Prozent wären.


10
2017-07-21 18:53



David hat Recht, es hängt von der Art des Inhalts ab, den du hast. Der gute Weg wäre ein Benchmark mit Apache Bank httpd.apache.org/docs/2.2/programme/ab.html - radius
Wie wirkt sich der SSL-Handshake neben der Verschlüsselungsgeschwindigkeit auf die Serverleistung und den Durchsatz aus? - erotsppa
Der SSL-Handshake fügt einige Pakete vor einer Verbindung hinzu. Die Auswirkung davon hängt massiv von der Latenz der Verbindung zwischen dem Server und dem Client ab. HTTP-Keepalives reduzieren die Auswirkungen dieses Handshakes. - David Pashley


Nimm nichts an, teste es selbst! Auf Ihren speziellen Web-Apps natürlich.


8
2017-07-21 22:04





Ich finde, dass ich bei moderner Hardware eher für eine bestimmte Transaktion E / A-gebunden bin als für Prozessor (Computer). Dies gilt insbesondere für Komprimierung und Verschlüsselung. 128-Bit-Verschlüsselung ist heutzutage trivial - im Allgemeinen wird es viel schwieriger, die ausgehenden Seiten zu erstellen und zu liefern als SSL, und ich habe in einigen Jahren keinen signifikanten Leistungsunterschied zwischen http- und https-Verkehr bemerkt.


1
2017-07-21 19:08





Ich unterstütze die Empfehlung für nginx. In meinen eigenen Tests hat es sich als dedizierter SSL-Offloader bewährt.


1
2017-07-22 10:23





Natürlich, wenn die SSL-Verarbeitung hart trifft, können Sie es immer vom Server in eine dedizierte Box verschieben. Es gibt eine nette Beschreibung, dies mit nginx zu tun Hier. Dies ist etwas, was wir auf hoch belasteten Layer 7 Load Balanced Servern gemacht haben.


0
2017-07-21 18:59





Ich kann bestätigen, dass die zusätzliche Belastung für die Verschlüsselung im Vergleich zu allen anderen enthaltenen Elementen (Scripting, Netzwerk, ...) sehr gering ist.


0
2017-07-21 21:01





Aus meiner Erfahrung hängt die allgemeine Regel direkt damit zusammen, wie groß Ihr öffentlicher Schlüssel ist (z. B. 2048, vs 4096, vs 8192), alle nehmen signifikant länger in Anspruch. Allerdings kann ich kaum einen Unterschied in einer Desktop-Umgebung feststellen, aber bei Mobile ist ein Unterschied zu erkennen, da Rechenleistung benötigt wird.

Im Allgemeinen ist es unglücklich, aber SSL hat immer und wird wahrscheinlich immer eine große Leistungseinbuße nehmen.


0
2018-04-18 22:15