Vorbereitung auf einen riesigen Stau im Verkehr


35

Unser Unternehmen wird diese Woche in einer Prime-Time-TV-Show zu sehen sein, und sie haben uns mitgeteilt, dass wir auf unserer Website mit rund 200.000 Besuchern gleichzeitig rechnen können.

Wir bekommen normalerweise nur ungefähr 100 Besuche pro Tag, daher habe ich keine Ahnung, ob wir so viel Verkehr bewältigen können. Wir werden von gehostet 1and1.co.uk.

Können wir Vorkehrungen treffen, um eine Verkrüppelung unserer Website zu verhindern?


3
Hast du das gelesen? Ich würde auf jeden Fall empfehlen, einen Dienst wie CloudFlare so zu aktivieren, dass er mindestens mit statischen Ressourcen umgehen kann. webmasters.stackexchange.com/questions/14394/...
richhallstoke

10
Sie sollten so schnell wie möglich mit 1and1.de sprechen! Sie können Ihre Website auf einen der dortigen VPS-Dienste mit einem hohen CPU / RAM / Bandbreiten-Verhältnis verschieben, das die Spitze ermöglicht! Danach können sie die CPU / RAM reduzieren, um Geld zu sparen
Simon Hayter

1
Haben Sie einen gemeinsamen Hosting-Plan mit 1 & 1? Wenn ja, müssen Sie wirklich nach einer alternativen Lösung suchen (sehr leistungsfähiges VPS oder Cloud-basiertes Hosting). Ich bezweifle sehr, dass eine Shared-Hosting-Umgebung diese Art von Datenverkehr verarbeiten kann.
Sean

3
Früher war ich ein Webhost. Die meisten Hosts können mit solchen Spitzen relativ leicht umgehen, wenn sie dies im Voraus wissen. Der Grund dafür ist einfach. Wahrscheinlich verfügen sie über Geräte wie Hardware-Caches, zusätzliche Server, Optionen für den Lastausgleich, Failover-Optionen usw. Sie sollten so aussehen, als könnten sie alles problemlos handhaben. Es ist gut fürs Geschäft. Die meisten richten diese Optionen kostenlos ein. Es ist eigentlich ein normaler Teil des Geschäfts.
Closetnoc

Sie möchten wissen, dass es Tools zum Testen der hohen Serverauslastung gibt. Ich kenne keinen Namen, aber sie sind leicht zu finden. Steigern Sie die Einstellungen und Sie können sich eine kontrollierte Probefahrt geben, ohne sich selbst ins Gesicht zu pflanzen, wenn die echten Leute auftauchen :)
Martijn

Antworten:


26

Während der Zeit mit hohem Datenverkehr sollte Ihr Server in der Lage sein, alle Anfragen von Besuchern Ihrer Website zu bearbeiten. Es gibt jedoch einige Einschränkungen bei gleichzeitigen Verbindungen, die vom Server verarbeitet werden. Daher ist es am besten, die Seitenanforderungen so schnell wie möglich zu bearbeiten.

Hier sind einige Vorschläge, die Sie in diesen Situationen berücksichtigen sollten:

Verbesserungen auf Anwendungsebene:

1. Minimieren Sie HTTP-Anforderungen, um die Ladezeiten für Seiten zu beschleunigen.

a) Kombinieren Sie alle JS-Dateien in einer einzigen kombinierten JS-Datei und alle CSS-Dateien in einer einzigen kombinierten CSS-Datei.

b) Reduzieren Sie JS- und CSS-Dateien, damit die Dateigröße verringert und der Download beschleunigt wird.

c) CSS-Sprites verwenden - Wenn Sie die meisten oder alle Bilder zu einem Sprite kombinieren, werden mehrere Bildanforderungen in nur einem zusammengefasst. Dann verwenden Sie einfach die Hintergrundbild-CSS-Eigenschaft, um den gewünschten Bildausschnitt anzuzeigen.

d) Verzögern Sie das Herunterladen von Bildern mit verzögertem Laden. Dies ist hilfreich, um die HTTP-Anforderungen zu reduzieren.

2. Bereiten Sie leichtgewichtige Seiten vor, die mehr Besuche erwarten:

a) Ausschließen von dekorativen Elementen wie Bildern oder Blitzlicht, wo immer dies möglich ist; Verwenden Sie Text anstelle von Bildern in der Site-Navigation und in Chrome, und fügen Sie den größten Teil des Inhalts in HTML ein.

b) Verwenden Sie statische HTML-Seiten anstatt dynamischer. Letzteres erhöht die Auslastung Ihrer Server. Sie können auch die statische Ausgabe dynamischer Seiten zwischenspeichern, um die Serverauslastung zu verringern.


Verbesserungen auf Serverebene:

1. Reduzieren Sie die Werte für das Server-Timeout, indem Sie sich an Ihren Hosting-Anbieter wenden (sollte nicht zu niedrig sein).

Wenn die Zeitüberschreitungen kürzer sind, wird die Verbindung bald freigegeben, sodass der Server mehr Verbindungen verarbeiten kann.

2. Verwenden Sie Dienste von Drittanbietern wie CloudFlare zum Zwischenspeichern statischer Daten und zum Schutz Ihrer Website vor böswilligen Benutzern und Angriffen wie DDOS.

3. Aktualisieren Sie Ihre Serverhardware - Aktualisieren Sie physische und virtuelle Speicher, erhöhen Sie bei Bedarf die Grenzwerte für E / A- und Eingabevorgänge. Ihr Hosting-Anbieter kann Ihnen besser helfen.

4. Dynamischen Code zwischenspeichern - Verwenden Sie APC, um PHP-Opcode zwischenzuspeichern.

5. Lastausgleich - Verteilen Sie die Last auf mehrere Lastausgleichsserver.


  • Wenn alle erforderlichen Maßnahmen ergriffen wurden, ist es jetzt an der Zeit, zu überprüfen, ob die Website für einen enormen Verkehrsanstieg bereit ist.

    Es gibt einige Dienste von Drittanbietern wie loadimpact.com, die Lasttests mit simuliertem Datenverkehr durchführen. Die Analyse hilft Ihnen zu verstehen, wie viel Last Ihre Website bewältigen kann und was verbessert werden kann.

  • Vermeiden Sie außerdem während der Traffic-Spike-Periode Operationen mit hoher CPU-Auslastung wie Website-Backup-Cronjobs usw.


3
Dies sind alles Site-bezogene Dinge und exzellent! Dies reicht jedoch möglicherweise nicht aus, es sei denn, Sie haben 200.000 Anfragen auf einmal auf Ihren Server gesendet. Als früherer Webhost habe ich gerne einen großen Hardware-Cache erstellt und die Website durchsucht, auf der der Cache geladen wurde. Ich würde die Site auch auf mehreren Servern replizieren, selbst wenn diese gemeinsam genutzt werden, und einen Lastenausgleich mithilfe eines Proxys oder einer Firewall implementieren. Das war normalerweise genug. Die meisten Leute wissen nicht, dass der größte Flaschenhals tatsächlich HD I / O ist. Das Erhöhen des Speichers und dessen Verwendung für Apache und MySQL-Cache hilft auch wirklich.
Closetnoc

2
Sie sind herzlich eingeladen, die Antwort zu verbessern! :)
Nikhil Supekar

1
Ich mag deine Antwort! Ich habe dafür gestimmt. Bitte sei nicht beleidigt. Ich wollte nur ein paar Dinge aus der Perspektive eines Webhosts hervorheben. Nur ein Kommentar. Kein Slam. Wieder ist Ihre Antwort ausgezeichnet !! Ich schlage oft vor, den Gastgeber zu kontaktieren, weil diese Dinge von Zeit zu Zeit auftauchen und es Optionen gibt, die der Gastgeber tun kann, die helfen und nichts kosten würden. Die meisten Gastgeber freuen sich über die Aufmerksamkeit! Für mich war es ein einfacher Prozess, da die Hardware bereits vorhanden war. Es hätte nicht lange gedauert, bis ich den Ort für ein solches Ereignis vorbereitet hätte. ;-) Danke für die Einladung.
Closetnoc

1
Kein Vergehen. Eigentlich könnten wir Ihre Erfahrungen mit Serverhardware wirklich nutzen.
Nikhil Supekar

1
Ich bin seit über einem Jahrzehnt aus der Branche ausgeschieden, mit Ausnahme der Suche nach Vertrauensnetzwerken. Das eine, was mir gefällt, ist, den Cache für Apache und MySQL oder ähnliche Anwendungen zu aktualisieren, um das Nageln des E / A-Subsystems zu reduzieren. Ich habe das hier gemacht und es kann wirklich funktionieren. Ich warne auch vor zu viel Arbeitsspeicher auf Systemen, da der Hintergrundspeicher d. H. Die Wartung von Auslagerungsdateien (ua) kann die Anzahl der E / A-Anforderungen, die in der Regel langsamer sind, drastisch erhöhen. Es gibt einen Sweet Spot, aber ich weiß nicht mehr, was dieser Sweet Spot ist. Ich vermute, Sie sind weit mehr ein Experte als ich. ;-)
closetnoc

7

Zuallererst würde ich Cloudflare empfehlen. Sie können ein kostenloses Basiskonto erstellen, das den Datenverkehr über lokale Rechenzentren weiterleitet, um die Anzahl der Server-Hops zu minimieren. Cloudflare eignet sich auch hervorragend zum Zwischenspeichern von Inhalten und bietet DDOS-Schutz.

Versuchen Sie im Übrigen, das Fett von Ihrer Serviceschicht zu entfernen. Stellen Sie sicher, dass Sie keine überlasteten Datenbankabfragen haben, die Ihren Code beeinträchtigen, oder keine CPU-intensive Logik, die vereinfacht werden könnte.

Versuchen Sie auch, Datenbankabfragen zwischenzuspeichern. Einige großartige Optionen für das Zwischenspeichern von Abfragen sind Redis oder Memcache. OpCaching ist eine weitere Überlegung, wenn Sie eine nicht kompilierte Sprache verwenden.

Aber wahrscheinlich ist es am wichtigsten, Ihren statischen Inhalt (dh CSS, JS und Bilder) so optimiert wie möglich zu halten. Minimieren Sie Ihr gesamtes Javascript, kombinieren Sie sie wenn möglich zu einer Datei. Denken Sie daran, dass jede Datei, die in Ihrer Site enthalten ist, mehrere Server-Hops durchführen muss, um den Endbenutzer zu erreichen.

Unterschätzen Sie nicht, wie viel Bandbreite und Ladezeit Sie durch das Komprimieren von Bildern sparen können!

Erwägen Sie schließlich, die Leistung mit Tools wie New Relic zu überwachen.

Viel Glück!!

Quelle: Laut Alexa einer der Entwickler der zwölftbeliebtesten Site in Großbritannien.


5

Erwägen Sie das Testen Ihrer Site. Es gibt kostenlose Tools wie JMeter , The Grinder und Gatling , mit denen Sie eine große Anzahl von Besuchern Ihrer Website simulieren können.

Indem Sie die Auswirkungen von starkem Datenverkehr im Voraus testen, können Sie feststellen, ob eine von Ihnen vorgenommene Optimierung wirksam war, und ggf. weitere Optimierungen vornehmen.


3

Wenn Sie auf 1and1 sind, suchen Sie wahrscheinlich nach einem günstigen Hosting. Billiges Hosting bedeutet, dass Sie in der Regel alles unter einem Dach erledigen. Ein Hauptproblem beim Hosten besteht darin, dass Sie beim Hosten aller Elemente auf derselben Website die Ressourcen auf wichtige Teile Ihrer Website aufteilen:

  • Ihr Webserver (Apache, Nginx usw.)
  • Ihre Datenbank (MySQL, PostGreSQL usw.)

Und da Sie 1 und 1 sind, besteht eine gute Chance, dass Sie ein Control Panel wie Plesk oder cPanel verwenden. Und der letzte Nagel in deinem Sarg? Sie haben nicht viele Ressourcen. Sie haben vielleicht 1 CPU (oder eine virtuelle CPU) und sehr wenig RAM (wenn Sie mehr als 2 GB haben, werde ich überrascht sein).

Als wir uns von 1 und 1 verabschiedeten, entschieden wir uns für einen skalierbaren Hosting-Anbieter (in unserem Fall Amazon Web Services) und unternahmen einige Dinge, die wir vorher nicht konnten

  1. Amazon hat seine eigenen Instanzen für Datenbanken (RDS) und so bekam unsere Datenbank Ressourcen zum Atmen. Die meisten RDBMS-Systeme nutzen den Arbeitsspeicher und davon konnten wir reichlich profitieren. Jetzt können Sie auch SSDs mit hohen E / A-Werten bereitstellen, wodurch der andere DB-Drosselungspunkt (Schreiben von Daten) weniger schmerzhaft wird.
  2. Wir haben einen Load Balancer mit 2 Webservern. Mit einem starken DB-Backend brauchten wir keine High-End-Frontends, so dass wir zwei Low-End-Server hatten.
  3. Wir sind auf etwas umgestiegen, das vollständig konfigurierte Maschinen nach Bedarf aufrüsten könnte. Mit so etwas wie Chef oder Puppet können Sie ganz einfach neue Webserver hinzufügen und es ist 100% transparent für Ihre Endbenutzer, wenn es richtig gemacht wird. AWS verfügt auch über Opsworks, sodass Sie Ihre Skripte direkt in AWS erstellen können.
  4. Ändern Sie Ihre Instanzgröße nach Bedarf. Dies ist ein Schlüsselstück für uns. Wenn die DB festsitzt, kann ich sie in ein paar Minuten herunterfahren und als größere neu starten. Ja, es würde Ausfallzeiten bedeuten, aber einige Minuten Ausfallzeit sind besser als Stunden einer schrecklich langsamen Site. Angst vor Ausfallzeiten? Behalten Sie eine gelesene Kopie in den Flügeln, bringen Sie diese dann herunter, schalten Sie sie auf eine größere Instanz um, befördern Sie sie zum Master, und Sie vermeiden Ausfallzeiten für die Kosten einer zusätzlichen Maschine.

AWS ist nicht das einzige Spiel in der Stadt (Azure, Rackspace usw.), aber stellen Sie sicher, dass 1 und 1 entsprechend Ihren Anforderungen skaliert werden können.


1

Erkundigen Sie sich bei Ihrem Internetdienstanbieter, ob Ihre Bandbreite begrenzt ist. Rüsten Sie Ihren Hosting-Plan auf, wenn die Bandbreite für den erwarteten Datenverkehr nicht ausreicht. Sie möchten Ihren Besuchern nicht die Meldung "Bandbreitenlimit überschritten" anzeigen.


1

Aus eigener Erfahrung wusste ich, dass auch das beste VPS seine Grenzen hat. Ich gehe hier echte Laien.

Eine unserer Sportwebseiten wurde auf einem VPS gehostet. Während eines Spiels zwischen Pakistan und Indien haben wir über 70.000 Treffer erhalten. Wir hatten ein Inmotinghosting-VPS mit 4 GB RAM und etwas GHz-Verarbeitung, 1 TB Bandbreite, SSD-Speicher und anderem interessanten Zubehör. Wir hatten auch eine kostenpflichtige Version von Cloudflare aktiviert.

Es war gerade die Hälfte des Spiels und die Website ging kaputt. Es kam während des Spiels nie live und wir haben mehr als 70.000 Besucher verloren. Später wussten wir, dass unsere Bandbreite verbraucht war und ohne funktionierenden Quellhost ist CDN meistens unbrauchbar.

Lektion: Minimieren Sie nicht nur eine VPS, sondern auch eine CND wie Cloudflare. Je kleiner desto besser. Sie können das Seiten-Caching und die Code-Minimierung verwenden, die beim Umgang mit dem Datenverkehr sehr nützlich sind.


1

Sie haben "auf einmal" nicht sehr gut definiert. Angenommen, Sie sehen in einer halben Stunde 200.000 einzelne Besucher. Das sind 111 Anfragen pro Sekunde, ohne die Besucher zu berücksichtigen, die durchklicken und mehr Seiten öffnen (welche möchten Sie, oder?).

Das erste, was ich tun würde, sind Google-Geschichten von Menschen, die mit ähnlichen Verkehrsaufkommen umgehen. Viele Menschen werden in ihren Blogs über ihre Erfahrungen schreiben, um anderen zu helfen. Sie werden feststellen, dass es extrem schwierig ist, eine Geschichte über jemanden zu finden, der dies auf Shared Hosting tut, und es gibt einen Grund dafür. Schauen Sie sich zunächst Lösungen wie Digital Ocean oder Amazon Web Services an und nutzen Sie dabei das Ihrem Publikum am nächsten gelegene Rechenzentrum. Und ich bin damit einverstanden, dass das Auslagern aller statischen Ressourcen in CloudFlare, auch eines kostenlosen Kontos, eine hervorragende Idee ist.

Testen Sie außerdem Ihren Code, indem Sie oben und unten auf Ihren Seiten Timing-Skripts hinzufügen, sofern diese dynamisch sind. Angenommen, meine Annahme zu Zahlen ist richtig, müssen Sie in der Lage sein, jede Seite in weniger als 10 Millisekunden zu liefern, um eine akzeptable Leistung zu erzielen. Wenn Sie alle Anforderungen standardmäßig über SSL bedienen, deaktivieren Sie diese Option für einige Tage, während der Sturm vorüber ist.

Auch 200.000 klingt sehr beängstigend, aber denken Sie daran, dass Sie nicht zu ängstlich sein müssen (obwohl Sie es sollten, ein bisschen). Als das Paper-Magazin beispielsweise NSFW-Fotos von Kim Kardashian veröffentlichte, waren laut diesem Artikel (SFW) nur vier mittelgroße Webserver und Amazon ELB erforderlich, um die Last zu bewältigen . Ich glaube definitiv nicht, dass Ihr aktuelles Setup damit fertig wird, aber Sie sollten nicht genau sechzehn Webserver mit jeweils 48 Kernen benötigen, die von einem eigenen kleinen Atomgenerator angetrieben werden.


1

Kenne diese alte, aber sehr gute Frage und wünschte, ich hätte vor ein paar Jahren gute Infos zum Thema ...

Von Zeit zu Zeit haben wir (schulbezogene) Websites in Fernsehsendern. Da wir mit einem sehr engen Budget arbeiten, ist "Load Balancing" die Lösung. VPS-Boxen sind heutzutage ziemlich billig und wir spiegeln / duplizieren unseren Inhalt nur auf 2-3 von ihnen.

Schauen Sie sich diesen Artikel an und lesen Sie über "Round-Robin".

Weitere Informationen zu Lasttests finden Sie hier .

Als wir anfingen, mit Spikes umzugehen, hatten wir einfach unseren Inhalt auf 2-3 VPS-Boxen und stellten ihre NS in Registrar-Einstellungen.



0

Viel Glück beim Umschreiben Ihrer Website, beim Wechseln des Anbieters und beim Migrieren von Inhalten zu einem CDN in weniger als einer Woche.

Wie Sie vielleicht anhand der anderen Antworten festgestellt haben, müssen Sie diese Mindestanforderungen erfüllen, um Ihre Website auf einen starken Anstieg des Datenverkehrs vorzubereiten. Wenn Sie derzeit auf 1and1.co.uk arbeiten, verfügen Sie wahrscheinlich nicht über ein starkes Team von Netzwerktechnikern, Datenbankadministratoren, Programmierern und Front-End-Optimierern.

Es ist unwahrscheinlich, dass es passiert, oder?

Sie haben nicht gesagt, was Sie mit Ihrer Website machen, ob sie Warenkorb ausführt oder ob sie mit statischen Inhalten implementiert werden kann. Wenn letzteres der Fall ist, überleben Sie den Tsunami möglicherweise, wenn Sie die gesamte Site in statische Dateien kratzen und anstelle der regulären Site veröffentlichen (sichern Sie zuerst die aktuelle Version).

Sie sollten auch mit 1 und 1 sprechen (mit Ihrer Kreditkarte in der Hand).

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.