e-seven.pl: sklep odpowiada w 3 ms zamiast 18 sekund
Sklep na WooCommerce nie radził sobie z ruchem sięgającym 100 000 zapytań na minutę. Przenieśliśmy go na serwer LiteSpeed, włączyliśmy pamięć podręczną stron i bazy danych oraz sieć CDN. W tym samym teście obciążeniowym średni czas odpowiedzi spadł z 17 963 ms do 3 ms.
W skrócie
e-seven.pl
sklep internetowy na WordPress i WooCommerce
migracja na LiteSpeed, pamięć podręczna HTTP i obiektowa (Redis), CDN, nowy serwer, optymalizacja front-endu
kilka tygodni testów obciążeniowych i wdrożeń
Efekt
z 17 963 ms do 3 ms przy 100 000 zapytań na minutę
Na czym polegało wyzwanie
Środowisko produkcyjne e-seven.pl, zbudowane na WordPressie i WooCommerce, poddaliśmy testom obciążeniowym symulującym 100 000 zapytań HTTP w ciągu minuty. Przy ówczesnej konfiguracji serwer i standardowe mechanizmy buforowania nie były w stanie obsłużyć takiego ruchu.
- Procesor pracował na 100%, a zasoby backendu były całkowicie wysycone.
- Średni czas odpowiedzi na jedno zapytanie HTTP wynosił 17 963 ms.
- Rosła liczba błędów przekroczenia czasu, a panel administracyjny reagował z dużym opóźnieniem.
Klasyczna konfiguracja oparta na Apache i Nginx, z domyślną pamięcią podręczną strony i bez warstwy cache obiektowego, nie radziła sobie z tysiącami równoległych, dynamicznych zapytań typowych dla sklepu: koszyk, logowanie, niestandardowe zapytania do bazy. Razem z klientem ustaliliśmy dwa cele: średni czas odpowiedzi poniżej 50 ms oraz odporność na skoki ruchu bez utraty dostępności sklepu. Na hostingu współdzielonym ani przy podstawowych rozwiązaniach serwerowych nie dało się tego osiągnąć.
Co wdrożyliśmy
Program usprawnień objął zarówno warstwę serwerową, jak i samą aplikację WooCommerce.
-
01
Migracja na LiteSpeed Web Server
Przeniesienie środowiska z Apache i Nginx na LiteSpeed pozwoliło wykorzystać natywne mechanizmy pamięci podręcznej na poziomie HTTP.
-
02
LiteSpeed Cache z wstępnym ładowaniem
Skonfigurowaliśmy pamięć podręczną z preloadingiem strony głównej, kategorii produktowych i najczęściej odwiedzanych ścieżek. Liczba dynamicznych zapytań do backendu spadła radykalnie.
-
03
Redis jako trwała pamięć obiektowa
Baza danych została odciążona w obszarze sesji użytkowników, koszyka i dynamicznie generowanych elementów front-endu.
-
04
Nowy serwer i konfiguracja pod e-commerce
Sklep trafił na maszyny z procesorami klasy serwerowej i większą pamięcią RAM. Dostosowaliśmy limity PHP i konfigurację MySQL do potrzeb sklepu.
-
05
Globalna sieć CDN
Zasoby statyczne (JS, CSS, obrazy) są serwowane z węzła najbliższego użytkownikowi, co skraca czas ładowania niezależnie od lokalizacji.
-
06
Optymalizacja front-endu
Minifikacja i kompresja CSS i JS, część grafik w formacie AVIF, wyłączenie zbędnych wtyczek oraz cykliczne czyszczenie pamięci obiektowej i bazy WooCommerce.
W rezultacie liczba dynamicznych zapytań kierowanych do aplikacji zmniejszyła się o ponad 90%, a obciążenie procesora i operacji wejścia-wyjścia spadło wielokrotnie.
Wyniki przed i po
| Parametr | Przed optymalizacją | Po optymalizacji |
|---|---|---|
| Średni czas odpowiedzi | 17 963 ms | 3 ms |
| Obsługiwany ruch | 10 000 zapytań na minutę | 100 000 zapytań na minutę |
| Obciążenie procesora | 100% | poniżej 30% |
| Przekroczenia czasu i nieudane zapytania | liczne | 0 |
| Czas wczytania koszyka | ponad 10 sekund | poniżej 0,5 sekundy |
| Obsługa zapytań dynamicznych | opóźnienia i błędy | natychmiastowa |
| Dostępność sklepu | niestabilna | 100% |


Za kulisami: dziesiątki prób przed osiągnięciem celu
Optymalizacja nie była jednorazowym działaniem. To efekt wielu tygodni pracy, dziesiątek testów obciążeniowych i kolejnych poprawek konfiguracji. Każdą zmianę, czy dotyczyła serwera, pamięci podręcznej, bazy danych, czy ustawień CDN, testowaliśmy, mierzyliśmy i porównywaliśmy z poprzednim stanem.
Część założeń sprawdziła się od razu, inne wymagały rewizji, bo dopiero pod realnym obciążeniem ujawniały się nowe wąskie gardła i zależności między komponentami. Wynik 3 ms to suma tych prób i iteracji, a nie efekt jednej konfiguracji. Tylko takie podejście daje rezultaty stabilne i powtarzalne w dłuższej perspektywie.
Co z tego wynika dla innych sklepów
Szybkość to część pozycjonowania
Czas ładowania należy do czynników, które Google bierze pod uwagę przy ocenie strony. Krótszy czas odpowiedzi serwera poprawia wskaźnik TTFB i Core Web Vitals, a użytkownicy rzadziej porzucają koszyk. Dlatego optymalizację wydajności traktujemy jako element pozycjonowania sklepu, nie jako osobną usługę.
Jak dobrać sieć CDN
Liczy się rozmieszczenie punktów obecności tam, skąd łączą się klienci. Dla ruchu z Polski sens mają węzły w kraju i u sąsiadów. Warto sprawdzić obsługę HTTP/2 i HTTP/3, kompresję Brotli, optymalizację obrazów, ochronę przed atakami DDoS oraz zgodność z platformą sklepu. Model rozliczeń powinien pozwalać na skalowanie wraz z ruchem.
Mierzyć, zanim się zmieni
Decyzje o konfiguracji podejmujemy na podstawie testów obciążeniowych, a nie wrażeń. Po wdrożeniu stan serwera monitorujemy w sposób ciągły, żeby skoki ruchu w sezonie nie zaskoczyły ani sklepu, ani jego klientów.
Jeżeli Państwa sklep spowalnia pod ruchem albo gubi zamówienia w szczycie sezonu, zaczynamy od testu obciążeniowego i audytu konfiguracji. Dopiero na tej podstawie proponujemy zmiany serwera, pamięci podręcznej i CDN.
Pozostałe realizacje
rotal.pl: strona odzyskana po awarii i 8 215 podstron w Google
Silt: dekada współpracy na pierwszym miejscu w Google
Plan dla Państwa strony zamiast ogólnej oferty
Na konsultacji specjalista SEO omówi Państwa stronę, jej widoczność i konkurencję. Otrzymają Państwo listę pierwszych kroków.