| Termin | Definicja |
|---|---|
| Przeciążenie serwera | Przeciążenie serwera to stan, w którym liczba żądań przewyższa jego zdolność do ich obsłużenia. Przeciążenie serwera — czym jest i jak je rozumiećPrzeciążenie serwera oznacza sytuację, w której system otrzymuje więcej zadań, niż może sprawnie wykonać w danym czasie. Zadaniami mogą być żądania otwarcia strony, logowania, pobrania pliku, zapisania danych, wykonania zapytania do bazy albo obsługi połączenia z aplikacją. Samo pojawienie się dużej liczby żądań nie zawsze oznacza awarię. Problem zaczyna się wtedy, gdy kolejka zadań rośnie szybciej, niż serwer jest w stanie ją opróżniać, a użytkownicy zaczynają odczuwać opóźnienia, błędy lub całkowity brak dostępu. Warto odróżnić chwilowy wzrost obciążenia od długotrwałego przeciążenia. Krótkie zwiększenie ruchu może zostać obsłużone dzięki buforom, pamięci podręcznej i chwilowemu wykorzystaniu wolnych zasobów. Jeżeli jednak podwyższone zapotrzebowanie utrzymuje się długo, procesor, pamięć operacyjna, dyski albo połączenie sieciowe mogą pracować na granicy możliwości. Wtedy każda kolejna czynność trwa dłużej, a niewielki dodatkowy wzrost ruchu może wywołać lawinowe pogorszenie działania. Przeciążenie nie musi również oznaczać, że urządzenie jest fizycznie uszkodzone. Często wynika z błędnej konfiguracji, nieefektywnego programu, źle zaprojektowanego zapytania, niewystarczającej kontroli dostępu albo nagłej zmiany sposobu korzystania z usługi. Trafna diagnoza powinna więc obejmować zarówno stan sprzętu, jak i zachowanie oprogramowania oraz charakter ruchu. Przeciążenie serwera a zwykłe spowolnienie i awariaSpowolnienie może mieć wiele przyczyn, a przeciążenie jest tylko jedną z nich. Przy przeciążeniu często obserwuje się wzrost czasu odpowiedzi, liczbę zadań oczekujących na wykonanie, większe zużycie procesora lub pamięci oraz opóźnienia w dostępie do danych. Awaria może natomiast polegać na zatrzymaniu usługi, błędzie systemowym, utracie łączności albo uszkodzeniu nośnika. Objawy mogą wyglądać podobnie z perspektywy użytkownika, dlatego samo odświeżanie strony nie pozwala rozstrzygnąć, co się wydarzyło. Istotne jest porównanie obciążenia z typowym zachowaniem systemu. Jeżeli usługa działa poprawnie przy niewielkim ruchu, ale wyraźnie zwalnia podczas publikacji materiału, kampanii promocyjnej lub większej liczby jednoczesnych logowań, prawdopodobne jest niedopasowanie wydajności do chwilowego zapotrzebowania. Gdy problemy pojawiają się także przy małej liczbie użytkowników, przyczyną może być wadliwy proces, wyciek pamięci, błędne zadanie wykonywane cyklicznie lub kłopot z odczytem danych. W praktyce porównuje się również różne zasoby. Wysokie użycie procesora wskazuje na intensywne obliczenia albo dużą liczbę aktywnych procesów. Niedobór pamięci może prowadzić do częstego przenoszenia danych między pamięcią operacyjną a dyskiem. Zajęty kanał wejścia i wyjścia spowalnia odczyt oraz zapis, nawet gdy procesor nie jest maksymalnie obciążony. Z kolei ograniczenie sieciowe może powodować opóźnienia w przesyłaniu danych bez wyraźnego wzrostu użycia pozostałych podzespołów. Przeciążenie serwera i typowe źródła problemówJednym z częstych źródeł przeciążenia jest nagły, prawidłowy wzrost ruchu. Popularny artykuł, transmisja, formularz rejestracyjny lub rozpoczęcie sprzedaży mogą przyciągnąć więcej osób, niż przewidziano podczas projektowania usługi. W takim przypadku system nie musi być zaatakowany ani uszkodzony. Zwyczajnie nie został przygotowany na jednoczesną obsługę takiej liczby operacji. Inny scenariusz wiąże się z nieefektywnym kodem. Program może wielokrotnie wykonywać te same obliczenia, pobierać zbyt duże zestawy danych albo uruchamiać kosztowne operacje dla każdego użytkownika osobno. Źle przygotowane zapytanie do bazy danych może blokować inne zadania i powodować narastanie kolejki. Podobny efekt wywołuje brak pamięci podręcznej, przez który system za każdym razem tworzy od początku wynik, który mógłby zostać wykorzystany ponownie. Przeciążenie może być także skutkiem procesów działających w tle. Kopie zapasowe, indeksowanie, skanowanie plików, generowanie raportów, synchronizacja danych lub aktualizacje wykonywane w nieodpowiednim momencie konkurują o te same zasoby z główną usługą. Jeżeli kilka takich operacji rozpocznie się jednocześnie, chwilowe obciążenie może stać się na tyle duże, że użytkownicy zauważą przerwy w działaniu. Należy uwzględnić również ruch niepożądany. Powtarzalne próby logowania, automatyczne pobieranie treści, skanowanie formularzy i masowe żądania mogą zajmować zasoby przeznaczone dla prawidłowych użytkowników. W takim przypadku analiza powinna obejmować źródła ruchu, częstotliwość żądań, powtarzalność adresów oraz rodzaj wywoływanych operacji. Bez sprawdzenia zapisów zdarzeń łatwo pomylić problem wydajnościowy z problemem bezpieczeństwa. Przeciążenie serwera — praktyczne wskazówki diagnostycznePierwszym krokiem jest ustalenie czasu rozpoczęcia problemu i zebranie informacji o tym, co zmieniło się tuż przed jego wystąpieniem. Znaczenie może mieć wdrożenie nowej wersji aplikacji, import danych, zmiana ustawień, zwiększenie liczby użytkowników albo uruchomienie dodatkowego procesu. Przydatne jest zestawienie czasu odpowiedzi i liczby błędów z obciążeniem poszczególnych zasobów. Sam pojedynczy pomiar bywa mylący, ponieważ przeciążenie ma charakter dynamiczny. Warto obserwować obciążenie w przedziałach czasu, a nie wyłącznie w chwili, gdy użytkownicy zgłaszają problem. Należy sprawdzić, czy występują powtarzalne piki, stały wzrost wykorzystania zasobów, nagłe skoki liczby procesów albo stopniowe zwiększanie zajętości pamięci. Pomocne są także informacje o długości kolejek, czasie oczekiwania na operacje dyskowe, liczbie aktywnych połączeń oraz najczęściej wywoływanych funkcjach. Działania naprawcze powinny wynikać z przyczyny. Przy nieefektywnym programie potrzebna jest optymalizacja kodu lub zapytań. Przy powtarzalnych zadaniach pomocne może być ich rozłożenie w czasie. Przy przewidywalnym wzroście ruchu można zaplanować dodatkową wydajność, ograniczyć ciężkie operacje i poprawić wykorzystanie pamięci podręcznej. Jeśli problem powoduje ruch automatyczny, konieczne jest rozpoznanie wzorca oraz zastosowanie odpowiednich reguł ochronnych. Zwiększenie zasobów bez usunięcia błędnego procesu może jedynie odsunąć problem. Nie powinno się pochopnie wyłączać zabezpieczeń ani usuwać zapisów diagnostycznych. Takie działania mogą utrudnić ustalenie przyczyny i zatrzeć informacje o przebiegu zdarzenia. W pierwszej kolejności warto zabezpieczyć dane o czasie wystąpienia problemu, komunikatach błędów i zmianach konfiguracji. Jeżeli działanie usługi ma znaczenie dla pracy, każdą zmianę należy wykonywać etapami, z możliwością powrotu do wcześniejszych ustawień. Przeciążenie serwera — kiedy zgłosić się do serwisuDo serwisu warto zgłosić się wtedy, gdy spowolnienia powtarzają się, urządzenie samoczynnie się restartuje, pojawiają się błędy odczytu danych, system długo reaguje na podstawowe polecenia albo problem występuje mimo niewielkiej liczby wykonywanych zadań. Szczególnej uwagi wymagają nietypowe dźwięki nośnika, przegrzewanie, nagłe zaniki dostępu do plików oraz sytuacje, w których po ponownym uruchomieniu poprawa jest tylko chwilowa. Objawy mogą wskazywać na przeciążenie, ale również na kłopot z chłodzeniem, pamięcią, dyskiem, zasilaniem lub konfiguracją. Przed przekazaniem sprzętu przydatne jest zapisanie komunikatów pojawiających się na ekranie, przybliżonego czasu wystąpienia problemu oraz informacji, jakie programy były wtedy używane. Nie należy wielokrotnie przerywać pracy urządzenia, jeśli wykonywany jest zapis danych, ani podejmować przypadkowych zmian w ustawieniach. W przypadku ważnych plików należy w pierwszej kolejności zadbać o ich kopię, o ile sprzęt nadal pozwala na bezpieczny odczyt. Warszawskie Pogotowie Komputerowe 24/7 zajmuje się oceną problemów z laptopami i komputerami PC, gdy objawy wskazują na spadek wydajności, niestabilność działania albo kłopoty z podstawowymi podzespołami. Podczas zgłoszenia można przekazać opis zachowania urządzenia, informacje o ostatnich zmianach oraz komunikaty diagnostyczne. Takie dane ułatwiają rozróżnienie przeciążenia od usterki sprzętowej i pomagają dobrać dalsze postępowanie do rzeczywistej przyczyny. |