PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : php-Prozessen hängen sich auf bis der Speicher zu ist.



JoelH
11.04.2006, 10:16
Hi Leute,

wir haben mit unserer PerryPedia seit einer Neuinstallation einige Probleme mit einfrierenden php-Prozessen, die dann den Speicher komplett zumachen und letztlich zum Servercrash führen.

Wir arbeiten mit der Mediawiki-Software 1.5.8,
PHP 4.3.10-16 (cgi-fcgi), MySQL 4.0.24_Debian-10sarge1-log and
Apache 2.0.54 und Debian Sarge.

Wir haben es sowohl mit fastCGI als auch nomalem cgi versucht, beides mit den selben Ereignissen:


$ ps ux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
perrype 17856 0.0 0.6 33512 5792 ? S 07:45 0:00 /usr/bin/php4-cgi
perrype 17861 0.0 0.6 32968 5824 ? S 07:45 0:00 /usr/bin/php4-cgi
perrype 17863 0.0 0.6 33920 5796 ? S 07:45 0:00 /usr/bin/php4-cgi
perrype 17865 0.0 0.6 33180 5824 ? S 07:45 0:00 /usr/bin/php4-cgi
perrype 17893 0.0 0.6 32748 5792 ? S 07:47 0:00 /usr/bin/php4-cgi
perrype 17894 0.0 0.6 32752 5776 ? S 07:47 0:00 /usr/bin/php4-cgi
perrype 17897 0.0 0.6 33632 5832 ? S 07:47 0:00 /usr/bin/php4-cgi
perrype 17899 0.0 0.6 32744 5792 ? S 07:47 0:00 /usr/bin/php4-cgi
perrype 17901 0.0 0.6 33060 5824 ? S 07:47 0:00 /usr/bin/php4-cgi
perrype 17903 0.0 0.6 31272 5576 ? S 07:47 0:00 /usr/bin/php4-cgi
perrype 17911 0.0 0.6 33180 5820 ? S 07:47 0:00 /usr/bin/php4-cgi
perrype 17943 0.0 0.6 32876 5824 ? S 07:47 0:00 /usr/bin/php4-cgi
perrype 17945 0.0 0.6 31272 5576 ? S 07:47 0:00 /usr/bin/php4-cgi
perrype 17947 0.0 0.6 32992 5824 ? S 07:48 0:00 /usr/bin/php4-cgi
perrype 17953 0.0 0.6 33076 5824 ? S 07:48 0:00 /usr/bin/php4-cgi
perrype 17957 0.0 0.6 31272 5576 ? S 07:48 0:00 /usr/bin/php4-cgi
perrype 17958 0.0 0.6 31272 5576 ? S 07:48 0:00 /usr/bin/php4-cgi
perrype 17959 0.0 0.6 31272 5576 ? S 07:48 0:00 /usr/bin/php4-cgi
perrype 17960 0.0 0.6 31272 5576 ? S 07:48 0:00 /usr/bin/php4-cgi
perrype 17965 0.0 0.6 31272 5576 ? S 07:48 0:00 /usr/bin/php4-cgi
perrype 17983 0.0 0.6 31272 5576 ? S 07:48 0:00 /usr/bin/php4-cgi
perrype 18001 0.0 0.6 32740 5768 ? S 07:48 0:00 /usr/bin/php4-cgi
perrype 18288 0.0 0.6 31272 5576 ? S 07:56 0:00 /usr/bin/php4-cgi
perrype 18525 0.0 0.6 31272 5576 ? S 08:00 0:00 /usr/bin/php4-cgi
perrype 18538 0.0 0.6 31272 5576 ? S 08:00 0:00 /usr/bin/php4-cgi
perrype 21330 0.0 1.0 32788 9476 ? S 14:49 0:00 /usr/bin/php4-cgi
perrype 21332 0.0 1.0 32736 9720 ? S 14:49 0:00 /usr/bin/php4-cgi
perrype 21334 0.0 1.2 33416 11088 ? S 14:49 0:00 /usr/bin/php4-cgi
perrype 21338 0.0 0.6 31272 5576 ? S 14:49 0:00 /usr/bin/php4-cgi
perrype 21339 0.0 1.2 32916 11320 ? S 14:49 0:00 /usr/bin/php4-cgi
...

Um 07:45 hängten sich die ersten Prozesseauf und werden nicht mehr beendet, immerhin 8 Stunden bis 14:xx Uhr.

stracing ergibt folgende Ergebnisse:


$ strace -p 17856
Process 17856 attached - interrupt to quit
write(1, "\2\307>\330\3432\330\243^\262\270\21\354qy\315\242^\263"..., 30507 <unfinished ...>
Process 17856 detached



$ strace -p 17861
Process 17861 attached - interrupt to quit
write(1, "\246X]\204h\316\216?|8x\367\303\307\203\363\257\237m\377"..., 846 <unfinished ...>
Process 17861 detached


Irgendeiner eine Idee woran es liegen kann?

sven
11.04.2006, 12:18
Könntest du die Apache Logs aus der Zeit eventl. auch anhängen ?

Ist der Server im Internet oder nur lokal erreichbar ?

lordlamer
11.04.2006, 12:33
schonmal als apache modul laufen lassen?

frank

JoelH
11.04.2006, 14:25
schonmal als apache modul laufen lassen?

frank

Das geht aus Sicherheitsgründen nicht.


@sven
Mal guggen ob ich da rankomme. Der Server hängt im Internet www.perrypedia.proc.org .


ZUSATZ, habens gelöst:

Okay Leute, unser Admin hat das Problem gelöst.

Das Problem ist ein, scheinbar "fehlerhaftes" HowTo: http://www.debianhowto.de/doku.php/de:howtos:sarge:apache2_php-fcgi

diesem ist Alex einfach gefolgt, er schreibt


Ich bin diesem Howto gefolgt und dort stand, dass man die Variable PHP_FCGI_CHILDREN setzen soll. Falls man das macht, startet PHP von sich aus Kindprozesse für FastCGI. Es ist aber besser, die Prozessverwaltung komplett fcgi zu überlassen. Nachdem ich diese Zeile entfernt hatte, lief alles wunderbar.