Apache2/PHP5: 10MB RAM pro Seitenaufruf
Marla
- webserver
Hi,
seit langem bin ich wiedermal auf einem lenny/sid Server eingeloggt und versuche gerade zu verstehen, warum nach einem kompletten Neustart und Reload von Apache pro Aufruf einer PHP-Seite circa 10MB Arbeitspeicher abhanden kommen.
Gleich nach dem Neustart rufe sehe ich mit free etwa 700MB RAM unused. Dann rufe ich über http://localhost/test.php ein einfaches Script (mit phpinfo();) auf und sehe wieder nach mit free: etwa 10MB weniger. Ein Refresh für die selbe Page ändert sogut wie nichts an der Arbeit-Speicherauslatung.
Nun rufe ich die Kopie des Scripts auf: http://...test2.php und wieder meldet free etwa 10MB weniger.
Genauso verhält es sich auch beim Aufruf eines Wordpressblogs unter http://localhost/blog/ und das Ganze geht solange gut, bis der Server bei 20MB freiem Speicher ankommt. Dann ist's spürbar langsam und ein apache-reload räumt wieder auf, sodass es weitergehen kann.
Kann mir jemand einen Tipp geben, welche Konfiguration im Apache oder in der php.ini hier falsch ist?
Ist mein garbage collector defekt oder deaktiviert?
Besten Dank!
Du hast offenbar die CGI-Version von PHP, so dass bei jedem Start der Interpreter neu geladen wird. FastCGI oder mod_php wären wahrscheinlich speicherschonender - aber PHP wird ohnehin nie Meister im Speichersparen werden, weshalb man im Produktivbetrieb im großen Maßstab meistens nach performanteren Lösungen sucht (und aufgrund der Beliebtheit der Sprache bei Managern meistens bei Java hängen bleibt).
Gruß, LX
Hallo LX
doofe Frage: Lässt sich fastcgi so einfach aktivieren bzw. umstellen und weshalb ist das nicht per Default aktiv beim Apache auf lenny/sid Servern?
Danke für deine Hilfe!
Du hast offenbar die CGI-Version von PHP, so dass bei jedem Start der Interpreter neu geladen wird. FastCGI oder mod_php wären wahrscheinlich speicherschonender -
Ist es nach der Beschreibung nicht eher umgekehrt?
Jeder Prozess erfordert viel Speicher, aber bei erneutem Aufrufen des gleichen Skriptes wird kein Speicher mehr benötigt.
Das klingt für mich nach mod_php. Wenn ich es richtig verstanden habe, bleibt dort ja jeder Prozess im Speicher.
Struppi.
Hm... dann bin ich jetzt ein bischen mehr verwirrt.
Lässt sich das so ohne Weiteres irgendwie umstellen damit ich testen könnte, was für den Server die beste Lösung ist?
Eine Möglichkeit, all diese "toten" Prozesse nach 5 Minuten o.ä. zu killen, gibt es nicht, oder?
Und ich nehm an, dass ein automatischer apache reload alle 30 min auch keine gute Idee ist, oder?
Lässt sich das so ohne Weiteres irgendwie umstellen damit ich testen könnte, was für den Server die beste Lösung ist?
Ich kenn mich sowas nicht aus, aber mod_php ist Standard und ein eingreifen sollte da nicht nötig sein. Es kann aber auch sein, dass ich mich Irre. Guck doch mal ob du Informationen dazu findest.
Struppi.