• This forum has a zero tolerance policy regarding spam. If you register here to publish advertising, your user account will be deleted without further questions.

Apache2 Prozesse zu groß

ex24

New Member
Hallo Zusammen,

ich betreibe einen Webserver mit Apache 2.2.9.

Durch einen PR Update habe ich nun mehr Besucher was zur folge hatte das der Server zweimal "vollgelaufen" ist.

Der Grund ist das die Apacheprozesse zuviel Speicher benutzen.

Jeder Prozess hat 180MB Realen- bzw 350MB Virtuellen Speicher reserviert.

Beim suchen nach einer Lösung bin ich auf das Tool pmap gestoßen welches mir denke ich das genau Problem aufzeigt.

hier ein Ausschnitt der Ausgabe:

00007f4a7729d000 2048K ----- /usr/lib/apache2/modules/mod_authz_user.so
00007f4a7749d000 4K rw--- /usr/lib/apache2/modules/mod_authz_user.so
00007f4a7749e000 8K r-x-- /usr/lib/apache2/modules/mod_authz_host.so
00007f4a774a0000 2044K ----- /usr/lib/apache2/modules/mod_authz_host.so
00007f4a7769f000 4K rw--- /usr/lib/apache2/modules/mod_authz_host.so
00007f4a776a0000 8K r-x-- /usr/lib/apache2/modules/mod_authz_groupfile.so
00007f4a776a2000 2044K ----- /usr/lib/apache2/modules/mod_authz_groupfile.so
00007f4a778a1000 4K rw--- /usr/lib/apache2/modules/mod_authz_groupfile.so
00007f4a778a2000 4K r-x-- /usr/lib/apache2/modules/mod_authz_default.so
00007f4a778a3000 2044K ----- /usr/lib/apache2/modules/mod_authz_default.so
00007f4a77aa2000 4K rw--- /usr/lib/apache2/modules/mod_authz_default.so
00007f4a77aa3000 8K r-x-- /usr/lib/apache2/modules/mod_authn_file.so
00007f4a77aa5000 2044K ----- /usr/lib/apache2/modules/mod_authn_file.so
00007f4a77ca4000 4K rw--- /usr/lib/apache2/modules/mod_authn_file.so
00007f4a77ca5000 8K r-x-- /usr/lib/apache2/modules/mod_auth_basic.so
00007f4a77ca7000 2044K ----- /usr/lib/apache2/modules/mod_auth_basic.so
00007f4a77ea6000 4K rw--- /usr/lib/apache2/modules/mod_auth_basic.so

Wie man sehen kann wird jedes Modul jeweils 1x ohne Rechte geladen und mit knapp 2MB im Speicher abgelegt. Was den Prozess natürlich extrem im Speicher vergrößert...

Kennt jemand dieses Problem ???

Neuinstallation des Apachen hat keine Besserung gebracht.

Kurz zum System:

Cpu (AMD) mit zwei Kerne und 4GB Ram

Debian Lenny

Server version: Apache/2.2.9 (Debian)
Server built: Dec 11 2010 21:34:00
Server's Module Magic Number: 20051115:15
Server loaded: APR 1.2.12, APR-Util 1.2.12
Compiled using: APR 1.2.12, APR-Util 1.2.12
Architecture: 64-bit
Server MPM: Prefork
threaded: no
forked: yes (variable process count)

Dazu läuft auf dem Server Mysql 5 sowie ein memcache Server.

Mit freundlichem Gruß

Steven Stratford
 
Danke für die Schnelle Antwort...

Das komische ist das auf einem System mit 386er Platform und den selben Modulen im Apache nur 40MB pro Prozess benutzt werden...

Allerdings älterer Apacheversion... 2.2.1 oder sowas...
 
Hallo,

danke für die schnelle Antwort.

Was ich mich halt frage ist wie kann der Prozess mit den selben geladen Modulen soviel größer sein wie auf einem System mit i386 Platform ?

Ich hab auf einem anderen System die selben Module geladen und habe nur knapp 40MB pro Prozess statt knapp 180MB auf dem AMD64.

Beides sind Debian...
 
Hallo,

eventuell könnte es helfen, den Server durch Umstieg von Prefork auf Worker/Event + PHP-FCGI zu entlasten. Requests auf kleine statische Dateien würden dann nicht mehr den gesamten Prozess blockieren.

Gibt es sonst noch irgendwelche Einträge im error.log des Apachen?
Die Begrenzung der MaxClients in der Config könnte schnelle Abhilfe schaffen, dass der Server zumindest nicht mehr "swapped".

Freundliche Grüße
Alex
 
Was ich mich halt frage ist wie kann der Prozess mit den selben geladen Modulen soviel größer sein wie auf einem System mit i386 Platform ?
Weil es nicht nur auf die Plattform und die Einstellungen ankommt. Sondern auch darauf, was für Scripte laufen. Und auch wie PHP konfiguriert ist.
Z.B. auf dem Einen ist PHP als FastCGI und auf dem Anderen als Apache-Modul eingestellt. Schon wird der von PHP genutzte Speicher entweder in einem eigenen Prozess oder innerhalb von Apache angezeigt.
Und falls Beide als Apache-Modul laufen, dann hat PHP ebenfalls wieder Module die Speicher fressen. Z.B. kann ein PHP-Cache ziemlich viel Speicher fressen.
Und es kommt noch drauf an, was für PHP für Parameter hat. So kann ein memory_limit ganz schnell mal voll laufen und den Speicher nicht wieder frei geben.
...und vieles vieles mehr...

Zeig Doch mal Deine Prefork-Parameter. (Also alles rund um die MaxClients.)

huschi.
 
Back
Top