niedziela, 27 grudnia 2009

Monitorowanie wskaźników systemowych

Często niełatwa jest weryfikacja dlaczego serwer niewyrabia się na zakretach. Odnalezienie wąskiego gardła jest często zajęciem zmudnym i niewdzięcznym. Dlaczego tak się dzieje? W wikszosci przypadków problemem jest brak koncepcji: od czego zacząć?

Oczywiście zacząć powinniśmy od monitorowania licznikow systemowych. Włączamy program (Performance Monitor) i od razu zadajemy sobie pytanie: no dobrze, ale co sprawdzać i jak interpretować wyniki? Przecież wszystkich wskaźników jest kilkaset (ich ilość zależy od zainstalowanych aplikacji serwerowych)!

Czas wiec przyjrzeć się najważniejszym wskaźnikom, które pomogą nam w diagnozie serwera. Rozpatrzmy cztery kategorie, które powinny być rozpatrywane łącznie (analiza pojedynczych wartości tych liczników nie daje pełnego i właściwego obrazu sytuacji): CPU, pamięć, dysk i karta sieciowa.

Skupmy się najpierw na CPU: % Processor Time, % User Time, % Priviliged Time. To są podstawowe wskaźniki, które wypada pojrzeć. Co one mówią? Pierwszy z nich nie wymaga chyba już komentarza. Pozostale dwa są suma logiczną tego pierwszego:

%Processor Time = %User Time + %Privilaged Time

%User Time wskazuje ile czasu procesora zajmują procesy użytkownika. %Privileged Time natomiast wskazuje na czas procesora zabrany przez procesy systemowe. Monitorowanie tych wskaźników daje nam więc wstępnie informacje dotyczące źródła problemu: programy czy system?

Pamięć: Available Kbytes i Pages/sec. Pierwsza wartość jest oczywista - mówi o ilości dostępnej pamięci. Istnieje wprawdzie także wskaźnik pokazujacy ilość dostępnej pamięci w MB - ale dużo dokladniejsza jest wartość w KB.
Drugi wskaźnik daje doskonałe podstawy do zrozumienia jak mocno może być wykorzystywana pamięć wirtualna a tym samym jak operacje stronicowania pamięci mogą dociążać dysk. Dla większości systemów operacyjnych wielkość strony pamięci ma 4KB. Mając więc wskazanie licznika możemy policzyć wartość przerzucanych ilości KB w sekundzie. Jaka wartość jest ok a jaka nie? Niestety nie prostej odpowiedzi na to pytanie. Aby móc to zweryfikować trzeba mieć wcześniej przeprowadzone testy, które dadzą jakąś bazę (można ewentualnie potestowac na innych podobnych serwerach).

Dysk twardy:Avarege Disk Queue Length, Disk bytes/sec, Disk Free MB. Ostatni ze wskaźników jest oczywisty i nie wymaga komentarza. Drugi z nich jest istotną wartością, choć można ją ocenić tylko mając stosowną bazę (zależy od dysków, kontrolerów, serwera a nawet systemu operacyjnego) - podobnie jak to było przy jednym ze wskaźników dotyczących pamięci.
Długość kolejki dysku jest jednak chyba najważniejszym wskaźnikiem. Gdy średnia kolejki jest dłuższa niż 2-3 to wąskim gardłem będzie na pewno dysk (nie sam w sobie, bo rzeczywistą przyczynę trzeba dokładnie zbadać).

Karta sieciowa: Bytes Total/sec, Output Queue Length. Kolejka podobnie jak w przypadku dysków nie może mieć średniej większej niż 2-3. Oczywiście wystąpienie takiej sytuacji nie zawsze oznacza wymiany karty na sprawną lub lepszą - przecież przyczyną może być aktywność wirusa.
Pierwszy wskaźnik można porównać tylko z bazą. Przynajmniej tylko wtedy będziemy mogli precyzyjnie określić poziom wskaźnika.

Z grubsza to wszystkie wskaźniki, które na dobry początek pozwalają rozeznać nam się gdzie tkwi źródło problemu. Pamiętajmy aby monitorować serwer wszystkimi jednocześnie i jeśli jest taka konieczność to także rejestrować aktywność serwera w godzinach pracy. Pamiętajmy jednak, że takie monitorowanie także wprowadza jakieś obciążenie serwera, wiec przed testami należy ostrzec użytkowników o ewentualnych problemach wydajnosciowych po stronie serwera i aplikacji serwerowych.

Z tego wszystkiego wynika jeszcze jeden wniosek: warto od czasu do czasu monitorować serwery administrowane aby stworzyć tzw. bazę części wskaźników, aby można było. W przyszłości czymś się podeprzeć.

Brak komentarzy:

Publikowanie komentarza