Facebook Blinked Twitter Blinked LinkedIn Blinked

Stress testy – testy obciążeniowe serwerów

Testy obciążeniowe serwerów – stress test

Stress testy to niezwykle ważna część testów w e-commerce niestety bardzo często pomijana, wykonywana niepoprawnie. Dlaczego są takie istotne? Całe korzyści z wielkich kampanii online czy offline z pozycjonowania serwisu może zaprzepaścić drobny problem z infrastrukturą powodujący niedostępność całego serwisu.

Dlaczego warto robić testy przeciążeniowe

Stress Test GatlingPrzy planowaniu sprzedaży poprzez kanał online podstawowymi rzeczami które w pierwszej kolejności szacujemy to potencjalna liczba odwiedzających, sprzedaż jaką możemy wygnerować i oczywiście budżet jakim dysponujemy na działania marketingowe.
Bardzo ważnym elementem procesu są testy które pokażą czy pod dużym naporem użytkowników serwis będzie wczytywał się szybko i czy w pewnym momencie nie przestanie w ogóle odpowiadać. Przeprowadzenie testu wydajnościowego serwisu jest niezwykle ważne bo może się okazać, że cała praca nad kampanią nie będzie miała sensu bo serwis będzie niedostępny

Jak wygląda test wydajnościowy krok po kroku

Podstawową zasadą (niestety często pomijaną) jest przeprowadzenie odpowiedniej analizy rozkładu ruchu. Służy to głównie temu żeby wiedzieć na jakich stronach najczęściej poruszają się użytkownicy i na podstawie takiego rozkładu ruchu przygotować scenariusze. Do tego typu analizy wystarczy wspierać się systemem monitorującym aktywność odwiedzających stronę takim jak Google Analytics czy Piwik.

Kolejnym ważnym elementem jest analiza które strony potencjalnie mocno obciążają infrastrukturę czy to poprzez dużą liczbę zapytań do systemów bazodanowych czy nieoptymalny kod/strukturę.

Po takiej analizie można przejść do kolejnego kroku czyli wyboru oprogramowania do testów i pisania scenariusza testu.

Wybór oprogramowania – gatling/jmeter

Korzystamy głównie z dwóch skryptów JMETER i Gatling. Oba skrypty idealnie nadają się do wykonania testów.

Scenariusze

Na tym etapie warto wybrać spośród dwóch typów testów – upraszczając:

  • Stress Test – test przeciążeniowy – pokazujący gdzie jest niejako granica możliwości i przekroczenie jej. System przeciąża się wtedy większą liczbą użytkowników niż teoretycznie jest w stanie obsłużyć i bada się czy zachowanie serwisu podczas awarii jest poprawne
  • Load Test – test podczas którego doprowadza się dużą liczbę użytkowników w dłuższym czasie nie powodując zatrzymania systemu i sprawdzanie jak dużą liczbę zapytań system jest w stanie obsłużyć w długim czasie

Scenariusze pod takie testy należy napisać uwzględniając cel testu, szacowaną liczbę użytkowników, ich przyrost w czasie, jakie strony będziemy odpytywali.

Przygotowanie do testu

Oczywiście test powinien być przeprowadzany w godzinach nocnych lub porannych kiedy liczba użytkowników na stronie jest stosunkowo mała.
Co należy przygotować:

  • Porządny monitoring (zabbix, Nagios) który będzie monitorował infrastrukturę. Tutaj ważne żeby oprócz samego zużycia RAMU czy CPU był też włączony monitoring bardziej rozszerzony monitorujący parametry baz danych czy ruch sieciowy pomiędzy serwerami.
  • Admin/Admini gotowi do pomocy w razie położenia serwisu i na szybko do wyciągnięcia wniosków
  • Strona maintenance – informująca userów o prowadzonych pracach – bardziej w razie nieprzewidzianych konsekwencji testu

Jak długo trwa test obciążeniowy i przygotowanie do niego?

Testy obciążeniowe w zależności jaki jest ich cel trwają od 20 minut do kliku godzin.
Najważniejszą kwestią jest odpowiedź na pytanie czy celem jest wyznaczenie maksymalnego obsługiwanego ruchu, wygenerowanie peaku ruchowego, wygenerowaniu dużego wzrostu odwiedzin – symulujących naturalny wzrost ruchu, czy też sprawdzenie „recovery” infrastruktury po dużym wzroście obciążenia.

Przygotowanie do testu to napisanie scenariuszy w kilku wersjach, puszczenie paru testów na „pół gwizdka”, sprawdzenie co wykryły monitoringi u klienta i być może przebudowa testu.

Infrastruktura do testu wydajnościowego

Klaster do stress testów
Do testów wydajnościowych w zależności od potrzeb w jednym czasie możemy użyć infrastruktury składającej się z 15 fizycznych maszyn, wszystko podłączone do dwóch łącz o przepustowości 300 Mb/s i 200 Mb/s. Do dyspozycji jest też ponad 20 prywatnych proxy.

Z doświadczenia można powiedzieć że nawet przy największych sklepach e-commerce 2-3 maszyny to wystarczająca moc aby skutecznie wyłączyć sklep.

Do testów przygotowany jest też nasz najdziwaczniejszy wynalazek czyli klaster typu beowulf https://supercomputers.pl/moj-wlasny-diskless-klaster-typu-beowulf

Co może się zdarzyć?

Absolutnie wszystko jeżeli infrastruktura nie jest pewna 🙂 W 90% przypadków wynik testu jest w większości przewidywalny i do oszacowania jednak po to się robi test aby pozbyć się niepewności. Często zdarza się że serwis przestanie odpowiadać jednak po zakończeniu testu pracuje poprawnie. Najgorsze są sytuacje gdy serwis kompletnie się „zwiesi” i restart poszczególnych usług nie pomaga bo rozsypała się baza danych, lub po restarcie zaczytała się błędna konfiguracja nierestartowanego wcześniej serwera.

Test wydajnościowy krok po kroku

Etapy testu

Etap 1 – analiza danych

W tym etapie analizowane są dane strony

1. Analiza danych z Google Analytics/Logów serwera – ustalenie natężenia ruchu na stronie oraz rozkładu obciążenia per konkretne grupy podstron
2. Analiza dostarczonych danych klienta dot. infrastruktury
3. Krótkie sprawdzenie infrastruktury

Czas trwania – 1 dzień

Etap 2 – przygotowanie scenariuszy, test

1. Przygotowanie 3-4 scenariuszy testów – małe obciążenie, średnie obciążenie, maksymalne obciążenie (dla sprawdzenia max. liczy reguestów które strona jest w stanie obsłużyć).
2. Przygotowanie killer testu – test symulujący atak DDoS – bardzo dużo requestów w krótkim czasie w celu unieruchomienia serwera i sprawdzenia jego niedostępności
3. Zorganizowanie krótkiego testu sprawdzającego trwającego max 15 minut.

Czas trwania – 1-2 dni

Etap 3 – TEST

1. Puszczenie testu około 15 minut dla minimalnej liczby userów
2. Test normalny – około 15 minut dla średniej liczby userów
3. Test Performance – symulujący baardzo duży ruchu od użytkowników – około 30 minut
4. Killer test – około 15 minut

Test powinien być wykonywany gdy użytkowników jest stosunkowo mało – pewnie po godzinie 23:00 gdyż każdy z testów może zakłócić poprawne funkcjonowanie strony

Czas trwania – 2 godziny

Etap 4 – analiza danych

1. Analiza przesłanych logów z serwerów
2. Analiza logów z testów
3. Spisanie audytu infrastruktury wraz z wytycznymi dot. poprawy

Czas trwania – 7 dni

Podsumowanie

Testy obciążeniowe dają cała masę informacji gdzie są słabe punkty serwisu, co należy poprawić, co zoptymalizować zarówno po stronie kodu strony www jak i infrastruktury.

Czemu u nas?

Dysponujemy infrastrukturą która dawała radę przeciążać największe sklepy internetowe w kraju, od 5 lat zajmujemy się testami obciążeniowymi których przeprowadziliśmy niezliczoną ilość.

Kontakt

Zainteresowany? Chcesz dowiedzieć się więcej?

Skontaktuj się z nami a my przedstawimy ofertę dopasowaną do Twoich potrzeb
Kontakt

Nasze realizacje