Žudom užciklinusius php-cgi procesus
by neworld on Bal.04, 2008, under Administravimas, php, Serveris
Buvau susidūręs su problema. Keletą dienų karts nuo karto užsiciklindavo visi 5 php-chi threadai. Nepadėdavo nė kas valandinis php perkrovimas. Problemą išsprendžiau kas minutę paleisdamas tokį skriptuką:
for process in `ps -C php-cgi | grep '.*00:[0-9][1-9]:.*' | awk '{print $1}'`
do
kill -QUIT $process
done
/usr/bin/spawn-fcgi -f /usr/bin/php-cgi -C 5 -p 10001 -u web -g web
Dar php perkraunu kas parą 6 valandą ryto, kai būna mažiausias srautas. Problemos dingo.
Gegužė 22nd, 2008 on 20:39:57
Kam tas ciklas..
ar neužtektų: kill -QUIT `pidof php-cgi`
Paprastumas, paprastumas ir dar karta paprastumas, Ponai
Gegužė 22nd, 2008 on 20:59:50
Ir dar, yra gražesnė komanda “killall”. Tada būtų taip: killall -QUIT php-cgi
Gegužė 22nd, 2008 on 21:15:42
Tamsta musėt neįsiskaitėte. Neturiu jokio tikslo žudyti visus php procesus. Mano tikslas žudyti tuos, kurie procesorių užkrovė ilgiau kaip 1 minutę, kadangi php skriptams timeout’as yra 15 sekundžių. php procesai įsijungia automatiškai patys. Kol kas skriptas veikia gerai, ir jau geras mėnuo kai neturėjau jokių sutrikimų.
Be to ačiū, žinosiu, kaip patobulinti kitą skriptą, kuris ir skirtas restartuoti php. Tenai irgi naudoju ciklą.
Gegužė 23rd, 2008 on 10:35:08
nu tai vistiek galima be ciklo: kill -QUIT `ps -C php-cgi | grep ‘.*00:[0-9][1-9]:.*’ | awk ‘{print $1}’ | paste -s`
Gegužė 23rd, 2008 on 11:34:40
Bet kai php veikia kaip FCGI, tai vienu metu sukasi keli php procesai, taigi ir vienu metu gali būti užsiciklinę daugiau negu 1, nebent yra naudojamas tik vienas php procesas. Mano atveju sukasi 6 php-cgi procesai, plius crontab’ai išsikviečiau sau atskirus po vieną.
Gegužė 23rd, 2008 on 22:12:53
taigi viskas, ok.
su kill galima killint daugiau negu viena pid
Gegužė 25th, 2008 on 10:24:12
Galima, bet man reikia kilinti tik reikiamus, o ne visus ir ne vieną. Taigi arba tas paste -s (nes nežinau ką jisai daro) padaro tai ko reikia, arba kilina tik vieną užsiciklinusi procesą.