Apache2 - prefork, fcgid

Moin Moin,

und zwar hab ich auf einem Server einen Apache2 am laufen. Jetzt hab ich im Netz gelesen, dass ich im mpm_prefork-Modul die Konfiguration so vornehmen kann, dass der Häuptling nur z.B. 3GB nimmt.

Mein Server hat 4GB RAM und der größte Apache2-Prozess läuft mit ~ 20MB
Demnach hab ich meine Konfig folgendermaßen angepasst:

Code:
<IfModule mpm_prefork_module>
  StartServers               45
  MinSpareServers            8
  MaxSpareServers            15
  MaxRequestWorkers          150
  ServerLimit                150
  MaxConnectionsPerChild     2000
</IfModule>

Jetzt meine Frage: Passt das so oder muss ich in einer anderen Datei noch etwas anpassen? Das Apachebuddy.pl Skript reagiert nicht auf Änderungen in dieser Datei.
Und wie kann ich testen, dass er bei 3GB RAM verbrauch dann Schluss macht?

Da mein Server mit fcgid läuft (dazu gibts hier auch einen schönen Beitrag), wie wirkt sich das auf den RAM-Consum aus? Sind das separate Threads oder läuft das in den Apache2 Prozessen mit?


Grüße und nen guten Start in die Woche ;)
selig
 
Du wirst auf jeden Fall eine wesentlich bessere Performance bekommen, wenn du nicht das Prefork-MPM nutzt sondern das Worker-MPM. (Geht Prefork mit fcigd überhaupt? :confused:) Denn nur mit Worker bekommst du echtes Threading. Prefork hingegen erzeugt immer einen neuen Prozess, wenn MaxConnectionsPerChild für den entsprechenden Kindprozess erreicht wird. Wenn es denn unbedingt Prefork sein muss und du sicherstellen kannst, dass deine PHP-Prozesse keine Memory-Leaks haben, solltest du zumindest den Wert für MaxConnectionsPerChild höher setzen.

Bezüglich RAM-Nutzung: MaxRequestWorkers * php_value memory_limit + RAM-Verbrauch des Apachen selbst = maximale RAM-Nutzung.
 
Wenn ich nicht irre, dann ist mpm_prefork bei den mods-enabled drin...
mpm-worker liegt nur in available :D und fcgid läuft auch :)

Werde dann auf den worker gehen, das ganze entsprechend deiner Formel anpassen und anschließend mit "ab" testen...

Irgendetwas, das die Konfig überprüft und dann sagt: Max. Apache2 RAM-Usage = 3GB
gibts aber nicht?! Das wär echt nice :D

Danke euch beiden :)
 
Irgendetwas, das die Konfig überprüft und dann sagt: Max. Apache2 RAM-Usage = 3GB
gibts aber nicht?! Das wär echt nice :D

Ist mir zumindest nicht bekannt. Ist ja auch ne recht einfache Rechnung, weswegen ich mir nicht vorstellen kann, dass dafür jemand bereits die Notwendigkeit gesehen hat. Ausserdem hängt der RAM-Verbrauch ja auch von den geladenen Modulen und deren Versionen, der derzeitigen größe der von Apache genutzten Shared Libs etc. ab. Da ist das schnelle messen mittels Aufruf der Website und Prüfung der Speicherverbrauchs in der Prozessliste einfacher.
 
Ich weiß ja nicht ob du an den Apache gebunden bist, aber gerade bei FastCGI bist du mit ngnix eine ganze Ecke flotter, wenn es dir um Performance geht. Auch der httpd von OpenBSD ist da einen Blick wert.
 
Ich weiß ja nicht ob du an den Apache gebunden bist, aber gerade bei FastCGI bist du mit ngnix eine ganze Ecke flotter, wenn es dir um Performance geht. Auch der httpd von OpenBSD ist da einen Blick wert.

Ein Gerücht, das sich irgendwie ziemlich lange hält. Tipp: Deaktiviere mal htaccess-Files, d.h. setze mal AllowOverride auf 'None' und messe die Performance danach nochmal. Du wirst kaum Unterschiede zum Nginx feststellen. Oft will man aber den Usern die Möglichkeit geben eigene Rewrite-Regeln zu definieren und dann kommt man um htaccess-Dateien nicht drumrum. Das heisst dann leider, dass bei jedem Request immer vom Server geprüft wird, ob eine htaccess-Datei da ist, was die Performance enorm ausbremst.
 
Zurück
Oben