Problemy wydajności serwerów

Problemy wydajności serwerów
Dużymi krokami zbliża się Black Friday podczas, którego zwiększy się ruch w internetowych sklepach. Wiele osób będzie chciało dokonać zakupu, ale jeszcze więcej przyjdzie po prostu pooglądać jakie pojawiły się promocje. Serwery mogą zostać przeciążone. Jakie mogą być tego konsekwencje?

Black Friday to z jednej strony okazja na zakupy w dobrych cenach, a z drugiej czarny piątek dla wielu administratorów różnego typu sklepów internetowych, które zostaną zaatakowane przez wygłodniałych promocji klientów. Przeciążenie serwera to problem z systemem, który występuje w wyniku wyczerpania jego zasobów, po którym serwer nie jest w stanie obsłużyć przychodzących żądań. Powstają one w wyniku nagłych skoków ruchu, przestojów w ramach infrastruktury lub złośliwych ataków typu Distributed Denial-of-Service (DDoS). Przeciążenia serwera mogą prowadzić do wyświetlania użytkownikom kodów błędów, problemów z szybkością działania oraz wielu innych niespójności w stabilności.

1. Niepoprawnie działająca funkcja

Pod dużym obciążeniem część funkcji może ujawnić defekty, niespotykane w czasie normalnego użycia. Problemy te mogą spowodować, że użytkownicy nie będą mogli z części tych funkcji skorzystać. Przykład z prawdziwego projektu: system na produkcji, który przy przeciążeniu (o co naprawdę nie jest trudno) uniemożliwia użytkownikom zalogowanie się. W dużym uproszczeniu polega to na tym, że użytkownik przesyła do systemu swój login i hasło, ale dostaje na zwrotce informacje, że albo login, albo hasło jest niepoprawne. Wprowadzone dane są jednak poprawne tylko, że system odpytując bazę danych pod kątem danego loginu i hasła, nie otrzymując wystarczająco odpowiedzi uznaje, że takiego loginu w bazie nie ma. Co w takiej sytuacji robi użytkownik? Próbuje przywrócić swoje hasło. Uruchamia funkcję przypominania hasła czym jeszcze bardziej obciąża system, który teraz musi sprawdzić, czy użytkownik istnieje i wysłać mu mail z linkiem pozwalającym na zmianę hasła. Po  kliknięciu w link i zmianie hasła następuje próba logowania się i jeśli w międzyczasie obciążenie na systemie nie spadło to powtórzy się problem z niepoprawnym loginem i hasłem. Jest to samonapędzająca się spirala obciążenia, która będzie trwała tak długo, póki użytkownik się nie podda. Czyli w przypadku Black Friday istnieje ryzyko, że zrezygnuje z zakupu.

2. Nieosiągalność

Jeżeli serwer nie daje rady obsłużyć wszystkich zapytań, wówczas może pojawić się kilka objawów nieosiągalności:

  • pierwszym będzie opóźnienie w przesyłaniu odpowiedzi,
  • kolejnym może być dostarczanie tylko części odpowiedzi np. tylko część zawartości strony,
  • serwer zacznie resetować część połączeń, a jeśli to nie pomoże to zacznie odmawiać ich obsługi.

W przypadku przegięcia czyli całkowitego przeciążenia serwera, użytkownik na zwrotce może uzyskać kody błędów. Do najbardziej typowych należą:

  • 500 Internal Server Error - serwer napotkał sytuację, z którą nie wie jak sobie poradzić.
  • 502 Bad Gateway - ta odpowiedź błędu oznacza, że serwer, pracujący jako bramka, aby uzyskać odpowiedź potrzebną do obsługi żądania, otrzymał nieprawidłową odpowiedź.
  • 503 Service Unavailable – serwer nie jest gotowy do obsługi żądania. Należy pamiętać, że wraz z tą odpowiedzią powinna zostać wysłana przyjazna dla użytkownika strona wyjaśniająca problem. Odpowiedź powinna być użyta jedynie w przypadku zdarzeń tymczasowych, a nagłówek Retry-After HTTP powinien, jeśli to możliwe, zawierać szacowany czas przywrócenia usługi. 
  • 504 Gateway Timeout - ta odpowiedź błędu jest przekazywana, gdy serwer działa jako bramka i nie może uzyskać odpowiedzi na czas.

3. Niepoprawne komunikaty błędów

Jeśli jednak system będzie w stanie jakkolwiek odpowiedzieć, to często albo pojawi się problem niepoprawnie działających funkcji (patrz punkt 1.), albo system wyświetli nieprawdziwy komunikat. Tu również przykład z życia wzięty, gdzie oprogramowanie pod dużym obciążeniem informuje, że aktualnie system jest w trybie maintenance i zaprasza do odwiedzenia „za jakiś czas”. Z jednej strony jest to ewidentne oszukiwanie użytkownika, ponieważ komunikat potrafi się pojawić, zniknąć i znów się pojawić w ciągu kilku sekund, ale jest to próba zniechęcenia użytkownika z korzystania z serwisu. Z drugiej strony mniej użytkowników to szansa na przywrócenie sprawności systemów. 

Co zrobić aby przeciwdziałać takim problemom?

Podczas gdy zagrożenia płynące z przeciążenia serwerów często mają bardzo poważne konsekwencje, dobrą wiadomością będzie to, że można wprowadzić kilka rozwiązań, aby znacznie zmniejszyć ryzyko i niebezpieczeństwo takich zdarzeń. Techniki te nie uwolnią od przeciążeń serwera, ale pomogą Ci wyczyścić sytuację przed wejściem w bardziej proaktywne techniki, takie jak niefunkcjonalne testowanie oprogramowania, w szczególności testowania obciążenia.


Zbieraj dane o wydajności

Pierwszym krokiem do zapobiegania przeciążeniu serwera jest zbieranie i analizowanie informacji o serwerze w czasie rzeczywistym. Bez danych nie można analizować, przewidywać i rozwiązywać problemów.

Bądź transparentny

Oprócz gromadzenia danych dotyczących wydajności, należy je również udostępnić wszystkim działom - zespołom IT, pracownikom operacyjnym i wszystkim innym zainteresowanym. 

Automatyzuj i optymalizuj

Przy ogromnej różnorodności nowoczesnych technologii, które przyspieszają naszą pracę i eliminują rutynowe zadania, każdy biznes powinien rozważyć wdrożenie niektórych narzędzi analitycznych, w tym również mechanizmów AI i Machine Learning, w celu oceny wydajności. Analiza logów serwerowych może być nużąca i prowadzić do ominięcia istotnych symptomów problemów wydajności. Algorytmy zrobią to za Ciebie. 

Oceń stan fizyczny swoich serwerów

Jeśli masz własną serwerownię warto monitorować takie czynniki, jak dystrybucja powietrza w obiekcie, zwarcia czy wysokie temperatury. One również dość często wpływają na serwery internetowe, powodując przeciążenia i awarie. Jeśli temperatura jest zbyt wysoka, może prowadzić to do przegrzania. Jeśli jest zbyt niska, grozi Ci nadmiar wilgoci, która spowoduje korozję. Ponadto, utrzymuj swoje obiekty w czystości. Zakurzony sprzęt będzie się przegrzewał.

Autoskalowanie

Auto-scaling to metoda w rozwiązaniach chmurowych, dzięki której system automatycznie skaluje się w górę lub w dół, w zależności od aktualnych potrzeb zasobów. Nie tylko ułatwia to obsługę dużych skoków ruchu, ale także pozwala zaoszczędzić znaczną część budżetu. Nie musisz oceniać, ile pojemności będziesz potrzebował na dany okres i nie możesz już się pomylić.

Testuj wydajność

Wszystkie powyższe są działaniami, które pozwolą Ci zapobiec części problemów. Jeśli jednak Twoje oprogramowanie jest źle zaprojektowane, albo ma niewydajne funkcje, to nic nie będzie tego w stanie obsłużyć. Część rzeczy ujawni się dopiero wtedy, gdy serwer trafi pod duży ostrzał zapytań. Takie warunki można zasymulować podczas testów wydajności i przeciążenia. 

Przeciążenia serwerów nie da się przegapić. Zobaczysz to w swoich statystykach sprzedaży lub w niezadowoleniu klientów. Istnieje jednak zbiór symptomów, które powiedzą Ci o zbliżającym się niebezpieczeństwie oraz silna broń w postaci testów obciążających, która pozwoli Ci jednoznacznie wskazać czy Twoje serwery zostaną przeciążone podczas takich wydarzeń jak Black Friday czy też nie. 

Źródła:
https://www.radview.com/blog/server-overload-the-silent-killer/

Powiązane usługi

To powinno Cię zainteresować