|
[ SmilieBG @ 26.02.2006. 21:03 ] @
| Pozdrav,
Pitao sam vec i pre, ali nisam dobio odgovor, pa da probam jos jednom :)
Dakle, desava mi se par puta dnevno, da CPU wait ode na 90+% i da ceo server zaglavi, tj izmedju apache ne reaguje.
Ovo vidim u top:
Cpu(s): 1.0% us, 0.7% sy, 0.0% ni, 95.0% id, 2.6% wa, 0.0% hi, 0.7% si
Mem: 484292k total, 412396k used, 71896k free, 2096k buffers
Swap: 1413680k total, 132500k used, 1281180k free, 40176k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
12289 www-data 16 0 23116 10m 16m S 0.3 2.2 0:14.15 apache2
12298 www-data 16 0 23144 10m 16m S 0.3 2.2 0:22.39 apache2
12323 www-data 15 0 23040 10m 16m S 0.3 2.1 0:19.04 apache2
E, sad, nisam ga uhvatio u pravom trenutku, ali ponekad je 'wa' preko 90% i load skoci preko 25.00.
Kako da saznam, sta gusi server?
Napominjem, server se uvek sam 'povrati' ali... :(
Poz,
Sale |
[ chupcko @ 27.02.2006. 12:08 ] @
Uf, nije bas lako naci sta to tada radi.
Ali ajde ovako probaj da nadjes neki proces koji je u "D" stanju, garant je zbog njega, vidi sta kaze dmesg, a i stavi vmstat 1 u nekom prozoru da gledas.
Ali da ti kazem ja ovako ljudski, uradi backup, startuj smart i prebaci sve na drugu masinu.
90% verovatnoce da je otisao disk ili kontroler ili pak se nesto .... Sve mi to lici na to :).
[ SmilieBG @ 27.02.2006. 12:44 ] @
Hmz, reinstalacija nije moguca, u pitanju je dedicated server :)
Ukoliko pak mogu da dokazem da je hardware u pitanju, mogu da trazim da zamene deo koji ne valja, ali dakako moram imati dobru osnovu za to.
E, sad, sta znaci 'proces u 'D' stanju'? Da to gledam u top-u?
dmesg kaze svasta po nesto, ali koliko mi se cini ne prijavljuje nigde greske (hardwerske ili bilo koje druge).
posmatracu sa vstat 1 kada ponovo primetim da se zakuca.
Ajde ovako jedno pitanje, ono sto sumnjam da moze biti. Apache (PHP) uploaduje fajlove, izmedju 20 i 100 MB velike. PHP funkcionise tako da prvo fajl smesta u /tmp a odatle ga kopira na drugu (stalnu) lokaciju. Moze li biti, da recimo 4 korisnika istovremeno zavrse upload, da onda disk treba da prebaci 400 MB podataka i da CPU ceka zbog toga?! Ono, mozda bash trazim nesto sto nije, mozda sam i odvalio nesto, ali ne znam sta da radim vise :(
Poz,
Sale
[ chupcko @ 27.02.2006. 13:43 ] @
Da to moze da bude, ono wa je ustvari iowait (to jest procesor ceka da se zavrsi rad sa diskom). U tom slucaju ce vmstat 1 da ti da objasnjenje, pusti i posmatraj dosta dugo.
D u ps je : Uninterruptible sleep (usually IO) Obicno se javi na kratko kada je disk zagusen, ali i na duze ako j e disk otisao (bila jedna masina na kojoj se scsi kontorler otkaci tako sa vremena na vreme i posle 5 minuta dodje sebi (load skoci na 200-300), nekada se zagusi potpuno, samo reboot -f -n radilo :).
[ SmilieBG @ 27.02.2006. 16:02 ] @
Ok, sada znam gde da trazim uzrok i eventualno da optimalizujem proces PHP-a pisanja na disku...
Posto ne znam kada je tacno zagusenje, videcu da zapisujem output vmstat -1 negde, pa da ga pregledam 24 casa kasnije. Ako neko zna elegantije resenje, slusam :)
Poz,
Sale
PS. sta se moze jos uciniti povodom optimalnije upotrebe diska? Koji procesi su zahtevni po disk (od cesto koriscenih) i slicno? Posto imam 2 diska u serveru, mogu li videti koliko je jedan / oba zauzeti, pa da eventualno raspodelim svrljanje na 2 (posto verujem da se jedan sada ubija od rada, dok drugi zvrji prazan)...
[ SmilieBG @ 27.02.2006. 17:16 ] @
Daklem, definitivno je IO (hdd) krivac za kocenje celokupnog rada servera. Evo sta je vmstat pokazao:
r b swpd free buff cache si so bi bo in cs us sy id wa
1 2 144972 2820 12444 135788 0 0 3092 157 1671 2263 2 2 0 96
Dakle, kada je wait na 96%, bo (blocks received) je otisao na 3000+. Poredjenja radi, kada je server 'miran' slika je ovakva:
r b swpd free buff cache si so bi bo in cs us sy id wa
0 0 144972 33532 6276 116348 0 0 13 131 1197 885 0 1 99 0
Logicno, sledece pitanje je, sta mogu da ucinim povodom ovoga? Verovatno je kriv PHP koji uploadovan fajl prebacuje iz tmp direktorijuma u drugi direktorijum. Tu se radi o fajlovima od 20 do 100 MB velicine.
Ja cu da pogledam moze li PHP da optimalizuje ovaj proces, ali mi treba i generalni savet oko ovoga :)
Poz,
Sale
[ chupcko @ 27.02.2006. 21:42 ] @
Za pocetak vidi sta kaze hdparam -tT /dev/[sh]d[a-f] koji ti je vec disk.
Ako je rezultat normalan, kod mene je recimo:
Code:
[desktop] 0 /root # hdparm -tT /dev/hda
/dev/hda:
Timing cached reads: 4300 MB in 2.00 seconds = 2149.87 MB/sec
Timing buffered disk reads: 188 MB in 3.00 seconds = 62.58 MB/sec
Ako je to u redu, onda da vidimo filesystem, koji je za pocetak da krenemo i u tom pravcu.
Znaci detektovali smo spor rad diska, i izbacili smo da je u pitanju greska (dmesg je cist).
Preostaje da je disk neki stari pa samim tim spor, ili mozda filesystem zeza. Dakle koji je fs tu ? I sta to radi taj PHP, prost upload ili ...
Naravno ima jos jedna situacija kada disk poludi, ali to ne na svim kernelima i svim fs-ovima, ali simulacija je sledeca: pustim sa axelom da dovlacim nesto u 20 konekcija, recimo neki iso image. axel otvori 20 konekcija, i napravi veeeeeeeeeliki file (velicine tog iso-a), ali pazi sada: kada kucas sa ls *.iso dobijes velikuuuuuu velicinu :), a kada kucas du *.iso dobijes malooooooooo. To jest ako creiras file pa se telujes na 1Gb, on ce nekako da ga popuni nulama (ne fizicki nego ...). i kasnije kada radis popunjavanje, on ce dosta sporo da radi (ne znam sta radi, ali rezlutat je da dobijes na kraju file, koji je ok, ali se strasno sporo cita i kopira (kao da su "sektori" izpremestani). E da nije taj slucaj.
I naravno zadnji ali malo verovatan, mozda ti ukljucena neka online kompresija na file systemu.
E sada videh, ti ustvari radis mv iz /tmp-a negde drugde, a kako to nije isti fs, onda on kopira pa brise, zar nije najlakse da za pocetak /tmp izlinkujes odma na particiju gde zelis da iskopira krajni rezlutat :).
P.S. Ovo ce te kostati definitno rucka :).
[Ovu poruku je menjao chupcko dana 27.02.2006. u 22:45 GMT+1]
[ VRider @ 27.02.2006. 21:48 ] @
Umesto da /tmp bude na harddisku, mozes i da mountujes tmpfs (ovo naravno ako masina ima dovoljno RAMa). Nece biti problema koje sada imas, a sa druge strane, postedeces sebe posla oko povremenog ciscenja /tmp-a. 
[ SmilieBG @ 27.02.2006. 22:36 ] @
Evo ovako, ovo su rezultati hdparm:
Code:
23:29:08[root@mp3bre smilie]# hdparm -tT /dev/hda
/dev/hda:
Timing cached reads: 588 MB in 2.00 seconds = 293.31 MB/sec
Timing buffered disk reads: 154 MB in 3.01 seconds = 51.10 MB/sec
23:29:30[root@mp3bre smilie]# hdparm -tT /dev/hdb
/dev/hdb:
Timing cached reads: 412 MB in 2.02 seconds = 203.79 MB/sec
Timing buffered disk reads: 62 MB in 3.01 seconds = 20.59 MB/sec
23:30:09[root@mp3bre smilie]# hdparm -tT /dev/hdb
/dev/hda:
Timing cached reads: 652 MB in 2.06 seconds = 316.25 MB/sec
Timing buffered disk reads: 86 MB in 3.01 seconds = 28.59 MB/sec
/dev/hdb:
Timing cached reads: 652 MB in 2.05 seconds = 317.94 MB/sec
Timing buffered disk reads: 64 MB in 3.01 seconds = 21.23 MB/sec
23:30:26[root@mp3bre smilie]# hdparm -tT /dev/hda
2 x sam ih radio...
Sto se tice raspodele, pojma nemam kako je to uradjeno :S Drugi disk je naknadno stavljan... df -h daje sledece:
Code:
23:30:42[root@mp3bre smilie]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/hda1 73G 60G 9.2G 87% /
tmpfs 237M 0 237M 0% /dev/shm
/dev/hdb 74G 33G 38G 47% /var/mp3bre_muzika/N-Z
a mount:
Code:
23:32:19[root@mp3bre smilie]# mount
/dev/hda1 on / type ext3 (rw,acl,errors=remount-ro)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw)
/dev/hdb on /var/mp3bre_muzika/N-Z type ext3 (rw,noexec,nosuid,nodev,acl)
Uopste ne iskljucujem da je totalno i sve pogresno postavljeno, posto sam jos amater za ove stvari :)
tmpfs nisam koristio do sada... i mount-e ne razumem jos u potpunosti, ali citam dosta ovih dana o tome :)
Poz,
Sale
ps. kako da vidim jel ukljucena kompresija fs-a? I kako je, teoretski, idealno da drzim umesto /tmp ? thx ;)
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|