it-swarm.com.de

Vorbereitung auf einen riesigen Stau im Verkehr

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 1and1.co.uk gehostet.

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

35
SamTheMan

Während der Zeit mit hohem Datenaufkommen 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 verkürzen.

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 in einem Sprite kombinieren, werden mehrere Bildanforderungen in nur eine umgewandelt. 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 Server-Timeout-Werte durch Rücksprache mit Ihrem Hosting-Provider (sollte nicht zu niedrig sein).

Wenn die Zeitüberschreitungen geringer sind, wird die Verbindung in Kürze 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.

. 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. Load Balancing - Verteilen Sie die Last auf mehrere Load Balancing-Server.


  • 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.

26
Nikhil Supekar

Zunächst einmal 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 (d. H. 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 ausfü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 abschließend, 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.

7
Ewan Valentine

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 die von Ihnen vorgenommenen Optimierungen wirksam waren, und ggf. weitere Optimierungen durchführen.

5
James_pic

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 tun. 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, was bedeutet, dass Sie eine zusätzliche Ebene von Dingen haben, die um Ressourcen konkurrieren. 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, bin ich überrascht).

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 leben und arbeiten mit RAM, und davon konnten wir reichlich profitieren. Jetzt können Sie auch SSDs mit hohem E/A-Aufwand 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 hat auch Opsworks , so dass 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 ein paar 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.

3
Machavity

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 ähnlich viel Verkehr zu tun haben. 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. Informieren Sie sich zunächst über Lösungen wie Digital Ocean oder Amazon Web Services 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 bezüglich der 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 nur vier mittelgroße Webserver und Amazon ELB erforderlich, um die Last zu bewältigen gemäß diesem Artikel (SFW) . Ich glaube definitiv nicht, dass Ihr aktuelles Setup damit zurechtkommt, aber Sie sollten nicht genau sechzehn Webserver mit jeweils 48 Kernen benötigen, die von einem eigenen kleinen Atomgenerator angetrieben werden.

1
John Cave

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
Salman A

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 deren NS in die Registrar-Einstellungen.

1
Woody

Aus eigener Erfahrung wusste ich, dass auch der 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 GByteRAMund etwas GHz-Verarbeitung, 1 TB Bandbreite, SSD-Speicher und anderem nützlichen 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
imranhunzai

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 Zugriffs vorzubereiten. Obwohl 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 tun, 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).

0
symcbean

Verwenden Sie dedizierte Server mit mehreren Clustern, um Ihr Problem zu lösen

0
Himanshu Singla