|

🛒 Black Friday bez awarii. Stress test sklepu i 7 kroków, zanim ruszy szczyt

W tym roku Black Friday wypada w piątek 27 listopada, a Cyber Monday – 30 listopada. Szybka strona to za mało: w szczycie liczy się, ilu klientów naraz przejdzie przez koszyk i kasę, zanim serwer powie „dość”.
Zmiany w hostingu, wtyczkach i magazynie robi się teraz, a nie w tygodniu promocji.
W Wazelinski.nl przygotowujemy sklepy na szczyt ruchu. Poniżej 7 kroków, które sprawdzisz przed 27.11 – od testu obciążeniowego po plan awaryjny.

Sklep na Black Friday – napis „Wytrzyma 27.11?” z pomarańczowym znakiem zapytania na jasnym tle i pomarańczowa taśma „Test pojemności sklepu”, logo Wazelinski

Typowy scenariusz wygląda tak: przez cały rok sklep działa bez zarzutu, testy szybkości świecą na zielono, a w piątkowy wieczór Black Friday – w godzinie, na którą szła cała kampania – koszyk przestaje się zapisywać, kasa kręci kółkiem, a klienci dostają błąd 503. Strona nie była wolna. Była za ciasna: jak sklep z jedną kasą, do którego nagle wchodzi pół miasta. Szybkość mówi, jak sprawnie obsłużysz jednego klienta; pojemność – ilu obsłużysz naraz. Sklep na Black Friday trzeba sprawdzić właśnie pod tym kątem, a 27.11.2026 jest bliżej, niż wygląda w kalendarzu. Zobacz 7 kroków, które warto przejść teraz, póki na zmiany jest jeszcze bezpieczne okno.

1️⃣ Test obciążeniowy – próba generalna przed premierą

Test szybkości sprawdza, jak strona otwiera się jednemu użytkownikowi. Black Friday to inna sytuacja: setki ludzi w tym samym momencie dodają produkty do koszyka, logują się i płacą. Nikt rozsądny nie gra premiery bez próby generalnej – test obciążeniowy to taka próba dla sklepu. Symulujesz tłum, patrzysz, w którym miejscu sklep zaczyna zwalniać i przy jakim ruchu się poddaje, i masz czas, żeby to naprawić przed prawdziwym szczytem.

⚙️ Różnica techniczna: Test robimy narzędziami takimi jak k6, Apache JMeter czy Locust, najlepiej na kopii sklepu (staging) postawionej na identycznym hostingu. Scenariusz musi przypominać prawdziwych klientów: kategoria → produkt → dodanie do koszyka → checkout, a nie tylko odświeżanie strony głównej, która i tak leci z cache. Ruch zwiększamy stopniowo i obserwujemy czas odpowiedzi, odsetek błędów 5xx, zużycie CPU i kolejkę procesów PHP. Płatności – wyłącznie w trybie testowym bramki. Test zawsze uzgadniamy z hostingiem, bo nagły zalew zapytań może zostać potraktowany jak atak.

2️⃣ Cache, który nie dotyka koszyka – plakat w witrynie i lada na zapleczu

Strona produktu czy kategorii jest dla wszystkich taka sama – to plakat w witrynie, który można wydrukować raz i pokazywać tysiącom osób. Koszyk, kasa i „Moje konto” są inne dla każdego klienta, więc serwer musi je przygotować od nowa przy każdym kliknięciu. To właśnie one zatykają sklep w szczycie. Dwa klasyczne błędy: brak cache tam, gdzie mógłby odciążyć serwer, albo cache w koszyku, przez który klient widzi cudze produkty lub stare ceny.

⚙️ Różnica techniczna: Katalog obsługuje cache stron (wtyczka albo cache po stronie serwera, np. LiteSpeed, Nginx czy Varnish). Zgodnie z dokumentacją WooCommerce z cache wyłączamy strony Koszyk, Zamówienie i Moje konto oraz ciasteczka woocommerce_cart_hash, woocommerce_items_in_cart i wp_woocommerce_session_. Dynamiczne strony odciąża cache obiektów (Redis lub Memcached), dzięki któremu baza danych nie liczy w kółko tego samego. Warto też sprawdzić skrypt wc-cart-fragments: od wersji WooCommerce 7.8 ładuje się domyślnie tylko z widżetem mini-koszyka, ale motyw lub wtyczka mogą go wymuszać na każdej podstronie – a to dodatkowe zapytanie AJAX, które omija cache.

3️⃣ Limity hostingu – ile kas jest naprawdę otwartych

Pakiet hostingowy „bez limitów” zawsze ma limity – po prostu nie widać ich w zwykły wtorek, a sklep na Black Friday trafia na nie w pierwszej godzinie promocji. Każde wejście do koszyka czy kasy zajmuje na chwilę jeden proces serwera, jak klient zajmuje kasę w markecie. Gdy wszystkie kasy są zajęte, kolejni czekają, a po chwili dostają komunikat o błędzie. Właściciel sklepu zwykle dowiaduje się o tych limitach dopiero wtedy, gdy klienci piszą, że „nie da się zapłacić”.

⚙️ Różnica techniczna: Przed szczytem sprawdzamy w panelu lub u dostawcy: liczbę procesów PHP (PHP workers / entry processes), limity CPU i RAM, maksymalną liczbę połączeń z bazą danych, memory_limit i max_execution_time PHP oraz aktualną, wspieraną wersję PHP. Ważne są też reguły WAF i ochrony przed DDoS – zbyt ostre potrafią zablokować prawdziwy tłum klientów albo powiadomienia z bramki płatności. Jeśli test z kroku 1 pokazał, że zapas jest za mały, zmianę pakietu lub serwera robimy teraz i testujemy ponownie, a nie w środę przed Black Friday.

4️⃣ Synchronizacja stanów – ostatnia sztuka sprzedana dwa razy

Sklep, magazyn, hurtownia i marketplace muszą mówić jednym głosem. Gdy stany synchronizują się raz na jakiś czas plikiem CSV, w zwykły dzień nikt tego nie zauważa. W szczycie ta sama ostatnia kurtka trafia do koszyka w trzech kanałach naraz, a Ty zamiast pakować paczki, piszesz przeprosiny i robisz zwroty pieniędzy. Do tego ciężki import produktów uruchomiony w środku szczytu potrafi sam zablokować bazę danych.

⚙️ Różnica techniczna: W WooCommerce ustawienie Hold stock (wstrzymanie stanu magazynowego, w minutach) rezerwuje towar dla nieopłaconych zamówień w statusie „Pending payment” (oczekujące na płatność) – domyślnie 60 minut; przed szczytem dopasuj je do swoich metod płatności. Stany najlepiej wymieniać przez API i webhooki zamiast rzadkich importów, a ciężkie zadania (importy, feedy produktowe) przenieść poza godziny szczytu. WP-Cron zastępujemy prawdziwym cronem serwera (DISABLE_WP_CRON), żeby zadania nie odpalały się przy wizytach klientów, i sprawdzamy kolejkę Action Scheduler pod kątem zaległości. Starsze sklepy warto teraz przenieść na HPOS – osobne tabele zamówień, domyślne w nowych instalacjach od WooCommerce 8.2 (2023).

5️⃣ Kopia zapasowa – spadochron, który sprawdzasz na ziemi

Kopia, której nikt nigdy nie przywracał, to nie spadochron, tylko plecak z nadzieją w środku. W Black Friday zamówienia wpadają co chwilę, więc przywrócenie wczorajszej kopii oznacza utratę dzisiejszych zamówień i klientów, którzy zapłacili. Dlatego kopię sprawdza się wcześniej, na spokojnie – razem z odpowiedzią na pytanie, kto ją przywraca i ile to trwa.

⚙️ Różnica techniczna: Stosujemy zasadę 3-2-1: trzy kopie, na dwóch różnych nośnikach, jedna poza serwerem sklepu. W okresie promocji kopie bazy danych robimy częściej niż zwykle, a przywracanie testujemy na stagingu i mierzymy jego czas. Pamiętaj, że przywrócenie całej bazy nadpisuje zamówienia złożone po wykonaniu kopii – dlatego plan musi mówić, skąd je odtworzyć (np. panel bramki płatności, eksport zamówień, powiadomienia e-mail). Jeśli hosting oferuje przywracanie do konkretnego momentu (point-in-time recovery), warto wiedzieć, jak z niego skorzystać, zanim będzie potrzebne.

6️⃣ Zamrożenie aktualizacji – nie remontuje się sklepu w dniu wyprzedaży

Żaden market nie wymienia regałów w sobotę przed świętami. W sklepie internetowym ta pokusa jest jednak duża: nowa wtyczka do promocji, świeża wersja motywu, „szybka” zmiana w kasie. Każda z nich może w piątek o 20:00 zepsuć checkout, a automatyczna aktualizacja zrobi to bez pytania – akurat wtedy, gdy nikt nie patrzy.

⚙️ Różnica techniczna: Ustalamy okres zamrożenia (code freeze) na kilka–kilkanaście dni przed Black Friday i trzymamy go do końca Cyber Monday. Przed nim: komplet aktualizacji WordPressa, WooCommerce, motywu i wtyczki bramki płatności, przetestowany na stagingu, oraz spis wersji. W trakcie: automatyczne aktualizacje wyłączone, zero nowych wtyczek, zmian motywu i zmian w procesie zamówienia. Jedyny wyjątek to krytyczna poprawka bezpieczeństwa – wgrywana świadomie, po szybkim teście, a nie przez automat w środku nocy.

7️⃣ Plan awaryjny – gaśnica na ścianie, zanim poczujesz dym

Pytanie nie brzmi „czy coś się wydarzy”, tylko „kto zareaguje i w ile minut”. Gdy w szczycie kasa przestaje działać, nie ma czasu na szukanie numeru do hostingu i logowania do panelu. Plan awaryjny to kartka z odpowiedziami spisana na spokojnie: kogo alarmujemy, co wyłączamy, co mówimy klientom i jak szybko wracamy do sprzedaży.

⚙️ Różnica techniczna: Monitoring dostępności sprawdza nie tylko stronę główną, ale też koszyk i checkout, a alerty idą SMS-em lub na komunikator do konkretnej osoby. Pod ręką: kontakty do supportu hostingu, bramki płatności i programisty, dostęp do logów błędów serwera i PHP, strona statusu operatora płatności oraz zapasowa metoda płatności gotowa do włączenia. Na czarną godzinę przygotowana jest strona przerwy technicznej z kodem 503 i nagłówkiem Retry-After (Google rozumie ją jako chwilową przerwę), a przy bardzo dużym ruchu warto rozważyć poczekalnię (waiting room), którą oferują niektórzy dostawcy CDN. Najważniejsze: na weekend 27–30.11 ustal, kto po Twojej stronie odbiera alerty i reaguje.

✍️ Podsumowanie – próba generalna zamiast premiery na żywo

Black Friday nie wybacza improwizacji, ale nagradza przygotowanie – a dobrze przygotowany sklep na Black Friday to po prostu sklep sprawdzony wcześniej. Test obciążeniowy pokaże, gdzie sklep pęka, zanim zobaczą to klienci. Mądry cache odciąży serwer, a odpowiednio dobrany hosting da tyle kas, ile potrzeba. Zsynchronizowane stany oszczędzą przeprosin, sprawdzona kopia i zamrożone aktualizacje – nerwów, a plan awaryjny zamieni panikę w listę kroków. Sześć tygodni to wystarczająco dużo, żeby przejść wszystko spokojnie, i za mało, żeby odkładać to na listopad.

🔍 Sklep na Black Friday bez zgadywania? Zróbmy przegląd przed 27.11

W ramach przeglądu sklepu przed Black Friday sprawdzamy hosting i jego limity, wtyczki do aktualizacji, kopię zapasową razem z testem przywracania, cache przy koszyku i kasę na telefonie. Dostajesz krótką listę: co jest OK, a co warto poprawić przed 27.11. Poprawki zrobisz sam albo zlecisz je Wazelinski.nl. Przeglądy robimy do 20.11, żeby przed szczytem został czas na zmiany.

Zapytaj o przegląd sklepu →

Podobne wpisy