![]()
Spis treści:
- Czym są i po co robić testy obciążeniowe?
- Narzędzia do symulacji ruchu Black Friday
- Tworzenie realistycznych scenariuszy – omijanie cache
- Analiza wyników testów obciążeniowych: Dowód „przed i po”
Skąd pewność, że Twój serwer wytrzyma 100, 500 czy 2000 jednoczesnych użytkowników próbujących sfinalizować koszyk o północy w Black Friday?
W tej serii artykułów przeprowadziliśmy Cię przez cały proces przygotowania platformy – od audyt i diagnostyka PrestaShop i optymalizacja bazy danych, przez ulepszanie konfiguracji serwera, wdrożenie CDN, Varnish i zaawansowane cache’owanie, aż po finalne porządki i wzmacnianie bezpieczeństwo e-commerce przed Black Friday. Teraz nadszedł czas na ostatni i najważniejszy etap: weryfikację. Pokażemy, jak za pomocą testów wydajnościowych e-commerce zmierzyć skuteczność wdrożonych optymalizacji i zyskać realny, twardy dowód gotowości na szczyt sprzedażowy. Przejdziemy od „mam nadzieję, że wytrzyma” do „wiem, że wytrzyma”.
Czym są i po co robić testy obciążeniowe?
Testy obciążeniowe (ang. load testing) to nie prosta diagnostyka. To kontrolowana symulacja ruchu Black Friday w najgorszym scenariuszu: nagłego, masowego i jednoczesnego obciążenia generowanego przez boty imitujące realnych klientów.
Celem jest kontrolowane zaatakowanie serwisu, aby znaleźć jego punkt krytyczny (ang. breaking point) – dowiedzieć się, gdzie i kiedy aplikacja przestaje odpowiadać, zanim odkryją to prawdziwi, płacący klienci.
Dlaczego to robimy?
- Identyfikacja wąskich gardeł: Czy problemem jest wolna baza danych, zbyt mała pula PHP-FPM (po optymalizacja aplikacji PrestaShop), czy niewydajne koszyki? Testy precyzyjnie wskażą najsłabsze ogniwo, umożliwiając identyfikacja wąskich gardeł.
- Weryfikacja infrastruktury: Czy Twój hosting faktycznie skaluje się pod obciążeniem? Czy Varnish działa poprawnie i efektywnie odciąża aplikację?
- Pewność i spokój: Zamiast nerwowo odświeżać monitoring, możesz skupić się na marketingu, wiedząc, że system jest przygotowany na określony, mierzalny poziom ruchu.
Nigdy nie testuj na produkcji!
Musimy postawić sprawę jasno. Uruchomienie symulacji ruchu Black Friday na działającym sklepie to gwarantowany sposób na zablokowanie bazy danych i przerwanie realnych transakcji. Prawdziwe testy wydajnościowe e-commerce wykonujemy wyłącznie na dedykowanym środowisku testowym (staging), które musi być idealną kopią (1:1) środowiska produkcyjnego – z tą samą konfiguracją serwera i, co kluczowe, zanonimizowaną, ale równie dużą bazą danych.
Narzędzia do symulacji ruchu Black Friday
Do generowania realnego obciążenia używamy wyspecjalizowanych, zaawansowanych narzędzi. Wybór narzędzia jest drugorzędny – kluczowe jest to, co i jak testujemy.
k6 (JavaScript/Go)
Nowoczesne, bardzo wydajne narzędzie skupione na deweloperach. Świetnie nadaje się do testowania i generowania ogromnego ruchu z minimalnych zasobów.

Locust (Python)
Pozwala na definiowanie zachowań użytkowników w czystym Pythonie. Jego siłą jest łatwość tworzenia bardzo złożonych, wieloetapowych scenariuszy.

Gatling (Scala)
Niezwykle potężne narzędzie, często używane w środowiskach korporacyjnych. Znakomicie radzi sobie z symulacją ruchu Black Friday na dużą skalę.

Tworzenie realistycznych scenariuszy – omijanie cache
Najgorszy test to ten, który nie uderza w aplikację. Wysłanie 10 000 botów na stronę główną mija się z celem, ponieważ większość tego ruchu obsłuży Varnish lub jakiś moduł Full Page Cache.
Prawdziwe testy wydajnościowe e-commerce muszą omijać cache i uderzać w dynamiczne procesy. Symulujemy całe ścieżki zakupowe, które generują unikalne zapytania do bazy danych i zapisują dane w sesji:
- Wyszukiwanie: Użytkownik wpisuje frazę (np. „czerwona sukienka M”) i klika „szukaj”. To zapytanie uderza bezpośrednio w bazę danych lub silnik wyszukiwania (jak Elasticsearch), omijając cache.
- Filtrowanie (nawigacja fasetowa): Użytkownik wchodzi na kategorię, a następnie zawęża wyniki, wybierając „Kolor: Czerwony”, „Rozmiar: M”, „Cena: 100-200 zł”. Każda taka zmiana filtra to kolejne dynamiczne zapytanie do bazy danych.
- Dodawanie do koszyka: To krytyczny moment. Aplikacja musi sprawdzić stany magazynowe, przeliczyć ceny i co najważniejsze – zapisać dane w sesji lub bazie danych. To operacja zapisu, nie tylko odczytu.
- Przejście do procesu zamówienia: Użytkownik klika „Przejdź do kasy”. Aplikacja musi ponownie walidować cały koszyk, stany magazynowe, ceny, reguły promocyjne i dostępność metod dostawy. To jeden z najbardziej złożonych i obciążających widoków w całym e-commerce.
Analiza wyników testów obciążeniowych: Dowód „przed i po”
To jest moment prawdy. Przeprowadzamy testy dwukrotnie: raz przed wdrożeniem optymalizacji (po audyt i diagnostyka PrestaShop) i raz po ich wdrożeniu.
| Kategoria | Metryka | Cel diagnostyczny |
| Biznesowe | Przepustowość (Throughput) | Ile żądań/użytkowników na sekundę jest w stanie obsłużyć serwer. |
| Biznesowe | Czas odpowiedzi (Latency) | Jak długo użytkownik czeka na reakcję serwera? Interesuje nas nie tylko średnia, ale przede wszystkim percentyle (np. p95 – czas, jakiego doświadcza 95% użytkowników). |
| Biznesowe | Współczynnik błędów (Error Rate) | Jaki procent użytkowników zobaczył błąd 500, 503 lub przekroczenie limitu czasu? |
| Diagnostyczne | Użycie zasobów (CPU / RAM) | Czy procesy aplikacji (np. PHP-FPM) lub bazy danych (np. MySQL) „dławią się”, zużywając 100% CPU lub całą dostępną pamięć RAM? |
| Diagnostyczne | Operacje dyskowe (I/O Wait) | Czy serwer nieustannie na coś czeka? Może to być oznaka nie wydajnych dysków lub „swapowania” pamięci. |
| Diagnostyczne | Saturacja (Kolejki) | Czy tworzą się „kolejki”? To kluczowy wskaźnik. Patrzymy na load average serwera, liczbę procesów czekających w puli PHP-FPM czy liczbę otwartych połączeń do bazy danych. Wysoka saturacja to znak, że system zaraz przestanie być wydolny. |
Porównanie „Przed i Po” to najpotężniejszy dowód na skuteczność optymalizacji. To bezpośrednia symulacja ruchu Black Friday, która pokazuje, co stałoby się, gdyby realny ruch dociążył serwery.
Identyfikacja wąskiego gardła: Wyniki „Przed” precyzyjnie pokazują nam, co zawodzi jako pierwsze.
- Wysoki Error Rate i Latency, ale niskie CPU? Być może problem leży w limicie połączeń, bazie danych lub konfiguracji sieci, a nie w samej mocy obliczeniowej.
- CPU 100% i wysoka Saturacja (np. kolejka PHP)? Aplikacja jest ociężała – prawdopodobnie przez niewydajny kod, pętle lub zapytania SQL, które „mielą” dane przy każdym żądaniu.
- Wysoki I/O Wait? Serwer dusi się na dyskach. Może to wina braku cache’owania (np. generowanie obrazków w locie), zbyt wolnych dysków lub nadmiernego logowania każdej operacji.
Walidacja poprawy: Test „Po” nie ma tylko pokazać, że jest lepiej. Ma pokazać, że konkretny problem został rozwiązany.
- Oczekiwany rezultat: Chcemy zobaczyć, że przy tym samym (lub nawet wyższym) obciążeniu, nasze metryki diagnostyczne (CPU, I/O, Saturacja) pozostają na bezpiecznym, niskim poziomie.
- Dowód: Błędy (Error Rate) spadły niemal do zera, a czasy odpowiedzi (Latency) dla krytycznych ścieżek (koszyk, kasa) są stabilne i niskie (np. stale poniżej 1-2 sekund na p95).
Podsumowanie: Cykl optymalizacyjny zakończony sukcesem
Testy obciążeniowe to jedyny sposób aby mieć pewność, że sklep wytrzyma szczyt. Zamiast zgadywać, weryfikujemy jego granice na środowisku testowym, analizując twarde dane diagnostyczne. Pozwala to znaleźć i naprawić wąskie gardła, zanim odkryją je klienci.
Nasza cała seria, od pierwszego kroku, czyli audyt i diagnostyka PrestaShop, przez optymalizacja aplikacji PrestaShop i optymalizacja bazy danych, wzmocnienie konfiguracja serwera, wdrożenie systemów cache takich jak Varnish, aż po bezpieczeństwo e-commerce przed Black Friday i wyłączanie zbędnych modułów, miała jeden cel: zbudowanie platformy gotowej na przyjęcie masowego ruchu. Ten artykuł, zamykający cykl, zapewnia mierzalny dowód na skuteczność podjętych działań.
Przeprowadzając rzetelną symulację ruchu Black Friday, dokonując identyfikacja wąskich gardeł i szczegółowej analiza wyników testów obciążeniowych, zyskujesz pełną kontrolę nad stabilnością i wydajnością swojego e-commerce.