Informatyk, podróżnik, fotograf

Informatyczne podejście do życia w obrazkach, kolorach i dźwiękach

Kamil Porembiński

Pewien serwer zaczął mulić

Siedząc rano w pracy, zacząłem sobie testować wydajność różnych serwerów (maszyn). Pobrałem aplikację Apache JMeter, przygotowałem testy i po prostu uruchomiłem. Chciałem zobaczyć jak maszyny zachowają się przy dużej liczbie prostych requestów HTTP.

Apache JMeter

W czasie testów zalogowałem się po SSH na każdy serwer i oglądałem co się tam dzieje. Na jednej z maszyn zobaczyłem niestety taki oto wpis:

Cpu(s):  6.1% us,  1.0% sy,  0.0% ni,  0.0% id, 92.5% wa,  0.2% hi,  0.2% si

92.5% czasu procesor czeka na IO. (wa: Time spent waiting for IO.). Czyli tak lakonicznie mówić procesor czeka na odczyt/zapis danych z dysku ( IO - Input/Output). Zaniepokoiło mnie to bardzo. Pewnie dysk sobie pada. Przy takim dużym IO od razu skoczył load na serwerze.

08:04:17 up 154 days, 14:27,  1 user,  load average: 146.51, 125.66, 78.56

Te liczby są kosmiczne jak na maszynę o dwóch procesorach. Jest nieciekawie. Zatrzymałem test JMetera, gdyż serwer praktycznie już nie odpowiadał. Czas zacząć czytać logi. Zacząłem od pliku /var/log/messages. Tam znalazłem wpisy:

grep "smartd" /var/log/messages
Jun 15 04:14:54 user smartd[3265]: Device: /dev/sda, 1 Currently unreadable (pending) sectors
Jun 15 04:44:53 user smartd[3265]: Device: /dev/sda, 1 Currently unreadable (pending) sectors
Jun 15 05:14:53 user smartd[3265]: Device: /dev/sda, 1 Currently unreadable (pending) sectors
Jun 15 05:44:54 user smartd[3265]: Device: /dev/sda, 1 Currently unreadable (pending) sectors
Jun 15 06:14:53 user smartd[3265]: Device: /dev/sda, 1 Currently unreadable (pending) sectors
Jun 15 06:44:53 user smartd[3265]: Device: /dev/sda, 1 Currently unreadable (pending) sectors
Jun 15 07:14:54 user smartd[3265]: Device: /dev/sda, 1 Currently unreadable (pending) sectors
Jun 15 07:44:53 user smartd[3265]: Device: /dev/sda, 1 Currently unreadable (pending) sectors
Jun 15 08:14:53 user smartd[3265]: Device: /dev/sda, 1 Currently unreadable (pending) sectors
Jun 15 08:44:54 user smartd[3265]: Device: /dev/sda, 1 Currently unreadable (pending) sectors

Nie było ich tak dużo, więc nie jest źle. Kolejnym krokiem było oczywiście poczytanie informacji jakie zebrał S.M.A.R.T.. Wydałem polecenie /usr/sbin/smartctl /dev/sda -a, a następnie przyjrzałem się wynikom:

5 Reallocated_Sector_Ct   0x0033   253   253   010    Pre-fail  Always       -       0
197 Current_Pending_Sector  0x0012   100   100   000    Old_age   Always       -       1
198 Offline_Uncorrectable   0x0030   253   253   000    Old_age   Offline      -       0

Jak widać póki co nie ma żadnych wpisów w Reallocated_Sector_Ct co mnie ucieszyło. Każdy dysk ma pewną ilość sektorów fabrycznych zapasowych. W przypadku pojawienia się badsektorów, uszkodzony (nienaprawialny), taki sektor oznaczany jest jako BAD, a następnie zostaje zastąpiony wolnym sketorem z puli sektorów zapasowych. Jeśli skończy się pula wolnych sektorów zapasowych, wówczas pojawiają się błędy w smarcie. Wpisy w Reallocated_Sector_Ct świadczą o ilości przemapowanych sektorów. Natomiast Offline_Uncorrectable oznacza, że dany sektor jest uszkodzony i nie można go odczytać. Dane zapisane w nim sa zapewne utracone, ale wystarczy go zapisac i także zostanie zapewne przeniesiony w inne miejsce.

Kolejnym krokiem było przetestowanie wydajności dysków jakie są na serwerze - hdparm -tT /dev/sda. Ponieważ oba są takie same - spodziewałem się podobnych wyników...

/dev/sda:
 Timing cached reads:   1224 MB in  2.36 seconds = 518.94 MB/sec
 Timing buffered disk reads:  136 MB in  3.69 seconds =  36.81 MB/sec
root@thecamels [/home/thecamel]# /sbin/hdparm -tT /dev/sdb

/dev/sdb:
 Timing cached reads:   4364 MB in  2.00 seconds = 2180.15 MB/sec
 Timing buffered disk reads:  238 MB in  3.00 seconds =  79.24 MB/sec
root@thecamels [/home/thecamel]# /sbin/hdparm -tT /dev/sdb

Okej... Widać różnice. Na koniec zostało mi odpalenie smartctl -t long /dev/sda i poczekanie na wyniki o 10:28:31.

smartctl version 5.33 [x86_64-redhat-linux-gnu] Copyright (C) 2002-4 Bruce Allen
Home page is http://smartmontools.sourceforge.net/

=== START OF OFFLINE IMMEDIATE AND SELF-TEST SECTION ===
Sending command: "Execute SMART Extended self-test routine immediately in off-line mode".
Drive command "Execute SMART Extended self-test routine immediately in off-line mode" successful.
Testing has begun.
Please wait 125 minutes for test to complete.
Test will complete after Sun Jun 15 10:28:31 2008

Use smartctl -X to abort test.

Zobaczymy co pokażą testy ;-) Oby było wszystko okej ;-)

ikonka 15 czerwca 2008, 09:33:41

Komentarze

PawelS, 17 czerwca 2008, 20:53:02

I gdzie dalszy ciąg ? Nie będzie happy endu ? :(

paszczak000, 17 czerwca 2008, 21:00:00

Wiesz co… Zapomniałem sprawdzić :]

paszczak000, 17 czerwca 2008, 21:00:32

Ale jak lukałem na inne serwery jakie mają moi znajomi to jest o wiele gorzej, więc generalnie póki co to stwierdzam, że działa ;]

Podpis:
Treść:
Strona WWW (opcjonalnie):
Wpisz kod:code
Składnia Textile Lite jest włączona.

Powered by Jogger. Copyright © 2002-2003 Justin Mecham & JabberPL Group

Licencja: Creative Commons Uznanie autorstwa 3.0