Apache braucht zuviel Sprit
Dieter Raber
- webserver
Hallo,
Ich habe auf meinem Rechner unter Windows XP XAMPP installiert in der Konfiguration
Apache 2.0.47, MySQL 4.0.14, PHP 4.3.3 rc2 + PEAR, Perl 5.8.0, mod_php 4.3.2, mod_perl 1.99_10, mod_ssl 2.0.47, openssl 0.9.7b, PHPMyAdmin 2.5.2 rc1, Webalizer 2.01-10, Mercury Mail Transport System for Win32 and NetWare Systems v3.32, JpGraph 1.12.1, FileZilla FTP Server 0.8.5
Laut Task Manager Apache brauchen die beiden Apache.exe je ca. 25-30.000K Memory Usage. Wir haben hier einen aehnlichen Rechner mit Apache 1.3xx, bei dem nur ca. je 3.000K Speicher benutzt werden.
Was soll ich davon halten? Hat jemand von Euch eine aehnliche Konfiguration zum Vergleich?
Dieter
Hi Dieter,
Laut Task Manager Apache brauchen die beiden Apache.exe je ca. 25-30.000K Memory Usage.
wie hast Du das MPM konfiguriert?
Wir haben hier einen aehnlichen Rechner mit Apache 1.3xx, bei dem nur ca. je 3.000K Speicher benutzt werden.
Dafür müßte ich sinngemäß dieselbe Frage stellen, auch wenn es damals noch anders hieß.
Was soll ich davon halten? Hat jemand von Euch eine aehnliche Konfiguration zum Vergleich?
Apache 1 und Apache 2 bezüglich Ressourcen zu vergleichen ist praktisch unmöglich.
Das sind einfach Äpfel und Birnen, weil gerade die Multiprozeß-Architektur sich völlig geändert hat, jetzt eigentlich viel intelligenter funktionieren müßte, gleichzeitig aber deutlich mehr Verständnis bei der Konfiguration erfordert.
Ach ja, und zudem hängt der Speicherbedarf auch noch davon ab, welche Module Du in beiden Fällen eingebunden hast. Mach mal "httpd -l" und entsorge allen überflüssigen Ballast.
Viele Grüße
Michael
Hi Michael,
leider weiss ich nicht so recht, was Du von mir wissen willst. Was das MPM (musste erst mal nachschauen, was das ist) anbetrifft steht in der httpd.conf
<IfModule mpm_winnt.c>
ThreadsPerChild 250
MaxRequestsPerChild 0
</IfModule>
Hilft Dir das weiter?
Mach mal "httpd -l" und entsorge allen überflüssigen Ballast.
Das geht soweit ich weiss nur unter Linux, oder sehe ich das falsch?
Ich hab aber zumindest alles aus der httpd.conf bugsiert, was ich im Moment nicht brauche.
Vielleicht besorg ich mir mal einen zweiten Apache ohne irgendwelchen Zusatzschnickschnack und vergleiche die beiden.
Dieter
Hi!
leider weiss ich nicht so recht, was Du von mir wissen willst. Was das MPM (musste erst mal nachschauen, was das ist) anbetrifft steht in der httpd.conf
<IfModule mpm_winnt.c>
ThreadsPerChild 250
MaxRequestsPerChild 0
</IfModule>
Hilft Dir das weiter?Mach mal "httpd -l" und entsorge allen überflüssigen Ballast.
Das geht soweit ich weiss nur unter Linux, oder sehe ich das falsch?
Das siehst Du schon richtig, aber auch unter Windows kommt er nicht ohne ausführbare Datei aus, nämlich Apache.exe, also mal mit Apache.exe -l versuchen.
Ich hab aber zumindest alles aus der httpd.conf bugsiert, was ich im Moment nicht brauche.
Ich bin mir nicht so sicher ob das was bringt, ich glaube inzwischen werden die Module automatich geladen, wenn es in der httpd.conf nicht explizit anders gefordert ist, wobei ich das nur von neueren 1.3er Versionen weiß.
Wenn Du sowas wie oben auskommentierst erreichst Du nicht dass ein Modul nicht geladen wird, sondern nur dass die dort angegebenen Eintellungen nicht vorgenommen werden, und so default-Werte verwendet werden. Das kann ggfs. nachteilig sein.
Ich würde mir mal die Doku etwas genauer ansehen, da ist das alles sehr genau beschreiben, auch was es unter windows zu beachten gibt, wie man Module Läd...
http://httpd.apache.org/docs-2.0/
Grüße
Andreas
Hallo Andreas,
danke fuer Deine Antwort,
apache.exe -l gibt zurueck
core.c
mod_win32.c
mpm_winnt.c
http_core.c
mod_so.c
Aber vermutlich ist das jetzt erst mal irrelevant, ich werde wohl, wenn ich mir Dein Posting so ansehe, um eine naehere Beschaeftigung mit der Doku nicht rumkommen.
Dieter
hallo dieter,
apache.exe -l gibt zurueck
core.c
mod_win32.c
mpm_winnt.c
http_core.c
mod_so.c
Ruf dir auch mal einfach "apache -?" auf und schau dir an, was dir "apache -l" liefert. Du bekommst damit keine Aussage über Module, die als "shared objects" zur Laufzeit mit eingebunden werden. Sofern deine httpd.conf entsprechende Einträge ausweist, kannst du dir mit http://localhost/server-info deutlich genauere Informationen anzeigen lassen.
Die Angabe
<IfModule mpm_winnt.c>
ThreadsPerChild 250
MaxRequestsPerChild 0
</IfModule>
in der httpd.conf ist "default", du kannst bei Bedarf die "250" erhöhen oder verkleinern, das müßtest du ausprobieren. Dazu gibts in der Apache-Doku einige aufschlußreiche, wenn auch ziemlich knappe Erläuterungen.
Aber vermutlich ist das jetzt erst mal irrelevant
Nö.
;-)
Ich bin mir nicht sicher, ob deine zahlreichen "Zusätze" tatsächlich einen Einfluß auf den Speicherbedarf der beiden Apache-Prozesse haben. Zeigt dir denn dein Taskmanager gar nichts für mySQL an? Das ist zumindest bei mir der Prozeß mit dem höchsten Speicherbedarf, und das Teil läuft bei einer "default"-Installation ebenfalls als Dienst.
ich werde wohl, wenn ich mir Dein Posting so ansehe, um eine naehere Beschaeftigung mit der Doku nicht rumkommen.
Das ist immer ein sehr löbliches Unterfangen, allerdings habe ich bisher dort noch nichts über Speicherbedarf gefunden (aber auch noch nie speziell _danach_ gesucht).
Nur zum Vergleich und möglicherweise ohne Aussagekraft:
Ich habe längst nicht soviel "Kram" wie du am Laufen, Aber Apache 2.0.47, mySQL, PHP (5beta) und PERL 5.8 sind durchaus auch vorhanden - sowie ein ziemlich speicherhungriger Tomcat und JAVA.
Die beiden Apache-Prozesse haben unterschiedlichen Bedarf: der "parent"-Prozeß will immer so um die 2000 bis 2500 K, und der "Child"-Prozeß will normalerweise zwischen 8000 und 12000 K haben, egal, ob ich meinen lokalen Apache grade irgendwie anspreche oder nicht
Grüße aus Berlin
Christoph S.
Hi Dieter,
apache.exe -l gibt zurueck
core.c
mod_win32.c
mpm_winnt.c
http_core.c
mod_so.c
klar - mod_so. Und das wiederum lädt alles, was Du laut Deiner httpd.conf zusätzlich laden willst - alles fast alles Wichtige. ;-)
(Unter Windows bleibt Dir wahrscheinlich keine andere Wahl; unter UNIX verwende ich mod_so nicht.)
"apache.exe -L" listet Dir sämtliche Direktiven auf, die Dein Apache versteht (Achtung: Sehr lang!). Lenke dies in eine Datei, dann siehst Du, was für Module tatsächlich geladen sind.
Aber vermutlich ist das jetzt erst mal irrelevant, ich werde wohl, wenn ich mir Dein Posting so ansehe, um eine naehere Beschaeftigung mit der Doku nicht rumkommen.
Yep. Um das MPM zu verstehen, hilft nur lesen.
Viele Grüße
Michael
Hallo nochmal,
Michael und Andreas haben ja schon einiges zu dem Thema gesagt.
Mich wuerde jetzt noch interessieren, was Apache 2 bei Euch so an Speicher benutzt. Mir ist klar, dass das von etlichen Faktoren abhaengt, ich will eigentlich nur mal so eine ungefaehre Vorstellung bekommen.
Dieter