Zum Hauptinhalt springen




Wie Sie einen Serverengpass feststellen, schnell beheben, die Serverleistung verbessern und Regressionen verhindern.

Übersicht

Diese Anleitung zeigt Ihnen, wie Sie einen überlasteten Server in vier Schritten reparieren:

  1. Untersuchen: Ermitteln Sie den Flaschenhals des Servers.
  2. Stabilisieren - Implementieren Sie schnelle Korrekturen, um die Auswirkungen zu verringern.
  3. Upgrade: Erhöhen und optimieren Sie die Serverfunktionen.
  4. Monitor - Verwenden Sie automatisierte Tools, um zukünftige Probleme zu vermeiden.

Wenn Sie Fragen oder Kommentare zu diesem Handbuch haben oder Ihre eigenen Tipps und Tricks teilen möchten, hinterlassen Sie bitte einen Kommentar zu PR # 2479.

Untersuchen

Wenn der Datenverkehr einen Server überlastet, kann einer oder mehrere der folgenden Faktoren zu Engpässen werden: CPU, Netzwerk, Arbeitsspeicher oder Festplatten-E/A. Die Identifizierung, welche davon der Engpass ist, ermöglicht es, die Bemühungen auf die wirksamsten Minderungsmaßnahmen zu konzentrieren.

  • CPU: CPU-Auslastung, die konstant höher als beim 80% ist, sollte untersucht und korrigiert werden. Die Serverleistung nimmt häufig ab, sobald die CPU-Auslastung ~80-90% erreicht, und wird deutlicher, wenn sich die Auslastung 100% nähert. Die CPU-Auslastung zur Bearbeitung einer einzelnen Anfrage ist vernachlässigbar, aber dies in der Größenordnung zu tun, die während Verkehrsspitzen auftritt, kann einen Server manchmal überfordern. Durch das Auslagern des Dienstes auf eine andere Infrastruktur, das Reduzieren kostspieliger Vorgänge und das Drosseln der Anzahl von Anfragen wird die CPU-Auslastung reduziert.
  • Netzwerk – In Zeiten mit hohem Datenverkehr kann der zum Erfüllen von Benutzeranforderungen erforderliche Netzwerkdurchsatz die Kapazität überschreiten. Einige Websites können je nach Hosting-Anbieter auch Beschränkungen für die kumulative Datenübertragung haben. Durch Reduzieren der Größe und Menge der zum und vom Server übertragenen Daten wird dieser Engpass beseitigt.
  • Speicher - Wenn ein System nicht über genügend Speicher verfügt, müssen Daten zur Speicherung auf die Festplatte heruntergeladen werden. Der Festplattenzugriff ist erheblich langsamer als der Speicher, und dies kann eine gesamte Anwendung verlangsamen. Wenn der Speicher vollständig aufgebraucht ist, kann dies dazu führen Ohne Erinnerung (OOM) Fehler. Durch Anpassen der Speicherzuweisung, Beheben von Speicherlecks und Aktualisieren des Speichers kann dieser Engpass beseitigt werden.
  • Festplatten-E/A – Die Geschwindigkeit, mit der Daten von der Festplatte gelesen oder darauf geschrieben werden können, wird durch die Festplatte selbst beschränkt. Wenn Festplatten-E/A einen Engpass darstellt, kann dieses Problem durch Erhöhen der im Cache gespeicherten Datenmenge verringert werden (auf Kosten einer höheren Speicherauslastung). Wenn dies nicht funktioniert, müssen Ihre Laufwerke möglicherweise aktualisiert werden.

Die Techniken in diesem Handbuch konzentrieren sich auf die Behebung von CPU- und Netzwerkengpässen. Für die meisten Websites sind CPU und Netzwerk die größten Engpässe während einer Verkehrsspitze.

In Eile oben auf dem betroffenen Server ist ein guter Ausgangspunkt für die Untersuchung von Engpässen. Falls vorhanden, ergänzen Sie diese mit historischen Daten Ihres Hosting-Providers oder Monitoring-Tools.

Stabilisieren

Ein überlasteter Server kann schnell dazu führen kaskadierende Fehler in anderen Teilen des Systems. Daher ist es wichtig, den Server zu stabilisieren, bevor Sie versuchen, größere Änderungen vorzunehmen.

Ratenbegrenzung

Die Ratenbegrenzung schützt die Infrastruktur, indem sie die Anzahl der eingehenden Anfragen begrenzt. Dies wird immer wichtiger, wenn die Serverleistung abnimmt: Mit zunehmender Antwortzeit neigen Benutzer dazu, die Seite aggressiv zu aktualisieren, was die Last auf dem Server weiter erhöht.

Reparatur

Obwohl das Ablehnen einer Anfrage relativ kostengünstig ist, besteht der beste Weg, Ihren Server zu schützen, darin, die Ratendrosselung an einer vorgelagerten Stelle zu handhaben, z. B. über einen Load Balancer, einen Reverse-Proxy oder ein CDN.

Anleitung:

Andere Lesungen:

HTTP-Caching

Suchen Sie nach Alternativen, um Inhalte aggressiver zwischenzuspeichern. Wenn eine Ressource von einem HTTP-Cache (entweder dem Browser-Cache oder einem CDN) bereitgestellt werden kann, muss sie nicht vom Ursprungsserver angefordert werden, wodurch die Serverlast reduziert wird.

HTTP-Header mögen Cache-Kontrolle, Verfalleny ETag geben an, wie eine Ressource über einen HTTP-Cache zwischengespeichert werden soll. Das Auditieren und Korrigieren dieser Header verbessert das Caching.

Obwohl Servicemitarbeiter Sie können auch zum Caching verwendet werden, sie verwenden a Zwischenspeicher und sie sind eher eine Ergänzung als ein Ersatz für das richtige HTTP-Caching. Aus diesem Grund sollten sich die Bemühungen beim Umgang mit einem überlasteten Server darauf konzentrieren, die Vorteile des HTTP-Cachings voll auszuschöpfen.

Diagnostizieren

laufen Leuchtturm und schau dir das an Stellen Sie statische Assets mit einer effizienten Cache-Richtlinie bereit Audit, um eine Liste der Ressourcen mit einem kurzen bis mittleren zu sehen Zeit zu leben (TTL). Überlegen Sie für jede aufgelistete Ressource, ob Sie die TTL erhöhen möchten. Als grobe Richtlinie:

  • Statische Ressourcen müssen mit einer langen TTL (1 Jahr) zwischengespeichert werden.
  • Dynamische Ressourcen sollten mit einer kurzen TTL (3 Stunden) zwischengespeichert werden.

Reparatur

Wähle aus Cache-Kontrolle Header maximales Alter Anweisung auf die entsprechende Anzahl von Sekunden.

Anleitung:

Beachten Sie das maximales Alter Die Direktive ist nur eine von vielen Caching-Direktiven. Es gibt viele andere Direktiven und Header, die das Caching-Verhalten Ihrer Anwendung beeinflussen. Für eine detailliertere Erklärung der Caching-Strategie wird dringend empfohlen, dass Sie lesen HTTP-Caching.

Elegante Degradation

Graceful Downgrade ist die Strategie, die Funktionalität vorübergehend zu verringern, um eine übermäßige Belastung eines Systems zu beseitigen. Dieses Konzept kann auf viele verschiedene Arten angewendet werden: zum Beispiel durch Bereitstellen einer statischen Textseite anstelle einer voll funktionsfähigen App, Deaktivieren der Suche oder Zurückgeben von weniger Suchergebnissen oder Deaktivieren bestimmter teurer oder nicht wesentlicher Funktionen. Der Schwerpunkt muss auf dem Löschen von Funktionen liegen, die sicher und einfach mit minimalen geschäftlichen Auswirkungen entfernt werden können.

Um besser zu werden

Verwenden Sie ein Content Delivery Network (CDN).

Der statische Asset-Service kann von Ihrem Server in ein Content Delivery Network (CDN) heruntergeladen werden, wodurch die Last verringert wird.

Die Hauptfunktion eines CDN besteht darin, Inhalte schnell für Benutzer bereitzustellen, indem ein großes Netzwerk von Servern bereitgestellt wird, die sich in der Nähe der Benutzer befinden. Unabhängig davon bieten die meisten CDNs auch zusätzliche Leistungsmerkmale wie Komprimierung, Lastenausgleich und Medienoptimierung.

Richten Sie ein CDN ein

CDNs profitieren von der Größe, daher ist es selten sinnvoll, ein eigenes CDN zu betreiben. Ein grundlegendes CDN-Setup ist ziemlich schnell eingerichtet (ca. 30 Minuten) und beinhaltet das Aktualisieren der DNS-Einträge, um auf das CDN zu verweisen.

Optimale Nutzung der CDN-Nutzung

Diagnostizieren

Identifizieren Sie Ressourcen, die nicht von einem CDN bereitgestellt werden (aber sollten), indem Sie sie ausführen WebPageTest. Klicken Sie auf der Ergebnisseite oben auf das Feld „Tatsächliche CDN-Nutzung“, um die Liste der Ressourcen anzuzeigen, die von einem CDN bereitgestellt werden sollten.

effektive Verwendung von CDN-2881295

WebPageTest-Ergebnisse

Reparatur

Wenn das CDN eine Ressource nicht zwischenspeichert, stellen Sie sicher, dass die folgenden Bedingungen erfüllt sind:

Skalieren Sie die Computerressourcen

Die Entscheidung, Rechenressourcen zu skalieren, muss sorgfältig getroffen werden. Auch wenn Rechenressourcen oft skaliert werden müssen, kann dies zu einer vorzeitigen Skalierung zu unnötiger architektonischer Komplexität und finanziellen Kosten führen.

Diagnostizieren

Eine Zeit bis zum ersten High-Byte (TTFB) kann ein Zeichen dafür sein, dass ein Server seine Kapazität erreicht. Diese Informationen finden Sie im Leuchtturm Verringern Sie die Antwortzeiten des Servers (TTFB) Prüfung.

Verwenden Sie zur weiteren Untersuchung ein Überwachungstool, um die CPU-Auslastung zu untersuchen. Wenn Ihre aktuelle oder erwartete CPU-Auslastung 80% übersteigt, sollten Sie eine Erhöhung Ihrer Server in Betracht ziehen.

Reparatur

Das Hinzufügen eines Load Balancers ermöglicht es, den Datenverkehr auf mehrere Server zu verteilen. Ein Load Balancer befindet sich vor einer Gruppe von Servern und leitet den Datenverkehr an den entsprechenden Server weiter. Cloud-Anbieter bieten eigene Load Balancer an (GCP, AWS, Azurblau) oder Sie können Ihre eigenen mit festlegen HAProxy oder NGINX. Nach der Bereitstellung eines Load Balancers können zusätzliche Server hinzugefügt werden.

Parallel zum Load-Balancing bieten die meisten Cloud-Anbieter Autoscaling an (GCP, AWS, Azurblau). Autoscaling funktioniert in Verbindung mit Load Balancing: Autoscaling skaliert Rechenressourcen automatisch nach oben und unten, je nach Bedarf zu einem bestimmten Zeitpunkt. Abgesehen davon ist die automatische Skalierung keine Zauberei: Es dauert einige Zeit, bis neue Instanzen online gehen, und erfordert eine umfangreiche Konfiguration. Aufgrund der zusätzlichen Komplexität, die mit der automatischen Skalierung einhergeht, sollte zunächst eine einfachere Konfiguration basierend auf Ihrem Load Balancer in Betracht gezogen werden.

Aktivieren Sie die Komprimierung

Textbasierte Ressourcen müssen per gzip oder brotli komprimiert werden. Gzip kann die Übertragungsgröße dieser Ressourcen um etwa 701 TP1T verringern.

Diagnostizieren

Benutze den Leuchtturm Aktivieren Sie die Textkomprimierung Audit, um die zu komprimierenden Ressourcen zu identifizieren.

Reparatur

Aktivieren Sie die Komprimierung, indem Sie Ihre Servereinstellungen aktualisieren. Anleitung:

Machen Sie das Beste aus Bildern und Medien

Bilder machen den größten Teil der Dateigröße der meisten Websites aus; Die Bildoptimierung kann die Größe einer Website schnell und erheblich verringern.

Diagnostizieren

Lighthouse verfügt über eine Vielzahl von Audits, die auf mögliche Bildoptimierungen hinweisen. Alternativ besteht eine andere Strategie darin, DevTools zu verwenden, um die größten Bilddateien zu identifizieren. diese Bilder sind wahrscheinlich gute Kandidaten für eine Optimierung.

Relevante Leuchtturm-Audits:

Chrome DevTools-Workflow:

Reparatur

Wenn Sie nur wenig Zeit haben...

Konzentrieren Sie sich darauf, große und häufig hochgeladene Bilder zu identifizieren und sie manuell mit einem Tool wie zu optimieren Squoosh. Heroische Bilder sind im Allgemeinen gute Kandidaten für eine Optimierung.

Dinge zu beachten:

  • Größe: Bilder sollten nicht größer als nötig sein.
  • Komprimierung: Im Allgemeinen wirkt sich eine Qualitätsstufe von 80-85 nur minimal auf die Bildqualität aus, während die Dateigröße um 30-40% verringert wird.
  • Format: Verwenden Sie JPEG für Fotos anstelle von PNG; Verwenden Sie MP4 für animierte Inhalte anstelle von GIF.

Wenn du mehr Zeit hast...

Erwägen Sie die Einrichtung eines Bild-CDN, wenn Bilder einen wesentlichen Teil Ihrer Website ausmachen. Bild-CDNs dienen dazu, Bilder bereitzustellen und voll auszunutzen, und laden den Bilddienst vom Ursprungsserver herunter. Das Einrichten eines Bild-CDN ist einfach, aber Sie müssen Ihre vorhandenen Bild-URLs aktualisieren, damit sie auf das Bild-CDN verweisen.

Andere Lesungen:

Minimieren Sie JS und CSS

Durch die Minimierung werden unnötige JavaScript- und CSS-Zeichen entfernt.

Diagnostizieren

Verwenden Sie die CSS minimieren und Minimieren von JavaScript Lighthouse-Audits, um Ressourcen zu identifizieren, die minimiert werden müssen.

Reparatur

Wenn Sie nur wenig Zeit haben, konzentrieren Sie sich darauf, Ihr JavaScript zu minimieren. Die meisten Websites haben mehr JavaScript als CSS, daher wird dies eine größere Wirkung haben.

Monitor

Serverüberwachungstools bieten Datenerfassung, Dashboards und Warnungen zur Serverleistung. Ihre Verwendung kann dazu beitragen, zukünftige Serverleistungsprobleme zu verhindern und zu mindern.

Ein Monitoring-Setup sollte so einfach wie möglich gehalten werden. Eine übermäßige Datenerhebung und -berichterstattung hat ihren Preis: Je größer der Umfang oder die Häufigkeit der Datenerhebung, desto teurer ist die Erhebung und Speicherung; übermäßige Wachsamkeit führt unweigerlich zu ignorierten Seiten.

Warnungen müssen Metriken verwenden, die Probleme konsistent und genau erkennen. Die Serverantwortzeit (Latenz) ist eine Metrik, die sich dafür besonders gut eignet: Sie erkennt eine Vielzahl von Problemen und korreliert direkt mit der Benutzererfahrung. Warnungen, die auf untergeordneten Metriken wie der CPU-Auslastung basieren, können eine nützliche Ergänzung sein, erkennen jedoch eine kleinere Teilmenge von Problemen. Gleichzeitig sollten Warnungen auf der beobachteten Leistung in der Warteschlange basieren (mit anderen Worten, dem 95. oder 99. Perzentil) und nicht auf Durchschnittswerten. Andernfalls können die Durchschnittswerte leicht Probleme verbergen, die nicht alle Benutzer betreffen.

Reparatur

Alle großen Cloud-Anbieter bieten eigene Monitoring-Tools (GCP, AWS, Azurblau). Des Weiteren, Netdata ist eine großartige kostenlose Open-Source-Alternative. Unabhängig vom gewählten Tool müssen Sie den Überwachungsagenten des Tools auf jedem Server installieren, den Sie überwachen möchten. Stellen Sie nach Abschluss sicher, dass Sie Benachrichtigungen einrichten.

Anleitung: