Wie räume ich einen überlasteten Server auf?

Das Material, dessen Übersetzung wir heute veröffentlichen, widmet sich der Suche nach Engpässen bei der Serverleistung, der Behebung von Problemen, der Verbesserung der Systemleistung und der Verhinderung von Leistungseinbußen. Auf dem Weg zur Lösung der Probleme eines überlasteten Servers werden hier die folgenden 4 Schritte vorgeschlagen:

  1. Beurteilung einer Situation: Ermittlung eines Engpasses bei der Serverleistung.
  2. Stabilisierung des Servers: Anwendung dringender Maßnahmen zur Verbesserung der Situation.
  3. Systemverbesserung: Erweiterung und Optimierung der Systemfunktionen.
  4. Serverüberwachung: Verwenden automatisierter Tools, um das Auftreten von Problemen zu verhindern.



1. Einschätzung der Situation


Wenn der Datenverkehr den Server überlastet, können Prozessor, Netzwerk, Speicher und Festplatten-E / A zu einem Leistungsengpass werden. Wenn Sie feststellen, was genau das Problem verursacht, können Sie sich auf das Wichtigste konzentrieren. Berücksichtigen Sie einige Merkmale der Analyse der wichtigsten Server-Subsysteme.

  • . , 80%, , . , 80-90%. 100%, . , , . , , , «» . , , , , .
  • . , , , , . , -, , . , , .
  • . , . , . . , (Out Of Memory, OOM). , , , .
  • /. , , , , . , , , (, ). — , .

Was wir unten diskutieren werden, zielt darauf ab, Probleme mit dem Prozessor und dem Netzwerk zu lösen. Tatsache ist, dass die meisten Projekte in Zeiten des Spitzenverkehrs genau unter solchen Problemen leiden.

Sie können mit dem Befehl top mit der Fehlerbehebung bei Serverproblemen beginnen . Wenn es eine solche Möglichkeit gibt, können Sie hier auf die historischen Daten des Hosting-Anbieters und auf die von Überwachungssystemen gesammelten Daten zurückgreifen.

2. Serverstabilisierung


Ein überlasteter Server im System kann schnell zu Kaskadenfehlern in anderen Teilen des Systems führen. Daher ist es wichtig, nachdem bekannt wurde, dass der Server überlastet ist, ihn zu stabilisieren und erst dann die Situation zu untersuchen, um einige ernsthafte Verbesserungen im System einzuführen.

▍ Begrenzen Sie die Verarbeitungsgeschwindigkeit von Abfragen


Durch die Begrenzung der Verarbeitungsgeschwindigkeit von Anforderungen können Sie die Infrastruktur schützen, indem Sie die Anzahl der eingehenden Anforderungen begrenzen. Dies ist sehr wichtig, wenn die Serverleistung sinkt. Wenn die Antwortzeit des Servers zunimmt, neigen Benutzer dazu, die Seite aggressiv zu aktualisieren, was die Serverlast weiter erhöht.

Obwohl die Verweigerung der Verarbeitung einer Anforderung eine einfache und effektive Maßnahme ist, ist es am besten, die Belastung des Servers zu verringern, indem die Anzahl der Anforderungen begrenzt wird, die über ein externes System eingehen. Dies kann beispielsweise ein Load Balancer, ein Reverse-Proxy-Server oder ein CDN sein. Unten finden Sie Links zu Anweisungen zum Arbeiten mit mehreren Systemen dieser Art:


Hier finden Sie Informationen zur Reduzierung der Serverlast mithilfe verschiedener Ansätze zur Begrenzung der Geschwindigkeit der Anforderungsverarbeitung.

▍HTTP-Caching


Suchen Sie nach Möglichkeiten, um das Zwischenspeichern von Inhalten zu verbessern. Wenn die Ressource dem Benutzer aus dem HTTP-Cache (aus dem Browser-Cache oder aus dem CDN) übergeben werden kann, muss sie nicht vom Server angefordert werden, wodurch die Belastung des Servers verringert wird.

HTTP-Header wie Cache-Control , Expires und ETag geben an, wie eine bestimmte Ressource zwischengespeichert werden soll. Das Überwachen und Korrigieren dieser Header kann zur Verbesserung des Cachings beitragen.

Obwohl Sie beim Zwischenspeichern auf die Funktionen von Servicemitarbeitern zurückgreifen können , verwenden diese einen separaten Cache . Dies ist eine Hilfe für das Kern-Browser-Caching-System und kein Ersatz dafür. Daher sollten bei der Behebung von Problemen eines überlasteten Servers die Bemühungen auf die Optimierung des HTTP-Caching konzentriert werden.

Diagnose


Starten Sie Lighthouse und sehen Sie sich die statischen Assets mit einer effizienten Cache-Richtlinienmetrik an, um eine Liste der Ressourcen mit kurzen und mittleren Caching-Zeiten ( Time To Live , TTL) anzuzeigen. Überprüfen Sie die aufgelisteten Ressourcen und erwägen Sie, ihre TTL zu erhöhen. Hier sind die geschätzten Caching-Bedingungen aufgeführt, die für verschiedene Ressourcen gelten.

  • Statische Ressourcen müssen für einen langen Zeitraum (1 Jahr) zwischengespeichert werden.
  • Dynamische Ressourcen müssen für kurze Zeit (3 Stunden) zwischengespeichert werden.

Cache-Einstellung


Es ist erforderlich, die erforderliche Cache-Caching-Zeit, ausgedrückt in Sekunden, in die Cache-Control-max-age Header- Direktive zu schreiben . Hier finden Sie Anweisungen zum Setzen dieses Headers auf verschiedenen Systemen:


Beachten Sie, dass die Direktive max-agenur eine von vielen Direktiven ist, die sich auf das Caching auswirken. Es gibt andere Anweisungen und andere Header, die sich auf die Cache-Funktionen auswirken. Um dieses Problem besser zu verstehen, wird empfohlen, dieses Handbuch zum HTTP-Caching zu lesen .

▍ Allmähliche Reduzierung der Systemfähigkeiten


Eine schrittweise Reduzierung der Systemfunktionen ist eine Strategie zur vorübergehenden Einschränkung der Funktionalität, um übermäßige Last vom Server zu entfernen. Dieses Konzept kann auf viele verschiedene Arten angewendet werden. Geben Sie Ihren Kunden beispielsweise eine statische Textseite anstelle einer vollständigen Anwendung, deaktivieren Sie die Suche oder geben Sie weniger als die üblichen Suchergebnisse zurück. Dies umfasst das Deaktivieren der ressourcenintensiven Funktionen von Projekten, deren grundlegende Funktionalität nicht beeinträchtigt wird. Das Hauptaugenmerk sollte hier auf die Deaktivierung der Funktionalität gelegt werden, die aufgegeben werden kann, ohne die Hauptmerkmale der Anwendung zu stark zu beeinträchtigen.

3. Systemverbesserung


▍Verwendung von CDN


Die Aufgabe, statische Ressourcen bereitzustellen, kann vom Server an das Content Delivery Network (CDN) übertragen werden. Dadurch wird die Belastung des Servers verringert.

Die Hauptfunktion von CDN besteht darin, den Benutzern mithilfe eines großen Netzwerks von Servern in der Nähe der Benutzer schnell Materialien bereitzustellen. Darüber hinaus bieten einige CDNs zusätzliche leistungsbezogene Funktionen. Darunter - Datenkomprimierung, Lastausgleich, Optimierung von Mediendateien.

CDN-Setup


Die Vorteile von CDN werden deutlich, wenn das Unternehmen, dem das Netzwerk gehört, über eine große Gruppe von Servern verfügt, die auf der ganzen Welt verteilt sind. Daher ist die Unterstützung Ihres eigenen CDN-Dienstes selten sinnvoll. Ein typisches CDN-Setup ist ein ziemlich schneller Vorgang, der ungefähr eine halbe Stunde dauert. Es besteht darin, die DNS-Einträge so zu aktualisieren, dass sie auf das CDN verweisen.

CDN-Optimierung: Fallstudie


Um Ressourcen zu identifizieren, die nicht über das CDN bereitgestellt werden (aber an Benutzer mit einem CDN ausgegeben werden sollten), können Sie WebPageTest verwenden . Klicken Sie auf der Ergebnisseite auf das als signierte Rechteck Effective use of CDNund zeigen Sie die Liste der Ressourcen an, die von CDN bereitgestellt werden sollen.


WebPageTest-Ergebnisse

Probleme lösen


Wenn Ressourcen nicht mithilfe des CDN zwischengespeichert werden, prüfen Sie, ob die folgenden Bedingungen erfüllt sind:


▍ Skalieren von Computerressourcen


Die Entscheidung zur Skalierung der Rechenressourcen sollte mit Vorsicht getroffen werden. Obwohl es oft möglich ist, bestimmte Probleme durch Skalieren zu lösen, ist es nach dieser Unmöglichkeit möglich, das System unnötig zu komplizieren und die Kosten für seinen Support unangemessen zu erhöhen.

Diagnose


Ein hoher Indikator für die Zeit bis zum ersten Byte ( Time To First Byte , TTFB) kann ein Zeichen dafür sein, dass sich der Server seinen Grenzen nähert. Informationen zu TTFB finden Sie im Abschnitt TTFB (Server Response Times reduzieren) des Lighthouse-Berichts.

Für eine eingehendere Untersuchung der Situation müssen Sie ein Überwachungstool verwenden und die Prozessorauslastung analysieren. Wenn der aktuelle oder prognostizierte Prozessorauslastungswert 80% überschreitet, müssen Sie über eine Erhöhung der Serverkapazität nachdenken.

Probleme lösen


Durch Hinzufügen eines Load Balancers zum System können Sie den Datenverkehr auf mehrere Server verteilen. Ein Load Balancer befindet sich vor dem Serverpool und verteilt den Datenverkehr an die entsprechenden Server. Cloud-Anbieter bieten Benutzern Load Balancer ( GCP , AWS , Azure ) an. Sie können jedoch auch Ihren eigenen Balancer mit HAProxy oder NGINX verwenden . Nachdem der Load Balancer betriebsbereit ist, können dem System zusätzliche Server hinzugefügt werden.

Zusätzlich zum Lastenausgleich bieten die meisten Cloud-Anbieter eine automatische Skalierung der Rechenleistung ( GCP , AWS ,Azure ). Die automatische Skalierung ist mit dem Lastausgleich verbunden. Durch die automatische Skalierung von Ressourcen bei hohen Ladezeiten werden nämlich zusätzliche Ressourcen zugewiesen, und in Zeiten geringer Last werden unnötige Ressourcen deaktiviert. Selbst wenn man dies berücksichtigt, sollte beachtet werden, dass die automatische Skalierung auch keine universelle Lösung ist. Das automatische Starten der Server dauert einige Zeit. Konfigurationen mit automatischer Skalierung erfordern eine ernsthafte Konfiguration. Bevor Sie ein komplexes System der automatischen Skalierung anwenden, sollten Sie daher eine relativ einfache Konfiguration mit einem Load Balancer ausprobieren.

▍Verwenden der Datenkomprimierung


Textressourcen müssen mit dem Algorithmus gzip oder brotli komprimiert werden. In einigen Fällen kann die Komprimierung dazu beitragen, die Größe solcher Ressourcen um etwa 70% zu reduzieren.

Diagnose


Um Ressourcen zu finden, die komprimiert werden müssen, können Sie den Indikator Textkomprimierung aktivieren im Leuchtturmbericht verwenden.

Probleme lösen


Um die Komprimierung zu aktivieren, müssen Sie die Servereinstellungen bearbeiten. Hier sind die Details dazu:


▍Optimierung von Bildern und anderen Medienmaterialien


Auf das Bild fällt der Großteil der Materialien der meisten Websites. Die Bildoptimierung kann zu einer signifikanten Reduzierung der Größe von Standortmaterialien führen. Darüber hinaus wird eine solche Optimierung ziemlich schnell durchgeführt.

Diagnose


Der Leuchtturmbericht enthält verschiedene Indikatoren, die auf mögliche Optionen zur Bildoptimierung hinweisen. Um nach großen Bildern zu suchen, die optimiert werden müssen, können Sie die üblichen Browser-Entwicklertools verwenden. Solche Bilder können durchaus gute Kandidaten für die Optimierung werden.

Hier ist eine Liste von LightHouse-Berichtsmetriken, auf die Sie achten sollten, wenn Sie die Möglichkeit der Bildoptimierung untersuchen:


Wenn Sie die Entwicklertools von Chrome verwenden, um Ihre Bilder zu optimieren, können Sie die folgenden Schritte ausführen:

  • Notieren Sie die Netzwerkaktivität der Seite.
  • Klicken Sie auf Img, um Nicht- Bildressourcen zu filtern .
  • Klicken Sie auf eine Spalte Size, um die Bilddateien nach Größe zu sortieren.

Probleme lösen


Lassen Sie uns zunächst darüber sprechen, was zu tun ist, wenn Sie wenig Zeit haben.

In einer solchen Situation sollten Sie auf große Bilder achten und auf Bilder, die häufiger als andere heruntergeladen werden. Nachdem sie gefunden wurden, müssen sie mit einem Tool wie Squoosh manuell optimiert werden . Große Fotos sind normalerweise gute Kandidaten für die Optimierung. Zum Beispiel aus einer Ressource wie Hero Images .

Folgendes müssen Sie bei der Optimierung von Bildern beachten:

  • Größe: Bilder sollten nicht größer als nötig sein.
  • : , 80-85 , 30-40% .
  • : JPEG, PNG. MP4, GIF.

Nun ein paar Worte darüber, wie man sich der Bildoptimierung für diejenigen nähert, die etwas mehr Zeit haben.

Wenn Bilder einen erheblichen Anteil an den Materialien der Website ausmachen, sollten Sie einen speziellen CDN-Dienst in Betracht ziehen, der für die Wartung mit Bildern entwickelt wurde. Mit solchen Diensten können Sie die Arbeit mit Bildern vom Hauptserver entlasten. Das Einrichten eines Projekts zur Verwendung eines solchen CDN-Dienstes ist einfach, erfordert jedoch die Aktualisierung vorhandener Links zu Bildern, sodass diese auf CDN-Ressourcen verweisen. Hier finden Sie das Material zur Verwendung spezialisierter CDN-Dienste für Bilder.

▍Minifizierung von JavaScript und CSS


Durch die Code-Minimierung können Sie die Größe reduzieren, indem Sie unnötige Zeichen entfernen.

Diagnose


Werfen Sie einen Blick auf die Minify CSS und Minify JavaScript - Metriken im Leuchtturm Bericht Ressourcen , die Notwendigkeit minification zu identifizieren.

Probleme lösen


Wenn Sie nicht viel Zeit haben, konzentrieren Sie sich auf das Minimieren von JavaScript-Code. Auf den meisten Websites übersteigt die Menge an JavaScript-Code die Menge an CSS-Code, sodass dieser Schritt zu besseren Ergebnissen führt. Hier erfahren Sie, wie Sie JavaScript minimieren, und hier finden Sie Informationen zum Minimieren von CSS.

4. Serverüberwachung


Serverüberwachungstools unterstützen die Datenerfassung und -visualisierung mithilfe von Kontrollfeldern. Sie können Benutzer über verschiedene Ereignisse im Zusammenhang mit der Serverleistung informieren. Die Verwendung dieser Tools kann dazu beitragen, Probleme mit der Serverleistung zu vermeiden und zu mindern.

Bei der Einrichtung eines Überwachungssystems sollten Sie sich um größtmögliche Einfachheit bemühen. Übermäßige Datenerfassung und zu häufige Benachrichtigungen können negative Auswirkungen haben. Je breiter das Spektrum der gesammelten Daten ist und je häufiger sie gesammelt werden, desto teurer wird es, sie zu sammeln und zu speichern. Und wenn derjenige, der für den Status des Servers verantwortlich ist, mit Nachrichten über kleinere Ereignisse bombardiert wird, ignoriert er diese Nachrichten infolgedessen.

Benachrichtigungen sollten Metriken enthalten, die Probleme konsistent und genau beschreiben. Beispielsweise ist die Serverantwortzeit (Latenz) eine Metrik, die hierfür besonders gut geeignet ist: Sie ermöglicht es Ihnen, eine große Anzahl von Problemsituationen zu identifizieren und steht in direktem Zusammenhang mit der Wahrnehmung des Servers durch Benutzer. Benachrichtigungen, die auf Metriken auf niedriger Ebene basieren, wie z. B. die Prozessorauslastung, können die Rolle eines nützlichen Add-Ons spielen, aber nur einen kleinen Teil möglicher Probleme anzeigen. Darüber hinaus sollten Meldungen nicht auf Durchschnittsindikatoren basieren, sondern auf Indikatoren, die 95-99 Perzentilen entsprechen. Andernfalls kann die Analyse von Durchschnittswerten leicht zu Problemen beim Überspringen führen, die nicht alle Benutzer betreffen.

Überwachungssetup


Alle großen Cloud-Anbieter stellen Kunden ihre eigenen Überwachungstools zur Verfügung ( GCP , AWS , Azure ). Darüber hinaus kann hier das Netdata- Tool erwähnt werden - eine hervorragende kostenlose Open-Source-Alternative zu Provider-Tools. Unabhängig davon, was genau Sie verwenden, müssen Sie auf jedem Server, den Sie überwachen möchten, eine Agentenanwendung installieren. Stellen Sie nach Abschluss des System-Setups sicher, dass Sie Benachrichtigungen einrichten. Hier sind die Anweisungen zum Einrichten verschiedener Überwachungstools:


Zusammenfassung


Heute haben wir darüber gesprochen, wie Serverleistungsprobleme identifiziert und behoben werden können. Ich würde gerne glauben, dass Ihre Server stabil funktionieren und Ratschläge aus diesem Material für Sie nicht nützlich sind. Und wenn etwas schief geht, hoffen wir, dass Sie hier etwas finden, das Ihnen hilft, das Problem so schnell wie möglich zu lösen.

Liebe Leser! Was tun Sie in einer Situation, in der der Server, auf dem Ihr Projekt ausgeführt wird, langsamer wird?


All Articles