PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Memory-Problem bei PHP 4



05-03-2001, 12:44
Hallo,

wenn ich das richtig verstehe sagt mir folgende Fehlermeldung das PHP Speicherprobleme hat. Korrekt?
"Fatal error: Allowed memory size of 8388608 bytes exhausted at zend_hash.c:425 (tried to allocate 136 bytes) in Unknown on line 0"

Woran kann das liegen? PHP4 und Apache läuft auf SuSE 7.0 Standard-Konfiguration. Es greifen max. 3 User parallel auf das System zu. Kann es vielleicht sein, daß von einem Script Speicher reserviert wird aber nicht wieder freigegeben wird? Anders kann ich mir das nicht erklären.
Nachdem Apache neu gestartet wurde, läuft alles ohne Probleme.

Danke, Markus

05-03-2001, 15:08
php hat ein eigenes speicherlimit, das man in der httpd.conf mit der anweisung

php_value memory_limit <bytes>

setzen kann. (oder mit "php_admin_value" , ich weiß es nicht ausm kopf)
default sind 8mb

das schützt im endeffekt deinen server vor speichermangel, und wenn du die 8mb schon weit ausgenutzt hast, hast du wirklich ein heftig speicherfressendes script.


[Dieser Beitrag wurde von marsellus am 05. März 2001 editiert.]

06-03-2001, 07:50
Hi,

also rein an Variablen werden vom Script vielleicht 200 oder 300 Bytes benötigt ;-) Das würde bedeuten das einige 1000 User geleichzeitig drauf sind. Das halte ich aber für eher unwahrscheinlich weil dann eher die ISDN-Leitung zu währe ;-)

Markus

06-03-2001, 10:36
das speicherlimit gilt pro httpd-childprocess.

ich denke eher, daß da ein script amok gelaufen ist.

06-03-2001, 12:48
Hi,

also, es ist vom Prinzip her egal welches Script ich aufrufe. Nach einer gewissen Laufzeit von PHP kommt diese Meldung in Regelmäßigen Abständen und hört erst auf, wenn ich Apache nue starte.
Ich denke eher, daß es ein Problem von PHP ist. Ich weiß bloß leider nicht welches... ;-(

Markus

06-03-2001, 13:09
arghh .. memory leaks.
in der httpd.conf kann man "MaxRequestsPerChild" einstellen. wenns auf 30 steht, versuchs mit 5 (nur nicht 0!)
dann beendet sich jeder httpd-childprocess nach 5 anfragen selbsttätig.

apache hat angeblich keine leaks, und die glibc wahrscheinlich auch nicht. (in der unmodifizierten httpd.conf steht was niedliches dazu, über MaxRequestsPerChild), aber ausschließen kann man das nie.

welche php-version setzt du ein? ich würde mir den apache grundsätzlich lieber selbst bauen, mit dem neuesten php. ganz ungerne den - sorry.. mist von suse.

06-03-2001, 13:18
Hi,

danke, erst mal. PHP Version ist 4.0.0. Ich habe an der Konfiguration eingentlich nicht wesentliches geändert.
Meinst Du, den neuesten Apache und PHP runterladen und installieren?
Muß ich da die alten Versioen löschen?

Markus

Nachtrag: habe gerade mal nachgesehen: MaxRequestsPerChild war bei mir auf 0 gesetzt. Ich habe den Wert mal auf 5 hochgesetzt.

[Dieser Beitrag wurde von proover am 06. März 2001 editiert.]

06-03-2001, 15:13
php ist mittlerweile bei 4.0.4pl1
suse hat auch schon updates dafür.
apache und mod_php4 solltest du unbedingt aktualisieren. überhaupt kann man am besten einmal pro monat auf www.suse.de (http://www.suse.de) nach patches/updates/bugfixes gucken.