Leiten Sie Besucher weiter, wenn die Website zu voll ist


7

Wir erwarten diese Woche einen starken Anstieg des Datenverkehrs auf unserer Website. Wenn die Site überlastet wird (dh Besucher erhalten einen 503-Fehler), möchte ich Besucher zu einer anderen Webadresse umleiten. Wie würde ich das machen?


1
Haben Sie Ihr aktuelles System getestet? Ich frage dies, weil ich vor einem Jahrzehnt einen einzelnen Cobalt 3-Server mit einer vollständig dynamischen Site hatte, die 100.000 Seitenanfragen pro Stunde abwickelte. Das sind 2,4 Millionen pro Tag! Es war reaktionsschnell genug und hatte andere Sites auf dem Server. Natürlich war das System nicht so schnell wie normal, aber es hat die Anfragen ziemlich gut bearbeitet. Ein weiteres Beispiel: Ich habe eine Website mit nur 3 Xeon-CPUs mit 4 x 200 MHz und 4 Gigabyte-Speicherservern verwaltet, die so viel Verkehr wie Microsoft verarbeiten. Sie sind möglicherweise in einem besseren Zustand als Sie denken.
Schranknoc

Ist es zu spät, einfach eine Amazon-Instanz hochzufahren und Ihre Site nach draußen zu verschieben? Ist dies eine Webanwendung oder nur eine Informationswebsite? Wenn letzteres der Fall ist, sollte es eine Menge dauern, bis ein Server heruntergefahren ist, wie im Schrank angegeben.
NotMe

Auf welchem ​​Server laufen Sie? IIS? Apache?
Zhaph - Ben Duguid

Antworten:


10

Wenn Ihre Website aufgrund eines großen Datenverkehrs zu voll ist, können Sie am besten benutzerdefinierte Fehlerdokumente umleiten. Wenn ein Benutzer den 503-Fehlercode erhält, leitet der Server Besucher auf die von Ihnen definierte benutzerdefinierte Fehlerdokumentseite weiter.

Es gibt verschiedene Möglichkeiten für verschiedene Server, Fehlerdokumentseiten anzupassen.

1. Fügen Sie für den Apache-Server den folgenden Code in die .htaccessDatei ein.

ErrorDocument 503 http://example.com/maintenance.html

2. Fügen Sie für den IIS 7-Server den folgenden Code in die Datei web.config ein

<system.webServer>
    <httpErrors errorMode="Custom" existingResponse="Replace">
        <remove statusCode="503" />
        <error statusCode="503" responseMode="Redirect" 
               path="http://example.com/maintenance.htm" />
    </httpErrors>
</system.webServer>

Ref. CustomError in web.config

3. Fügen Sie für den Tomcat 7-Server den folgenden Code zur WEB-INF/web.xmlDatei hinzu.

<error-page>
    <error-code>503</error-code>
    <location>/Error.jsp</location>
</error-page>

<error-page>
    <exception-type>java.lang.Exception</exception-type>
    <location>/Error.jsp</location>
</error-page>

Ref. Benutzerdefinierte Fehlerseite in Tomcat 7


Ich sehe, dass Sie gerade Code für IIS und Tomcat 7 hinzugefügt haben, aber nur Ihre Apache-Direktive wird eine Umleitung ausgeben. Die anderen sind nur Möglichkeiten, eine benutzerdefinierte Fehlerseite anzuzeigen.
Stephen Ostermiller

hmm ... du hast das richtig verstanden. Ich habe noch nicht an diesen Servern gearbeitet. Also weiß nicht den besten Weg. Also habe ich versucht, meine Antwort so gut wie möglich zu vervollständigen.
Nikhil Supekar

1
Für IIS können Sie das responseModevon Filevon ändern Redirectund dann eine absolute URL angeben, mit der Sie die Anforderungen an einen anderen Server senden können.
Zhaph - Ben Duguid

5

Anscheinend streben Sie das zweitschlechteste Ergebnis an. Wenn Sie eine Spitze erwarten, haben Sie Zeit, etwas zu tun:

  • Implementieren Sie In-Code-Caching (kann einfach sein, es kann eine Weile dauern, bis alles richtig ist)
  • Optimieren statische Dateien ( jpegoptim, optipng, more-css, usw.) Bandbreite, Geschwindigkeit Dinge zu reduzieren , für alle Benutzer.
  • Verschieben Sie Ihre statischen Daten in ein CDN, um diese Anforderungen vollständig aus Ihrem Netzwerk zu entfernen.
  • Wenn alles statisch ist, kopieren Sie die Site auf einige weitere Computer und verwenden Sie einen Load Balancer, um die Site unter einer IP-Adresse zu halten. Klingt teuer, aber viele VPS-Anbieter bieten Ihnen ein solches Setup für etwa 20 US-Dollar pro Woche an.
  • Oder schauen Sie sich die Front-End-Caching-Services von CloudFlare (et al.) An. Selbst ein Anfänger kann diese in wenigen Minuten implementieren, aber es hilft nicht viel allein, wenn Sie eine hochdynamische Site haben.

Bereiten Sie die Dinge einfach vor, damit Sie wissen, dass Sie im Falle eines Zusammenbruchs alles getan haben, um sicherzustellen, dass diese Benutzer beim ersten Mal das bekommen, was sie wollten . Das Planen eines Scheiterns ist keine schlechte Praxis, aber schauen Sie sich die Optionen an, um ein Scheitern zu vermeiden!

Aber ja, die beste Standardoption (die Sie bereits implementiert haben sollten) besteht darin, Ihre Fehlerseiten so anzupassen, dass die Leute wissen, dass etwas nicht stimmt. Ich sollte darauf hinweisen, dass die meisten Menschen sehr negativ auf diese reagieren. Wenn die Meldung "Bitte kommen Sie später wieder" lautet, erwarten Sie, dass nur ein Bruchteil eines Bruchteils zurückkehrt.

Dies ist also wiederum eine ideale Gelegenheit, um zu überprüfen, wie die Site gehostet wird, und wenn nichts anderes geplant ist, innerhalb einer Stunde nach dem Ausfall auf bessere Hardware umzusteigen.


3

Es gibt Dinge, die Sie auf verschiedenen Ebenen tun können:

Netzwerkebene

  1. Netzwerkhardware: Installieren Sie einen Load-Balancer mit zusätzlichen Servern dahinter. Auf diese Weise können Sie Ihre vorhandenen Einstellungen relativ einfach ausführen, die Einrichtung kostet jedoch wahrscheinlich viel Geld in dem Zeitrahmen, den Sie haben (abhängig von den Unterstützungsstufen Ihrer Hosting-Anbieter).

  2. Virtuelle Hardware: Wechseln Sie zu einem Cloud-basierten System mit integriertem Lastenausgleich. Dies bietet Ihnen die Vorteile von Option 1, ohne die potenziell hohen Einrichtungskosten für Ihre Hosts (Sie zahlen nur für das, was Sie verwenden). Dies kann jedoch einige Zeit dauern auf Ihrer Seite einzurichten.

Dies sind wahrscheinlich die "besten" Optionen, um damit umzugehen, und sie sind sehr bewährt, aber sie sind mit finanziellen Kosten verbunden - insbesondere für Punkt 1.

Beide können jedoch so konfiguriert werden, dass sie Ihr "Worst-Case" -Szenario "Unsere Server können nicht damit umgehen" bewältigen. Die Loadbalancer können so konfiguriert werden, dass der gesamte Datenverkehr an einen Server weitergeleitet wird, auf dem nur eine flache Seite angezeigt wird, auf der angegeben ist, dass die Site derzeit nicht verfügbar ist. Aber hier sind ein paar Informationen.

Software-Level

Zusätzlich zu den in den anderen Antworten beschriebenen Methoden können Sie auf den meisten Servern auf verschiedene Arten Fehlerseiten einrichten. In der Regel handelt es sich dabei um eine Seite auf der Site. Sie sollten jedoch auch in der Lage sein, eine Weiterleitung zu einer Seite auf zu erteilen ein anderer Server auch.

In IIS können Sie beispielsweise eine Fehlerantwort erstellen, die "Mit einer 302-Umleitung antwortet" - dies kann eine URL auf einem völlig anderen Server sein -. Sie können dies auf der .net-Fehlerseitenebene oder der IIS-Fehlerebene tun:

.Netz

<customErrors mode="RemoteOnly">
  <remove statusCode="503" />
  <error redirect="htp://www.example.com/sitedown.html" statusCode="503" />
</customErrors>

IIS

Festlegen eines Umleitungsfehlers in IIS


0

Wenn Sie Apache verwenden: Durchsuchen Sie Ihren Stammordner nach der Datei "htaccess.txt" oder ".htaccess". Fügen Sie die folgende Zeile hinzu:

ErrorDocument 503 http://www.example.com/customhtml.html

Sie haben Ihre Besucher zu customhtml.html umgeleitet. Sie können dem HTML-Code einen Iframe Ihrer "anderen Webadresse" hinzufügen.


1
Ich denke nicht, dass dies wesentlich von Nikhil Supekars Antwort abweicht.
Stephen Ostermiller

0

Ich werde vorschlagen, mehrere Server zu verwenden, um dieses Problem zu lösen, bei denen Server im Clustred-Format verbunden sind. Wenn also die Serverlast von eins hoch wird, wird Ihr Datenverkehr auf den zweiten Server umgeleitet und so weiter

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.