PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Apache Tuning



kaptain Iglo
08.01.09, 11:00
Hi Zusammen,

kann mir jemand erklären wie sich im Prefork Module die Einstellungen
StartServers, MinSpareServers, MaxSpareServers, MaxClients, MaxRequestsPerChild verhalten.

Was muss ich einstellen wenn ich 500 Besucher gleichzeitig bedienen möchte?
Wie kann ich dem Apache nur einen Teil des Serverspeichers zuweisen?

Vielen Dank für eine Antwort.

PS: Ich habe im Internet bereits recheriert.
Aber mit den angebotenen Infos kann ich nicht viel anfangen...
z.b. http://httpd.apache.org/docs/2.0/de/mod/mpm_common.html

unsen
08.01.09, 19:47
ok.. da ich grad selber ein wenig daran herumlese ;)

angenommen, du hast einen linux-apachen, dann ist der wohl mit der "prefork"-option kompiliert.

das heißt, der apache macht für jede verbindung einen eigenen prozess auf.
da das starten eines prozesses ein wenig zeit in anspruch nimmt (da ist soweit ich weiss sogar eine zeitsperre eingebaut, dass nur ein prozess pro sekunde gestartet werden kann), werden von anfang an gleich mehrere prozesse gestartet, die nichts andres tun als auf eine verbindung zu warten.. das sind die Spare-Server.

MinSpareServer gibt an, wieviel freie Server-Prozesse mindestens vorhanden sein sollen - bei Bedarf werden dann neue erzeugt, wenn freie belegt worden sind.. und MaxSpareServer gibt an, wiviel freie "herumliegen" dürfen - das heißt, wenn einige wieder frei werden, dann werden nach und nach wieder Prozesse gekillt, wenn mehr als Max da sind.

die MaxClients müsste dann die obere Grenze für gleichzeitige Verbindungen sein. wenn es mehr Anfragen gibt, dann kommen die in eine Warteschleife, bis wieder ein Server-Prozess frei ist. beim prefork-Modell müsste das also auch die obergrenze für erzeugte Prozesse sein.

MaxRequestsPerChild - wenn ein Prozess -also eine Verbindung- eine gewisse Anzahl von Anfragen bearbeitet hat, dann wird der Prozess gekillt und ein neuer erzeugt. ist aber normal deaktiviert - was mir so spontan ganz sinnvoll erscheint in den meisten fällen ;)


also wenn du wirklich 500 Besucher hast, die absolut gleichzeitig auf den Server zugreifen, dann müsstest du nach meinem dafürhalten ein paar mehr SpareServer aufmachen und MaxClients drastisch erhöhen.. aber bist du sicher, dass das wirklich so der Fall ist?
eins ist jedenfalls sicher, bei der configuration wird der Kernelspeicher, in dem die Prozessinformationen abgelegt sind ganz schön wachsen -> Problem - der ist auf 32bit Systemen begrenzt und kann nicht ausgelagert werden.

netzmeister
08.01.09, 23:57
Hallo,

wo hängt es denn?

Viele Grüße

Eicke

kaptain Iglo
09.01.09, 10:45
Danke für die gute Erklärung.

Wenn man es genau betrachtet sind es bei den 500 Besuchen keine gleichzeitigen Request. Unter dem /server-status steht ein Wert von "50 requests currently being processed". Der schwangt so zwischen 30 und 60.

Mir ist jetzt nicht ganz klar wie sich das Verhältnis zwischen Min und MaxSpareservers auf die Serverperformance auswirkt.
Momentan habe ich Probleme mit der Mysql. Ich bekomme beim Ausführen von Operationen immer wieder die Fehlermeldung "#2013 Lost Connection". Vermutlich weil hier keine Resourcen mehr zur Verfügung stehen.

netzmeister
11.01.09, 19:57
Hallo,

Du brauchst wahrscheinlich einen eigenen Datenbankserver.

Datenbanken benötigen I/0. Webserver mit PHP laufen gut auf
schnellen Rechenknechten.

Ohne einen genaue Untersuchung ist das schwer zu sagen.
Aus meiner Erfahrung raus wird es wohl daran hängen.

Server mit herkömmlichen Festplatten sind bei so einem
Ansturm schnell überfordert. Da muss schon ein Cache
Raid mit SAS oder SCSI her.

Viele Grüße

Eicke