Resursätande processer, autoterminering?

Avdelningen för programmering, nätverk samt alternativa OS.
Post Reply
User avatar
fisk
Posts: 7485
Joined: 2003-03-18 21:09:30
Location: Örebro / Sverige
Contact:

Resursätande processer, autoterminering?

Post by fisk »

Det är så att jag har en samling processer som ibland får för sig att få spatt, jag tror det kan vara minnesläckage eller något liknande, för efter ett tag äter de upp ~100MB (från att kräva 10 från början), sedan med tiden käkar de upp 100% CPU och gör hela systemet instabilt.

Detta inträffar sporadiskt dock, jag kan ha en uptime på 4 veckor utan att något händer, då plötsligt detta inträffar.

Nu undrar jag om man kan övervaka resursanvändningen hos vissa PID's, eller vissa processer och automatiskt starta om dem om de går över en viss gräns?
Aotearoa - tino rangatiratanga
User avatar
Ancalagon
Posts: 550
Joined: 2002-03-08 14:16:41
Location: Stockholm

Post by Ancalagon »

Följande script skulle nog kunna sköta jobbet .. - bara att lägga i cron och sedan rätta till variablerna .. ;D

OBS! om programmet använder mycker mer än man väntar sig så kommer scriptet inte att funka .. typ om programmets minnes användning börjat skrivas med nytt postfix ..

Code: Select all

#!/usr/bin/perl -w
                                                                                
$PNAME = "mplayer";
$MLIMIT = 10;
$POSTFIX = "K"; # K for kilobyte, M for megabyte and G for giga...
$RESTART = "mplayer abc.mp3";
                                                                                
open(PIDS,"-|","top | grep $PNAME") or die "w00t?";
                                                                                
while (<PIDS>) {
        @_ = split();
        if ($_[5] =~ /^([0-9]*)$POSTFIX$/) {
                if ($1 > $MLIMIT) {
                        print($_[0] . " uses over $MLIMIT ${POSTFIX}B !\n");
                        system("echo kill -9 $_[0]");
                        system("echo " . $RESTART);
                }
        }
}
User avatar
-Force
Posts: 154
Joined: 2002-03-10 22:13:44
Location: Kramfors
Contact:

Post by -Force »

ulimit lär fungerar bra för att terminera processer som tar för mycket resurser, men för att starta de igen... Möjligtvis att daemontools passar för det jobbet.
User avatar
IcePic
Hedersbit
Posts: 6061
Joined: 2002-03-08 16:09:38

Re: Resursätande processer, autoterminering?

Post by IcePic »

fisk wrote: Nu undrar jag om man kan övervaka resursanvändningen hos vissa PID's, eller vissa processer och automatiskt starta om dem om de går över en viss gräns?
På just den här frågan är svaret "ulimit" ja, givet att din process kan starta
om sig vid eventuella fel. Du kan ställa in hur många cpu-sekunder eller
hur mycket minne de får öda innan de dödas av systemet. Det är iofs inte
något fint sätt de dör på, men om valet är 100% cpu och det gör datorn
oanvändbar så kanske det är bättre ändå.
Oh give me a clone, my very own clone,
with the Y chromosome changed to X!
And since she's my own, of my own flesh and bone,
she'll be thinking of nothing but sex!
Post Reply