Wie kann die Ladezeit der Erstverbindung und der SSL-Handshake-Phase einer Webseite in einem 3G-Netzwerk optimiert werden?


11

Meine Website www.example.com (SSL-fähig) wird auf Amazon EC2 Shared Hosting gehostet. Bei einer WLAN- / Breitbandverbindung wird es schneller geladen (Ladezeit <2 Sekunden). Das Problem liegt im 3G-Netzwerk im Mobilfunk ** (H-Modus und nicht im H + -Modus) **. Starten Sie eine Verbindungsphase und der SSL-Handshake-Vorgang nimmt viel Zeit in Anspruch - 12 Sekunden. Überwachte die Timing-Parameter über die Registerkarte Chrome Network. Unten finden Sie den gemessenen Ladezeitpunkt für die Webseite.

Seitenladezeit Netzwerkstatistik

Art der auf der Seite verarbeiteten Daten: Die getestete Webseite empfängt 5 mit Schlüsselwerten gepaarte JSON-Daten über AJAX und zeigt sie auf der Webseite an. Es ist eine sehr leichte Seite mit nur 5-6 Textinhalten.

Ich habe gesehen, dass viele Websites in einem 3G-Mobilfunknetz (H-Modus) schneller geladen werden. Meine Website ist während der ersten Phase des Verbindungsaufbaus in einem 3G-Netzwerk zu langsam. Kann mir bitte jemand helfen, wie die Verzögerung in der ersten Verbindungsphase behoben werden kann? Wird die Umstellung auf dediziertes Hosting das aktuelle Problem lösen?

Der Webserver ist nicht ausgelastet und es ist immer viel CPU UND Speicher verfügbar.

Serverkonfiguration: Amazon EC2-Instanz - Shared Hosting (32 CPU und 60 GB RAM). Webserver - Apache. SSL - Symantec.


Haben Sie versucht, einen elastischen Lastausgleicher zu verwenden und ihn mit dem HTTPS umgehen zu lassen? Das ist es, was ich bei Amazon verwende, und ich habe solche Leistungsprobleme nicht gesehen. Andererseits habe ich noch nie speziell gegen eine 3G-Verbindung getestet.
Stephen Ostermiller

Danke. Server ist nicht lastausgeglichen. Testet den Server erneut auf bestimmte Parameter und probiert ihn aus.
User234334

Antworten:


8

Erstverbindung

Sie werden feststellen, dass die anfängliche Verbindung das Aushandeln des SSL umfasst. Da der Handshake also hoch ist, ist dies ein guter Indikator dafür, dass bei der Einrichtung des SSL ein schwerwiegender Fehler vorliegt.

Google Chrome: Grundlegendes zum Ressourcen-Timing

Zeit, die zum Herstellen einer Verbindung benötigt wurde, einschließlich TCP-Handshakes / Wiederholungsversuchen und Aushandeln eines SSL.

SSL Handshake und TTFB

Sie haben zwei Hauptprobleme: die Zeit, die Sie für einen SSL-Handshake aufgewendet haben, und die Server, die auf TTFB warten (Zeit bis zum ersten Byte).

  • TTFB: 4079 ms (sollte weniger als 1000 ms betragen)
  • SSL-Handshake 11830 ms (sollte weniger als 100 ms betragen)

Es sollte auch beachtet werden, dass beim Testen mit 3G / 4G-Geräten längere erste Bytes auftreten können, da die Stärke der Telefonsignale unterschiedlich ist. Dies kann zu zeitweiligen Verbindungsproblemen und unterschiedlichen Latenzzeiten führen.

Schritt 1: Untersuchung des SSL-Problems

Es ist ziemlich offensichtlich, dass Sie ein ernstes SSL-Problem haben und höchstwahrscheinlich auf eine fehlerhafte Installation von OpenSSL oder ähnlichem zurückzuführen sind. Testen Sie zunächst Ihr SSL-Zertifikat mit SSL Labs und korrigieren Sie dann alle vorgeschlagenen Probleme oder Warnungen.

Wenn das SSL immer noch langsam arbeitet, liegt höchstwahrscheinlich ein überlasteter Server oder ein Serverfehler vor. Wenn es das spätere ist, müssen Sie versuchen, einzugrenzen, wo der Fehler liegt. Verwenden Sie den Serverfehler- Stack, falls Sie in dieser Angelegenheit weitere Unterstützung benötigen. Ein Benutzer berichtete, dass durch das Erstellen neuer Schlüssel ein langsames SSL-Problem behoben wurde, auf das er möglicherweise gestoßen ist oder das möglicherweise nicht relevant ist.

Load Balancer können helfen, wenn es sich um ein Problem mit Serverressourcen handelt.

Schritt 2: Untersuchung des TTFB

Nachdem Sie das Problem mit SSL behoben haben und immer noch einen erhöhten TTFB-Wert haben, sollten Sie Ihren Server testen, indem Sie sicherstellen, dass er über genügend Ressourcen verfügt.

Die erste Bytezeit wird beeinflusst von, aber nicht beschränkt auf:

  • Die Entfernung vom Benutzer zum Rechenzentrum, in dem sich der Server befindet, kann die TTFB erhöhen
  • Nicht zwischengespeichertes GZIP kann den TTFB erhöhen
  • Überlastete Netzwerke können den TTFB erhöhen
  • Überlastete Server können die TTFB erhöhen

Manchmal ist das Erhöhen der CPU und des Arbeitsspeichers nicht immer die beste Option. Manchmal ist es besser, einen Load Balancer einzuführen, da dies nicht nur bedeutet, dass Sie problemlos mehrere Server nebeneinander ausführen können, sondern auch Caching- und SSL-Anforderungen auslagert. Einige andere Vorteile sind:

QUELLE

  • Caching: Die Appliance kann nicht geänderte Inhalte (z. B. Bilder) speichern und direkt an den Client senden, ohne Datenverkehr an den Webserver zu senden.
  • Komprimierung: Reduziert den Datenverkehr für HTTP-Objekte, indem Dateien komprimiert werden, bevor sie gesendet werden.
  • SSL-Offloading: Die Verarbeitung von SSL-Verkehr erfordert hohe Anforderungen an die CPU eines Webservers, sodass ein Load Balancer diese Verarbeitung stattdessen durchführen kann.
  • Hohe Verfügbarkeit: Im Falle eines Ausfalls können zwei Lastausgleichsgeräte verwendet werden.

Tipps zum Absenken Ihres TTFB:

  • Stellen Sie sicher, dass sich Ihre Datenbank im selben Netzwerk oder in einer hochwertigen SQL-Cloud befindet .
  • Stellen Sie sicher, dass Ihre Datenbank aus dem Speicher gelesen wird und NIEMALS die SWAP- Datei!
  • Nutzen Sie ein Content Delivery-Netzwerk , das Serveranforderungen und Komprimierungsaufgaben auslagert.
  • Verwenden Sie den Lack-Cache , um die Belastung der Datenbank durch Zwischenspeichern von Seiten zu verringern
  • Benchmarking Ihrer statischen Dateien auf der Festplatte mit HDParm
  • Benchmarking Ihres Servers mit dem Apache HTTP Server Benchmarking-Tool
  • Benchmarking der Website mit 10 Durchgängen mit mehreren Remote-Standorten mithilfe von WebPageTest

Vielen Dank für Ihre ausführliche Erklärung. Testet den Server erneut auf die vorgeschlagenen Parameter und implementiert das Beste!
User234334

Das Diagramm auf der Frage trennt den SSL-Handshake von der ursprünglichen Anforderung und dem TTFB. Gemäß diesem Diagramm liegt das Problem tatsächlich beim SSL, bevor die Anforderung gestellt wird.
Stephen Ostermiller

@ StephenOstermiller schön entdeckt. Der wartende TTFB beträgt 4000 ms, während der SSL-Wert über 11000 ms liegt. Es ist wahrscheinlich, dass das SSL den TTFB beeinflusst. Ich habe die Frage aktualisiert, um dies widerzuspiegeln.
Simon Hayter

Danke! Ich habe mein SSL unter www.ssllabs.com getestet und die Bewertung war "A". Es wurden keine Warnungen / Probleme gemeldet. Ich fand, dass die Apache-Version 2.2.15 ist, was veraltet ist. Muss jetzt aktualisiert werden. Der Inhalt meiner Website (Größe in TB) befindet sich in / var / www / html /. Wird durch das Aktualisieren / Neuinstallieren von Apache der Inhalt meiner Website entfernt? Gibt es die sicherste Methode zum Aktualisieren, ohne Daten zu verlieren?
User234334

Noch ein Punkt - OpenSSL ist auch die neueste Version.
User234334

6

Wenn Sie den Titel Ihrer Frage lesen, können Sie zwei Dinge tun, um die anfängliche Verbindung und den SSL / TLS-Handshake zu beschleunigen. Diese funktionieren für jede Verbindung, nicht nur für 3G. Sie sollten sie daher trotzdem als Best Practice verwenden.

Verwenden Sie zunächst HTTP / 2, um die Site bereitzustellen. Dies erfordert Apache 2.4.17 oder höher .

Zweitens konfigurieren Sie Apache für die Verwendung von OCSP-Heftung. Dies erfordert Apache 2.3.3 oder höher plus OpenSSL 0.9.8h oder höher, mit einer guten Anleitung, um es hier einzurichten . OCSP-Heften beschleunigt die Dinge nicht wesentlich, erledigt jedoch einen Teil der Arbeit für den Client und erspart ihm die Mühe, eine OCSP-Suche durchzuführen.

Wenn Sie den Text Ihrer Frage lesen, haben Sie wahrscheinlich ein viel größeres Problem mit Ihrer Hosting-Umgebung. Diese Ladezeiten sind nicht akzeptabel. Sie erwähnen, dass es sich um "Shared Hosting" handelt. Wenden Sie sich an denjenigen, der dieses Shared Hosting verwaltet, und fragen Sie, warum der Server so ungewöhnlich langsam ist. Sie sind wahrscheinlich besser dran, einen anderen gemeinsam genutzten Host auszuprobieren oder selbst einen VPS auszuführen (dies ist mehr Arbeit, bietet aber eine bessere Geschwindigkeit und Flexibilität).

Da Sie bereits mit AWS arbeiten, können Sie die kostenlose Version ausprobieren , um die Dinge zu testen und Ihren eigenen Server zum Laufen zu bringen und zu optimieren. Verwenden Sie es mit einer Subdomain und einigen statischen HTML-Seiten zum Testen und verschieben Sie dann Ihre primäre Site (bei Bedarf über die Grenzen der freien Ebene hinaus skalieren).

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.