Prozess frisst RAM & CPU! Help!!

Post Reply
Message
Author
charogarcia

Prozess frisst RAM & CPU! Help!!

#1 Post by charogarcia »

Hallo,

ich habe ein großes Problem. Seit einiger Zeit läuft auf meinem Server ein Prozess welcher RAM saugt und auch den Prozessor extrem belastet.
Dadurch habe ich extrem lange Parse-Zeiten auf meinen InternetSeiten (Teilweise 15 bis 60 Sekunden oder noch länger).
Auf dem Server laufen 2 Bildgallerien, ein Onlineshop (OSCommerce) und eine Typo3-Webseite und verwende Simulate Static für typo3 und die gallerien. Zeitweise hatte ich PHP-ACCELERATOR laufen konnte dies aber schon als Grund ausschließen da das Problem immer auftritt auch ohne PHP-ACCELERATOR.

Der Prozess verschwindet irgendwann automatisch nachdem er von 5 bis 30 Minuten lief taucht aber recht schnell wieder neu auf manchmal aber auch ein paar Studen gar nicht. Teilweise sind es auch mehrere Prozesse gleichzeitig von einem bis 5 oder 6.
Das manuelle killen bewirkt auch nur das nach ein paar Minuten ein neuer Prozess da ist. Das auftauchen des Problems lässt sich nicht mehr wirklich mit irgend einer Änderung am Server / Scripten in zusammenhang bringen da ich nicht eindeutig einen Zeitpunkt sagen kann wann das Problem aufgetaucht ist und generell auf dem Server kontinuierlich an Scripten etc. gearbeitet wurde.
Die Error-Logs sagen auch nichts. Typo3 verwendet zwar Persistente-Connections aber typo3 wurde schon abgeschaltet und Problem war immernoch da!
Ich habe schon alles mögliche versucht konnte aber noch nicht die Ursache herausfinden. Vielleicht fällt einem von Euch ja was ein!?!

Hier mal alle wichtigen Daten:

##SYSTEMDATEN##

Code: Select all

Intel Celeron 2.0 GHz
256 MB RAM
VIA Chipsatz
SuSE Linux 8.1
Apache 1.3.26
PHP 4.2.2
MySQL 3.23.52
mod_sdl 2.8.10
OpenSSL 0.9.6
##HTTPD.CONF AUSZUG##

Code: Select all

Timeout 300
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 15
MinSpareServers 5
MaxSpareServers 10
StartServers 5
MaxClients 150
MaxRequestsPerChild 1000
##FREE##

Code: Select all

a15150996:~ # free
             total       used       free     shared    buffers     cached
Mem:        247976     207768      40208          0       1928      15996
-/+ buffers/cache:     189844      58132
Swap:       787176     421384     365792
##TOP##

Code: Select all

 11:02am  up 22:44,  1 user,  load average: 2.09, 1.97, 1.45
95 processes: 91 sleeping, 4 running, 0 zombie, 0 stopped
CPU states: 97.8% user,  2.1% system,  0.0% nice,  0.0% idle
Mem:   247976K av,  244220K used,    3756K free,       0K shrd,    1068K buff
Swap:  787176K av,  619312K used,  167864K free                    7708K cached

  PID USER     PRI  NI  SIZE  RSS SHARE STAT %CPU %MEM   TIME COMMAND
23880 wwwrun    20   0  384M 100M  3208 R    49.9 41.6   5:15 httpd
21578 wwwrun    16   0  346M  93M  3048 R    48.0 38.7   4:44 httpd
23433 wwwrun     9   0 16440  13M  3516 S     0.0  5.6   0:02 httpd
20697 wwwrun     9   0 15360 7216  3676 S     0.0  2.9   0:12 httpd
23863 wwwrun     9   0 15892 6768  3568 S     0.0  2.7   0:05 httpd
15489 wwwrun     9   0 15296 6472  6464 S     0.1  2.6   0:30 httpd
25473 wwwrun     9   0  7484 3940  3704 S     0.0  1.5   0:00 httpd
21260 mysql      9   0  8516 3900  2408 S     0.0  1.5   0:00 mysqld
21262 mysql      9   0  8516 3900  2408 S     0.0  1.5   0:00 mysqld
21263 mysql      9   0  8516 3900  2408 S     0.0  1.5   0:00 mysqld
16527 mysql      9   0  8516 3900  2408 S     0.0  1.5   0:01 mysqld
21387 mysql      9   0  8516 3900  2408 S     0.0  1.5   0:00 mysqld
22161 mysql      9   0  8516 3900  2408 S     0.0  1.5   0:00 mysqld
22165 mysql      9   0  8516 3900  2408 S     0.0  1.5   0:00 mysqld
24002 mysql      9   0  8516 3900  2408 S     0.0  1.5   0:00 mysqld
24239 mysql      9   0  8516 3900  2408 S     0.0  1.5   0:00 mysqld
24870 mysql      9   0  8516 3900  2408 S     0.0  1.5   0:00 mysqld
25706 mysql      9   0  8516 3900  2408 S     0.0  1.5   0:00 mysqld
24324 wwwrun     9   0 16148 3832  3768 S     0.0  1.5   0:02 httpd
21577 wwwrun     9   0 15144 3640  3572 S     0.0  1.4   0:05 httpd
24326 wwwrun     9   0  7336 3352  3344 S     0.0  1.3   0:00 httpd
25608 wwwrun     9   0  5224 3032  2760 S     0.0  1.2   0:00 httpd
25625 wwwrun     9   0  5008 2808  2696 S     0.0  1.1   0:00 httpd
  453 ntp        9   0  1912 1912  1696 S     0.0  0.7   0:10 ntpd
  362 root       9   0  4800 1196   884 S     0.0  0.4   0:04 miniserv.pl
  355 root       9   0  4424 1168   852 S     0.0  0.4   0:02 miniserv.pl
22017 root       9   0  1308  888   796 R     0.0  0.3   0:04 sshd
22040 root      12   0   836  784   608 R     0.7  0.3   0:38 top
  480 root       9   0  3612  672   656 S     0.0  0.2   0:04 httpd
  517 root       9   0   704  632   568 S     0.0  0.2   0:03 nscd
  519 root       9   0   704  632   568 S     0.0  0.2   0:01 nscd
  520 root       9   0   704  632   568 S     0.0  0.2   0:03 nscd
  521 root       9   0   704  632   568 S     0.0  0.2   0:01 nscd
  522 root       9   0   704  632   568 S     0.0  0.2   0:00 nscd
  523 root       9   0   704  632   568 S     0.0  0.2   0:00 nscd
  524 root       9   0   704  632   568 S     0.0  0.2   0:00 nscd
22025 root       9   0  1012  580   576 S     0.0  0.2   0:00 bash
  501 root       8   0   616  564   520 S     0.0  0.2   0:00 cron
##PROZESS LISTE##

Code: Select all

Real memory: 247976 kB total / 19820 kB free   Swap space: 787176 kB total / 347736 kB free

Prozess-ID Besitzer Größe Befehl 
21578 wwwrun 636396 kB /usr/sbin/httpd -f /etc/httpd/httpd.conf -D SSL 
23433 wwwrun 93644 kB /usr/sbin/httpd -f /etc/httpd/httpd.conf -D SSL 
23863 wwwrun 93096 kB /usr/sbin/httpd -f /etc/httpd/httpd.conf -D SSL 
24324 wwwrun 93076 kB /usr/sbin/httpd -f /etc/httpd/httpd.conf -D SSL 
15489 wwwrun 92920 kB /usr/sbin/httpd -f /etc/httpd/httpd.conf -D SSL 
20697 wwwrun 92752 kB /usr/sbin/httpd -f /etc/httpd/httpd.conf -D SSL 
21577 wwwrun 92624 kB /usr/sbin/httpd -f /etc/httpd/httpd.conf -D SSL 
24326 wwwrun 84468 kB /usr/sbin/httpd -f /etc/httpd/httpd.conf -D SSL 
25473 wwwrun 84260 kB /usr/sbin/httpd -f /etc/httpd/httpd.conf -D SSL 
##PS AUX##

Code: Select all

USER       PID %CPU %MEM   VSZ  RSS TTY      STAT START   TIME COMMAND
wwwrun   20697  0.1  0.9 92752 2436 ?        S    09:06   0:12 /usr/sbin/httpd -
mysql    21387  0.0  1.0 31984 2488 ?        S    09:22   0:00 /usr/sbin/mysqld
wwwrun   21577  0.1  2.7 92624 6828 ?        S    09:29   0:06 /usr/sbin/httpd -
wwwrun   21578  8.6 80.0 663616 198548 ?     R    09:29   8:33 /usr/sbin/httpd -

Der strace-Befehl sieht auch immer etwas unterscheidlich aus läuft aber kontinuierlich weiter ohne zu stoppen und wiederholt den "Klartext" alle paar Seiten. Die Zahlenkolonnen (0x25730000) werden kontinuierlich größer.
Mal findet er gewisse Subdomain-Ordner nicht mal ist es beim Onlineshop (siehe Unten)!
Das erstellen der Ordner dort wo der Prozess sie sucht bewirkt auch nichts da die Fehlermeldung trotzdem erscheint.

##STRACE -P##

Code: Select all

brk(0x25736000)                         = 0x25736000
brk(0x25739000)                         = 0x25739000
brk(0x2573c000)                         = 0x2573c000
stat64("/home/tendance/htdocs/Subdomains/abyss/home/tendance/htdocs/index.php", 0x25434db0) = -1 ENOENT (No such file or directory)
stat64("/home/tendance/htdocs/Subdomains/abyss/home/tendance/htdocs", 0x25434db0) = -1 ENOENT (No such file or directory)
stat64("/home/tendance/htdocs/Subdomains/abyss/home/tendance", 0x25434db0) = -1 ENOENT (No such file or directory)
stat64("/home/tendance/htdocs/Subdomains/abyss/home", 0x25434db0) = -1 ENOENT (No such file or directory)
stat64("/home/tendance/htdocs/Subdomains/abyss", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat64("/home", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat64("/home/tendance", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat64("/home/tendance/htdocs", {st_mode=S_IFDIR|0755, st_size=98304, ...}) = 0
brk(0x2573f000)                         = 0x2573f000
open("/home/tendance/htdocs/Subdomains/abyss/", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) = 8
fstat64(8, {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
fcntl64(8, F_SETFD, FD_CLOEXEC)         = 0
getdents64(0x8, 0x8b73d28, 0x1000, 0x8b73d28) = 776
getdents64(0x8, 0x8b73d28, 0x1000, 0x8b73d28) = 0
close(8)                                = 0
stat64("/home/tendance/htdocs/Subdomains/abyss/home", 0xbffe9810) = -1 ENOENT (No such file or directory)
stat64("/home/tendance/htdocs/Subdomains/abyss/home", 0xbffe9810) = -1 ENOENT (No such file or directory)
lstat64("/home/tendance/htdocs/Subdomains/abyss/home", 0xbffe9810) = -1 ENOENT (No such file or directory)
brk(0x25744000)                         = 0x25744000
brk(0x25747000)                         = 0x25747000
brk(0x2574a000)                         = 0x2574a000


Ich habe schon versucht mittels eines Killscriptes alle httpd-Prozesse killen zu lassen die eine gewisses "Alter" (1 Minute z.B.) erreicht haben.
Manuell funktioniert dieses Script auch aber wenn es alle paar Minuten per conjob aufgerufen wird bringt es Apache zum Absturz!!

##CRONTAB EINTRAG##

Code: Select all

*/5 * * * * perl /home/tendance/htdocs/cgi-bin/kill.pl httpd 1


##KILL.PL##

Code: Select all

#!/usr/bin/perl 

    my $process=$ARGV[0]; 
    my $killtime=$ARGV[1]; 

if (! $ARGV[0]) {die "KEIN ARGUMENT"} 

    my $PSstring=`ps -eo user,pid,stime,time,cmd|grep -v $0`; 
    my @PSarray=split(/\n/,$PSstring); 

foreach(@PSarray) { 

($s1,$s2,$s3,$s4,$s5)=split(/\ +/,$_,5); 

 if ($s5=~/$process/){ 

        my $pid=$s2; 
        my $stime=$s3; 
         ($sh,$sm)=split(":",$stime); 
        my $start=$sh*60+$sm; 
        my $ktime=`date +"%H:%M"`; 
         ($kh,$km)=split(":",$ktime); 
        my $stop=$kh*60+$km; 

            if ($stime=~/[a-z]/i){  # gestartet tag vorher 
                $start=0; 
            } 
            my $dtime=$stop-$start; 
            if ($dtime>=$killtime){ # prozess zu alt 
                `kill -9 $pid`; 
            } 
 } 
}



Kann das ein Speicher Leck sein oder wie kommt diese "Schleife" (wenn es eine ist) zustande?
Falls irgend jemand eine Idee hat wie ich mehr über diesen Prozess rauskriege bzw. das Problem lösen könnte bitte posten.

vielen Dank im Voraus

Regards 8)

Post Reply