Faustformel Apache 2.2 worker Performance
Kleine Faustformel, wie man bei einem Apache 2.2 mit dem MPM worker die Konfiguration einstellt um eine bessere Performance zu erhalten:
Zunächst wird MaxClients berechnet:
MaxClients = abs( (Auf dem Server verfügbarer freier MEM in MB) / 25 MB )
25 MB ist die Größe die ein httpd-Prozess unter Umständen einnehmen kann. Meistens bleibt der eher darunter und ist zwischen 16-20 MB groß; Ich tendiere aber dazu, auf Nummer Sicher zu gehen.
Der Wer für MaxClients der aus obigen Rechnung herauskommt, kann noch nach abgerundet werden um Luft zu haben und um einen „handlicheren“ Wert zu haben.
Bei einer Solaris-Zone mit 23 GB freien MEM komme ich zwar auf 940 MaxClients, verwende dann aber später in der Berechung dann nur 900 MaxClients. Auch hier eben räumen wir etwaigen Unwägbarkeiten lieber etwas Luft nach oben ein und sorgen dafür, daß die MaxClient-Zahl auch eine teilbare Zahl ist.
Die Werte ServerLimit und ThreadsPerClient ergeben miteinander multipliziert den Wert von MaxClients. Auch diese Werte können nur ganzzahlige Werte sein. Die besten Ergebnisse bei der Performance ergeben sich, wenn ServerLimit und ThreadsPerClient nahe beieinander liegen. (Die Hintergründe mag jeder selbst aus den Manuals erlesen).
Man kann dies auch via Apache Benchmark ermitteln.
Beispielsweise werden 10000 Zugriffe gemacht, wobei jeweils 10 gleichzeitige Zugriff eerfolgen:
./ab -n 10000 -c 10 http://localhost/test.html
Meine Testergebnisse sahen bei Zugriff auf eine statische Datei, die im lokalen Filesystem liegt und dem lokalen User root gehören, wie folgt aus:
MaxClients | 900 | 900 | 900 |
---|---|---|---|
ServerLimit | 20 | 30 | 45 |
ThreadsPerChild | 45 | 30 | 20 |
Requests/s | 1592 | 1700 | 1620 |