Cómo establecer el cuello de botella de un Server, solucionarlo rápidamente, mejorar el rendimiento del servidor y prevenir regresiones.
Übersicht
Diese Anleitung zeigt Ihnen, wie Sie einen überlasteten Server in vier Schritten reparieren:
- Untersuchen: Ermitteln Sie den Flaschenhals des Servers.
- Stabilisieren - Implementieren Sie schnelle Korrekturen, um die Auswirkungen zu verringern.
- Upgrade: Erhöhen und optimieren Sie die Serverfunktionen.
- 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 die der Verkehr sobrecarga un servidor, uno o más de los siguientes pueden convertirse en un cuello de botella: CPU, red, memoria o E / S de disco. Identificar cuál de estos es el cuello de botella posibilita concentrar los esfuerzos en las mitigaciones más impactantes.
- CPU: se debe investigar y corregir el uso de CPU que Sein consistentemente superior al 80%. El rendimiento del servidor muchas veces se degrada una vez que el uso de la CPU cumple ~ 80-90%, y se torna más pronunciado cuando el uso se acerca al 100%. La utilización de la CPU para atender una sola solicitud es insignificante, pero hacerlo a la escala que se encuentra durante los picos de tráfico a veces puede abrumar a un servidor. La descarga del servicio a otra infraestructura, la disminución de operaciones costosas y la limitación de la cantidad de solicitudes reducirán la utilización de la CPU.
- 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.
- E / S de disco: la velocidad a la que se pueden leer o escribir datos desde el disco está restringida por el propio disco. Si la E / S de disco es un cuello de botella, incrementar la cantidad de datos almacenados en la memoria Zwischenspeicher puede aliviar este problema (a costa de una mayor utilización de la memoria). Si esto no funciona, puede que sea necesario actualizar sus discos.
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:
Caching HTTP
Busque alternativas para almacenar en caché el Inhalt de manera más agresiva. Si un recurso se puede servir desde una caché HTTP (ya sea la caché del Browser o una CDN), entonces no hace falta solicitarlo desde el servidor de origen, lo que reduce la carga del servidor.
Überschriften HTTP como Cache-Kontrolle
, Verfallen
y 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
La directiva es solo una de las muchas directivas de almacenamiento en caché. Hay muchas otras directivas y encabezados que afectarán el comportamiento de almacenamiento en caché de su aplicación. Para conseguir una explicación más detallada de la Strategie de almacenamiento en caché, se recomienda encarecidamente que lea 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
Las CDN se benefician de la escala, por lo que operar su propia CDN rara vez tiene sentido. Una configuración básica de CDN es bastante rápida de configurar (~ 30 minutos) y se trata de actualizar los registros DNS para apuntar a la CDN.
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.

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.
- Compresión: en términos generales, un Qualitätslevel de 80-85 tendrá un efecto mínimo en la calidad de la imagen, mientras que producirá una disminución del 30-40% en el tamaño del archivo.
- 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...
Considere la oportunidad de configurar una CDN de imágenes si las imágenes constituyen una parte sustancial de su sitio. Las CDN de imágenes están diseñadas para servir y aprovechar al máximo imágenes y descargarán el servicio de imágenes desde el servidor de origen. Configurar una CDN de imagen es sencillo, pero necesita actualizar las Url de imagen existentes para que apunten a la CDN de imagen.
Andere Lesungen:
Minificar JS y CSS
La minificación elimina los caracteres innecesarios de JavaScript y CSS.
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.
Una configuración de monitoreo debe mantenerse lo más simple factible. La recopilación y alerta excesiva de datos tiene sus costos: cuanto mayor es el Umfang o la frecuencia de la recopilación de datos, más costoso es recabar y almacenar; una alerta excesiva conduce inevitablemente a páginas ignoradas.
Las alertas deben utilizar métricas que detecten problemas de manera consistente y precisa. El tiempo de respuesta del servidor (latencia) es una métrica que funciona concretamente bien para ello: detecta una amplia variedad de problemas y se correlaciona de forma directa con la experiencia del Nutzername. Las alertas sustentadas en métricas de nivel inferior, como el uso de la CPU, pueden ser un complemento útil, pero detectarán un subconjunto más pequeño de problemas. Al mismo tiempo, las alertas deben basarse en el desempeño observado en la cola (dicho de otra forma, los percentiles 95 o 99), en vez de promedios. Caso contrario, los promedios pueden esconder fácilmente problemas que no impactan a todos los usuarios.
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: