| Termin | Definicja |
|---|---|
| Problemy z wydajnością | Problemy z wydajnością wymagają analizy zapytań, indeksów i zasobów sprzętowych instancji. Problemy z wydajnością – czym jest spadek sprawności systemuProblemy z wydajnością oznaczają sytuację, w której aplikacja, baza danych, komputer lub cała usługa wykonuje zadania wyraźnie wolniej niż wcześniej albo nie osiąga oczekiwanej płynności działania. Objaw może pojawić się podczas uruchamiania programu, zapisywania danych, wykonywania zapytań, generowania raportu, kopiowania plików lub korzystania z wielu funkcji jednocześnie. Niekiedy opóźnienie występuje stale, a czasem tylko w określonych porach dnia, przy większej liczbie użytkowników albo po aktualizacji oprogramowania. Sam czas oczekiwania nie wskazuje jeszcze przyczyny. Powolne działanie może wynikać z niewłaściwego zapytania, braku odpowiedniego indeksu, nadmiernego zużycia pamięci, przeciążenia procesora, wolnego nośnika danych, błędnej konfiguracji aplikacji lub problemów z komunikacją między elementami środowiska. Dlatego ocena wymaga zestawienia objawów z pomiarami. Znaczenie ma nie tylko średni czas odpowiedzi, lecz także opóźnienia skrajne, liczba równoczesnych operacji, częstotliwość błędów i sposób zmiany obciążenia w czasie. W praktyce przydatne jest rozdzielenie problemu na kilka warstw. Najpierw analizuje się zachowanie użytkownika i aplikacji, następnie sposób przetwarzania danych, a później dostępne zasoby sprzętowe oraz komunikację. Takie podejście ogranicza ryzyko poprawiania elementu, który nie jest rzeczywistym źródłem spowolnienia. Problemy z wydajnością – kontekst techniczny i porównanie przyczynW systemach wykorzystujących bazy danych duże znaczenie ma sposób formułowania zapytań. Operacja zwracająca wiele niepotrzebnych kolumn lub rekordów może powodować długie odczyty, sortowanie i przesyłanie danych. Podobny skutek występuje wtedy, gdy filtr nie korzysta z właściwego indeksu albo gdy warunki łączenia tabel prowadzą do przetwarzania znacznie większego zbioru niż zakładano. Czasem zapytanie działa szybko dla niewielkiej ilości danych, lecz traci sprawność po rozroście tabel. W takim przypadku wcześniejsza obserwacja mogła nie ujawnić problemu. Indeks przyspiesza wyszukiwanie tylko wtedy, gdy odpowiada sposobowi korzystania z danych. Zbyt mała liczba indeksów utrudnia odczyt, natomiast ich nadmiar zwiększa koszt dodawania, modyfikowania i usuwania rekordów. Wymagane jest więc porównanie planu wykonania z rzeczywistym obciążeniem. Zwraca się uwagę na pełne skanowanie tabel, koszt sortowania, operacje łączenia, blokady oraz wielkość odczytywanych danych. Inny charakter mają ograniczenia zasobów sprzętowych. Procesor może być obciążony przez obliczenia, kompresję, szyfrowanie lub wiele równoczesnych zadań. Pamięć operacyjna może nie wystarczać do przechowywania często używanych danych, przez co system częściej korzysta z wolniejszego nośnika. Z kolei ograniczenie przepustowości dysku ujawnia się szczególnie podczas intensywnego zapisu, odczytu dużych plików lub pracy wielu procesów. Wąskim gardłem może być także sieć, nawet gdy lokalne zasoby nie są wyczerpane. Warto odróżnić stałe ograniczenie od chwilowego przeciążenia. Jeżeli odpowiedź jest zawsze wolna, prawdopodobna jest wada konfiguracji, nieefektywna operacja albo niewystarczająca wydajność pojedynczego elementu. Jeżeli spowolnienie pojawia się tylko przy określonym obciążeniu, znaczenia nabiera współbieżność, kolejność zadań, harmonogram procesów oraz sposób gospodarowania zasobami. Problemy z wydajnością – typowe objawy i źródła trudnościDo często spotykanych objawów należy wydłużone otwieranie aplikacji, opóźnienie po zatwierdzeniu formularza, nierówna praca interfejsu, zawieszanie się procesu podczas raportowania oraz duże różnice między pierwszym a kolejnym wykonaniem tej samej operacji. Niepokój powinny wzbudzić również nagłe wzrosty zużycia pamięci, stale zajęty procesor, intensywna aktywność nośnika danych i powtarzające się oczekiwanie na zwolnienie blokady. Przyczyną może być zmiana danych, na przykład znaczny przyrost liczby rekordów, pojawienie się wielu wartości powtarzalnych albo nierównomierny rozkład informacji. Istotna bywa też zmiana kodu: nowa wersja aplikacji może wykonywać więcej zapytań, pobierać szerszy zakres danych lub przetwarzać je poza miejscem, w którym znajduje się ich źródło. Podobny efekt może wywołać aktualizacja systemu, sterownika, biblioteki albo narzędzia zabezpieczającego. Trudności diagnostyczne pojawiają się wtedy, gdy mierzone jest wyłącznie urządzenie użytkownika. Jeśli nie rejestruje się czasu poszczególnych etapów, nie wiadomo, czy opóźnienie występuje podczas wysyłania żądania, oczekiwania na odpowiedź, przetwarzania danych czy prezentacji wyniku. Pomocne jest logowanie z oznaczeniem czasu, identyfikowanie najdłuższych operacji oraz porównywanie wyników z okresem, w którym działanie było prawidłowe. Nie należy utożsamiać wysokiego użycia zasobu z jego wadą. Krótkotrwałe wykorzystanie procesora może być prawidłowe, jeśli zadanie kończy się szybko. Z kolei niskie użycie procesora nie wyklucza problemu, gdy proces czeka na dysk, sieć, blokadę lub odpowiedź innego komponentu. Ocena powinna uwzględniać czas oczekiwania, kolejki oraz zależności między operacjami. Problemy z wydajnością – praktyczne wskazówki diagnostyczneNa początku warto opisać problem w sposób możliwie dokładny: kiedy się pojawia, jak długo trwa, które operacje są dotknięte i czy występuje u wszystkich użytkowników. Należy zapisać moment rozpoczęcia spowolnienia, ostatnie zmiany w konfiguracji oraz przybliżony poziom obciążenia. Sama informacja, że system działa wolno, jest zbyt ogólna, aby odróżnić błąd zapytania od przeciążenia zasobów. Przydatne jest ustalenie wartości odniesienia. Mierzy się czas odpowiedzi dla typowych operacji, liczbę wykonywanych żądań, zużycie pamięci, obciążenie procesora, aktywność nośnika oraz opóźnienia komunikacji. Pomiary powinny być wykonywane w porównywalnych warunkach. Wynik pojedynczego testu może być przypadkowy, dlatego lepiej analizować serię pomiarów i obserwować wartości typowe oraz skrajne. W przypadku zapytań warto sprawdzić plan wykonania, zakres zwracanych danych i użycie indeksów. Czasem poprawę przynosi ograniczenie liczby pobieranych kolumn, wcześniejsze zawężenie zbioru lub zmiana kolejności operacji. Innym razem potrzebne jest uporządkowanie struktury danych, aktualizacja statystyk albo zmiana sposobu przechowywania informacji. Każda modyfikacja powinna być testowana na kopii lub w kontrolowanych warunkach, ponieważ rozwiązanie korzystne dla jednego przypadku może pogorszyć inne operacje. Nie zaleca się jednoczesnej zmiany wielu elementów. Gdy w tym samym czasie modyfikuje się zapytania, indeksy, ustawienia pamięci i konfigurację systemu, późniejsze ustalenie przyczyny poprawy lub pogorszenia staje się trudne. Bezpieczniejsze jest wprowadzanie zmian etapami, zapisywanie wyników oraz zachowanie możliwości powrotu do poprzedniej konfiguracji. Problemy z wydajnością – kiedy zgłosić się do serwisuDo serwisu warto zgłosić się wtedy, gdy spowolnienie utrzymuje się mimo ponownego uruchomienia programu, pojawia się coraz częściej, towarzyszą mu zawieszenia albo dotyczy wielu niezależnych aplikacji. Szczególnej uwagi wymagają sytuacje, w których występują błędy zapisu, nieoczekiwane restarty, nietypowe dźwięki nośnika danych, przegrzewanie, utrata dostępu do plików lub wyraźne pogorszenie działania po zmianie podzespołu czy systemu. Przed przekazaniem urządzenia dobrze przygotować opis objawów, przykłady najwolniejszych operacji oraz informację o tym, czy problem występuje od razu po uruchomieniu, czy dopiero po dłuższej pracy. Przydatne mogą być także komunikaty błędów i daty wystąpienia nieprawidłowości. Nie powinno się jednak wykonywać przypadkowych zmian w ustawieniach ani usuwać logów, jeżeli mogą pomóc w ustaleniu źródła problemu. W Warszawie analizę takich usterek można powierzyć firmie Warszawskie Pogotowie Komputerowe 24/7; naprawy są z reguły realizowane do 3 dni roboczych. Zakres czynności może obejmować sprawdzenie podzespołów, nośnika danych, temperatur, pamięci, systemu, sterowników oraz aplikacji, a następnie wskazanie elementu odpowiedzialnego za spowolnienie. Po rozpoznaniu przyczyny łatwiej ocenić, czy potrzebna jest korekta konfiguracji, uporządkowanie danych, wymiana zużytego komponentu czy dalsza obserwacja działania. |