Problem mit Apache + suphp und der Serverauslastung

Unregistered

Registered User
Hallo zusammen,

folgendes Problem beschäftigt mich jetzt schon länger und ich finde keine akzeptable Lösung:

Erstmal die Daten:
Hardware:
Strato Rootserver High End SR mit dem Celeron 2400 512 MB etc ..

OS:
Suse 9.0 Image mit Visas 2.3 Prof. ( alle Updates drauf )

Apache Webserver:
Server Version: Apache/2.0.48 (Linux/SuSE)
Timeouts: connection: 300 keep-alive: 300
MPM Name: Prefork
MPM Information: Max Daemons: 150 Threaded: no Forked: yes

server-tuning.conf
Code:
<IfModule prefork.c>
	# number of server processes to start
	StartServers         2
	# minimum number of server processes which are kept spare
	MinSpareServers      2
	# maximum number of server processes which are kept spare
	MaxSpareServers     6
	# maximum number of server processes allowed to start
	MaxClients         150
	# maximum number of requests a server process serves
	MaxRequestsPerChild  0
</IfModule>

SuPHP:
Version 0.5.2

Symptome:

Ich kann den Server durch ein schnellen Reload mit Strg+R eines total simplen PHP-Scripts fast zum Stillstand bringen.

z.B.
Code:
<?php
echo "Hallo wie gehts !";
?>
Dementsprechend gehts mit einer "normalen" Homepage, die auf dem Server gehostet wird ebenfalls.
Beobachtet man die Systemauslastung über top, so kann man sehen wie rapide die Systemauslastung ansteigt, bis letztendlich die ganze Maschine steht.
Das Problem liegt meiner Ansicht nach bei SuPHP, das bei jedem Reload einen neuen Prozess aufmacht. Somit läuft der Speicher voll, die Maschine fängt an zu swappen und kommt nahzu zum stehen.
Ich habe schon versucht die Einstellungen in der server-tuning.conf herunterzusetzen, leider bringt das auch keinen Erfolg. Ebenso habe ich versucht unnötige Module zu entladen um Ressourcen zu schonen, auch negativ. Ich muß die Prozesse für suphp für den jeweiligen Webnutzer irgendwie begrenzen, aber wie geht das ?

Schalte ich suphp komplett für den jeweiligen virituellen Host ab, gehts ohne Probleme.

EDIT:

Hier mal ein Auszug von ps aux :
Code:
wwwrun   21404  0.1  2.2 27700 11672 ?       S    15:50   0:00 /usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf
wwwrun   21408  0.0  2.2 27568 11644 ?       S    15:50   0:00 /usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf
wwwrun   21409  0.1  2.2 27568 11644 ?       S    15:50   0:00 /usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf
r080804  21413 12.8  2.2 58568 11332 ?       S    15:50   0:00 /usr/bin/php
r080804  21414 15.2  2.1 58260 11004 ?       R    15:50   0:00 /usr/bin/php
r080804  21415 13.7  2.1 58280 10972 ?       R    15:50   0:00 /usr/bin/php
r080804  21416 12.5  1.9 57676 10180 ?       R    15:50   0:00 /usr/bin/php
r080804  21417 12.0  2.0 57796 10388 ?       R    15:50   0:00 /usr/bin/php
r080804  21418 12.2  1.9 57676 10188 ?       S    15:50   0:00 /usr/bin/php

Mittlerweile sehe ich für das Problem wirklich nur die einzige Lösung die Direktive "Maxclients" auf maximal 40 zu stellen um ein Speicherüberlauf bei einem schnellen Reload zu verhindern.
Wäre gut wenn jemand seine ps aux Werte mal posten könnte um einen Vergleichswert für /usr/bin/php zu haben, mit erscheint der Speicherbedarf zu hoch.
 
Last edited by a moderator:
Back
Top