Was tun, wenn der Schwarze Freitag morgen ist und Ihre Server nicht bereit sind?

Für diejenigen, die mit Marketing herumgespielt haben oder gerade erst in den Stream gekommen sind, ist „Black Friday“ ein Hype, verrückte Bestellungen und eine Menge Kunden.

Es ist gut, die Infrastruktur im Voraus auf den Zustrom vorzubereiten, aber an wen denken wir im Voraus? Aber manchmal wird die Entscheidung zur Teilnahme am Vortag getroffen.

Der Feiertag des Konsums hat also begonnen, die Server des Online-Shops beginnen fröhlich zu blinken, das Callcenter ist überhitzt und die Lieferservices bieten die Lieferung irgendwo im Januar an.
Was tun, entspannen und philosophisch betrachten oder tapfer kämpfen?



Ich habe die Serverinfrastruktur von Online-Shops während des Black Friday begleitet und wurde nie im Voraus kontaktiert oder hatte Zeit, mich vorzubereiten. Ich teile meine Erfahrungen mit denen, die heute den gleichen Auftrag erhalten.

(Sie haben Glück, wenn Sie es richtig machen können, d. H. Die Überwachung in wenigen Monaten einrichten, Datenverkehr, Engpässe analysieren, Projektarchitekturen durchführen, bei Bedarf Stresstests durchführen, die Architektur zusammen mit den Entwicklern neu erstellen und zusätzliche Serverkapazitäten im Voraus anschließen. Wir werden ein anderes Mal über den richtigen Ansatz sprechen, hier über Brandschutzmaßnahmen.

Wir richten die Überwachung ein


Ich denke, Überwachung ist auf jeden Fall primär. Es wird immer noch Probleme geben, aber dank der Überwachungspläne können Sie verstehen, wo die Engpässe jetzt liegen.

Wenn möglich, verwende ich Lösungen wie Zabbix / Prometheus / ELK (abhängig von der Architektur). Wenn nicht, verbinde ich SaaS schnell wie okmeter.io. Selbst wenn der Verkauf nur einen Tag dauert, können Sie eine Reihe von Indikatoren auf einem Monitor nicht wie einen Zulu-Tag hintereinander anzeigen.

Immer noch großartige Tools sind blackfire.io/newrelic.com für die Profilerstellung und pinba.org für die Analyse von "Verlangsamungs" -Seiten im Allgemeinen.

blackfire / newrelic hilft dabei, das Problem auf einer bestimmten Seite zu lösen. Pinba hilft Ihnen dabei, festzustellen, welche Seiten am häufigsten geladen werden und am längsten laufen (dies ist beispielsweise in Bitrix sofort einsatzbereit, aber versuchen Sie, in das Admin-Panel zu wechseln und dort zu arbeiten, wenn der Server und die Seite ist schon sehr schlecht).

Überschüssiges abschneiden


Ich schalte alles aus, was ausgeschaltet werden kann: bedingt unnötige Module im Moment, alle möglichen Schönheiten usw.

Der Verkauf ist ein einfacher Vorgang, ein großer Rabatt auf eine Reihe von Produkten. Ein Besucher mit brennenden Augen möchte ein Produkt auswählen, bis es ausverkauft ist, eine Bestellung aufgeben, einen Rabatt erhalten und eine Zahlung leisten.
Abonnieren Sie den Newsletter, registrieren Sie sich auf der Website, fragen Sie nach der Servicequalität - all dies interessiert den Kunden jetzt nicht, diese Module können deaktiviert oder vereinfacht werden. Ich schalte alles aus, ohne das die Site ein paar Tage lang ruhig arbeiten kann.

Ein Fall aus der Praxis: Während des Black Friday habe ich auf einem laufenden Server unter viel Verkehr debuggt, und nach 2 Stunden stellte sich heraus, dass das Lieferservicemodul extrem langsam ist, auf externe Services zugreift und die Lieferkosten für jede Bestellung automatisch berechnet. Als der Verkehr hunderte Male wuchs, hörten diese externen Dienste einfach auf, damit fertig zu werden.

Sie können sich einfach hinsetzen und nachdenken, und was könnte auf Ihre Website / in eine mobile Anwendung / usw. fallen?

Fallen lassen


Ich bereite mich darauf vor, dass jeder Dienst sowieso fallen wird. In diesem Fall müssen Sie den Besuchern mindestens etwas zeigen.

Beispielsweise sollte ein nicht funktionierendes Lieferservicemodul oder Zahlungsformular nicht die gesamte Bestellung blockieren. Der Benutzer kann morgen zurückkehren und seine Bestellung abschließen.

Auf den Seiten der 50er Jahre Fehler zeige ich die Mail- oder Telefonnummer der Verkaufsabteilung.

error_page 500 502 503 504 /50x.html; location = /50x.html { root /srv/www/yourwebsite.com/htdocs/sale-contacts/; } 

Erstellen Sie eine Kopie der Site


Wenn es möglich ist, eine Kopie der Site zum Testen von Änderungen zu haben, ist dies sehr gut. Ich spreche nicht von einem etablierten Bereitstellungssystem :)

Mit modischen Cloud-Diensten können Sie übrigens schnell und einfach eine Kopie des Battle Servers erstellen.

Fallstudie: Eine Site, deren Infrastruktur ich am Black Friday nach der Optimierung durch Entwickler (teilweise unterwegs), dem Hinzufügen von Ressourcen und der Optimierung von Software gewartet habe, begann mehr oder weniger erträglich mit starkem Datenverkehr zu arbeiten, aber immer noch sehr viel bei der Bestellung verlangsamt. Die Benutzer dachten, dass keine Bestellungen gesendet wurden, und drückten für alle Fälle mehrmals die Checkout-Taste. Mehrere Figuren drückten 300 mal den Knopf! Toller Stresstest :) Hundertmal mehr Besucher und rund 300 Bestellungen mehr! :) :)

CDN-Dienste


Sie können auf CDN verzichten, aber wenn die Server die Rückgabe der richtigen Menge an Statik objektiv nicht bewältigen können, ist dies erforderlich.

Sie können schnell ein CDN für gängige CMS wie 1C-Bitrix , Wordpress anschließen . Sie können das CDN jedoch nicht unterwegs konfigurieren, sondern müssen im Voraus darauf achten.

AntidDoS


Ich empfehle außerdem, AntiDDoS-Dienste zu verbinden und auf jeden Fall voranzukommen (andernfalls können sie unter plötzlicher Belastung, ohne sich an den normalen Datenverkehr anzupassen, legitime Besucher blockieren).

Für einen bestimmten Zeitraum kann dies kostenlos durchgeführt werden:


Serverfunktionen hinzufügen


Wir sehen die Möglichkeit, Ressourcen hinzuzufügen. Es wird möglich sein, dem Hauptserver Ressourcen hinzuzufügen, einen neuen Knoten zum Parallelisieren von Abfragen, einen Knoten für MySQL usw. zu erstellen. Wenn nicht Sie selbst, dann wird Ihnen ein nebenbei angeheuerter Outsourcer vielmals dafür danken.
Es ist praktisch, wenn Ihr Provider physische und Cloud-Server hosten kann (Selectel.ru, Servers.com).

Fuh, lass uns gehen


Das Gefährlichste sind die ersten Minuten nach den Newslettern. Der Cache ist noch nicht aufgewärmt, es gibt nur wenige Statistiken, Sie kennen die Funktionen des Systems immer noch nicht (wenn Sie keine ernsthaften Tests im Voraus durchgeführt haben).

Einige Konfigurationen


Caching in Nginx


Wir erstellen 3 Stunden lang einen 500-MB-Cache für alle Seiten mit Ausnahme der Bestellseiten.

 proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=blackfriday_cache:180m max_size=500m inactive=7d; #  blackfriday_cache,  180  proxy_cache_key "$request_method$scheme$host$request_uri"; proxy_cache_use_stale error timeout invalid_header http_500; map $uri $cookie_nocache { #     ,   ; 1 - , 0 -  "/order" "1"; "/bitrix" "1"; default "0"; } location / { .... proxy_hide_header "Set-Cookie"; #       proxy_ignore_headers "X-Accel-Expires"; proxy_ignore_headers "Expires"; proxy_ignore_headers "Cache-Control"; proxy_ignore_headers "Set-Cookie"; add_header X-Cache $upstream_cache_status; ... proxy_no_cache $cookie_nocache; #  ,   map;  1 -   proxy_cache blackfriday_cache; #    proxy_cache_valid 180m; #  180  proxy_cache_valid 404 1m; # 404  -   1  .... proxy_pass http://backend; #     } location @backend { .... #   } 

Zusätzliche Materialien viel, Links:


Mit dem 100-Mbit-Kanal können Sie 12 Seiten mit einem Gewicht von 1 MB pro Sekunde erstellen. Dies entspricht 43.000 pro Stunde. nginx ist in der Lage, ein solches Volumen auch auf einem kostengünstigen Server bereitzustellen.

Wir verteilen Anforderungen auf mehrere Knoten (die Site sollte bereit sein, mit mehreren Webknoten zu arbeiten).



Über Round-Robin DNS


(Seien Sie vorsichtig, diese Methode wird von vielen DNS-Anbietern nicht mehr korrekt unterstützt.)

 $ dig lifehacker.ru +short 136.243.37.180 136.243.37.178 


Über Nginx stromaufwärts


 $ cat nginx.conf upstream backend { server backend1.yoursite.com; server backend2.yoursite.com; } server { server_name yoursite.com; location / { proxy_pass http://backend; } } location @backend { .... #   } 


Über Cloudflare, Qrator usw.

Sie haben die Möglichkeit, mehrere Backends direkt über das Panel festzulegen. Die Konfigurationsaktualisierung erfolgt normalerweise sofort.

Ruhig


Es kommt vor, dass es unmöglich ist, eine perfekte Arbeit zu gewährleisten, aber die Hauptsache für das Geschäft ist, dass das System im Grunde funktioniert. Lassen Sie es langsamer werden, aber es sollte Benutzern ermöglichen, Bestellungen aufzugeben und nicht endlos F5 zu drücken. "Elend, hemmend, die Nerven aller spaltend", Tausende von Kunden nutzen es gleichzeitig und sie machen, machen, machen Bestellungen, und jeder von ihnen ist wertvoll. Ich habe Beispiele gesehen, bei denen der Laden an einem Tag eine sechsmonatige Trendwende vollzogen hat und das Ergebnis alle Nerven wert war.

Erfolgreicher Verkauf an Sie :)

Source: https://habr.com/ru/post/de430710/


All Articles