Apache - Konfiguration und Performance: Unterschied zwischen den Versionen
(→Links) |
|||
| (2 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 1: | Zeile 1: | ||
| + | == Links == | ||
| + | Sehr guter Artikel zu Performance bezogenen Einstellungen (englisch): | ||
| + | http://www.devside.net/articles/apache-performance-tuning | ||
| + | |||
| + | Übersicht und Links auf andere gute Seiten: | ||
| + | http://www.joomlaperformance.com/articles/server_related/how_to_track_down_a_high_server_load_5_16.html | ||
| + | |||
== Allgemeine Tipps zur Performance == | == Allgemeine Tipps zur Performance == | ||
=== Die Zusammenhänge === | === Die Zusammenhänge === | ||
| Zeile 49: | Zeile 56: | ||
* Min und MaxSpareThreads sollten durch ThreadsPerChild Teilbarsein. Sonst rundet der Server. | * Min und MaxSpareThreads sollten durch ThreadsPerChild Teilbarsein. Sonst rundet der Server. | ||
* Den Speicherverbrauch eines Workerprozesses kann man angeblich effektiv mit der '''ThreadStackSize''' beeinflussen, auf geringe Kosten der Performance bezogen auf die Requestdauer.'' I reduced my setting down to 65536 bytes and was able to bring down my apache2 process usage from 50MB to just 10MB! And it works quite well with little to no effect on the speed of requests handled!'' | * Den Speicherverbrauch eines Workerprozesses kann man angeblich effektiv mit der '''ThreadStackSize''' beeinflussen, auf geringe Kosten der Performance bezogen auf die Requestdauer.'' I reduced my setting down to 65536 bytes and was able to bring down my apache2 process usage from 50MB to just 10MB! And it works quite well with little to no effect on the speed of requests handled!'' | ||
| − | * | + | * Man kann sich auch bei knappem Speicher überlegen lieber weniger Server und MaxClients zu nehmen und dafür mehr ThreadsPerChild. Spart Speicher geht aber wieder zu lasten der Geschwindigkeit (vor allem bei Prozessoren mit mehrerern Kernen. |
Aktuelle Version vom 9. April 2010, 11:42 Uhr
Links[Bearbeiten]
Sehr guter Artikel zu Performance bezogenen Einstellungen (englisch): http://www.devside.net/articles/apache-performance-tuning
Übersicht und Links auf andere gute Seiten: http://www.joomlaperformance.com/articles/server_related/how_to_track_down_a_high_server_load_5_16.html
Allgemeine Tipps zur Performance[Bearbeiten]
Die Zusammenhänge[Bearbeiten]
Es gibt das Prefork MPM und das Worker MPM. Der Hauptunterschied besteht darin daß der Worker MPM mehrere Threads bilden kann. Das ist unter Umständen gut wenn mehrere Prozessor-Kerne am Werk sind.
Prefork bildet einen Thread und spaltet davon Kindprozesse ab. Das braucht weniger Speicher für die Threads.
Apache2 unter Worker MPM[Bearbeiten]
Unter Worker MPM muß man aufpassen das die Einstellungen zum Speicherangebot des Servers passen. Bei kleinen Servern oder VServern ist die Standardkonfiguration ein Killer, weil allein die Prozesse des Apache den ganzen Speicher brauchen und kein Platz mehr für andere Tätigkeiten (z.B. CGI-Skripte) bleiben.
Standardkonfiguration Worker und Prefork:
# MaxClients: maximum number of server processes allowed to start
# MaxRequestsPerChild: maximum number of requests a server process serves
<IfModule mpm_prefork_module>
StartServers 50
MinSpareServers 10
MaxSpareServers 50
MaxClients 250
MaxRequestsPerChild 0
</IfModule>
# worker MPM
# StartServers: initial number of server processes to start
# MaxClients: maximum number of simultaneous client connections
# MinSpareThreads: minimum number of worker threads which are kept spare
# MaxSpareThreads: maximum number of worker threads which are kept spare
# ThreadsPerChild: constant number of worker threads in each server process
# MaxRequestsPerChild: maximum number of requests a server process serves
<IfModule mpm_worker_module>
StartServers 2
MaxClients 150
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 0
</IfModule>
Für den Worker muß man also versuchen die Werte so einzustellen, daß nicht zuviel Speicher verschwendet wird, aber trotzdem die erwartete Last gut abgearbeitet wird und noch Reserven zur Verfügung stehen. Wenn die Werte zu hoch gesetzt sind riskiert man außerdem daß die threads gar nicht genutzt werden könnnen, weil die Prozessorleistung zu niedrig ist und der Speicherverbrauch zu hoch.
Die wichtigsten Werte sind hierbei:
MaxClients - Dieser Wert gibt an, wieviel Clients sich maximal zur gleichen Zeit verbinden dürfen ThreadsPerChild - Gibt an wieviel Threads in einem Serverprozess laufen. (Sollte nicht niedriger sein als MinSpareThreads) MaxRequestsPerChild - Wenn gesetzt wird ein Serverprozess nach der angegebenen Zahl beendet und wenn benötigt ein neuer gestartet. Gerade bei vielen Skripten wichtig, um zu verhindern daß ein Serverprozess zu lange auf ein Skript wartet und nicht anderswo genutzt werden kann.
Weitere Tipps[Bearbeiten]
- Die KeepAliveTimeout kann man u.U. ebenfalls etwas heruntersetzten (z.B. von 15 auf 10 oder sogar 5s). Dann muß der Browser zwar evtl. eine neue Verbindung aufbauen, dafür wird bei langsamen Verbindungen die Verbindung nicht blockiert. Ganz auschalten ist aber auch nicht sinnvoll, dann ist der Server dauernd beschäftigt, neue Verbindungen aufzubauen, was natürlich auch wieder Zeit benötigt.
- Min und MaxSpareThreads sollten durch ThreadsPerChild Teilbarsein. Sonst rundet der Server.
- Den Speicherverbrauch eines Workerprozesses kann man angeblich effektiv mit der ThreadStackSize beeinflussen, auf geringe Kosten der Performance bezogen auf die Requestdauer. I reduced my setting down to 65536 bytes and was able to bring down my apache2 process usage from 50MB to just 10MB! And it works quite well with little to no effect on the speed of requests handled!
- Man kann sich auch bei knappem Speicher überlegen lieber weniger Server und MaxClients zu nehmen und dafür mehr ThreadsPerChild. Spart Speicher geht aber wieder zu lasten der Geschwindigkeit (vor allem bei Prozessoren mit mehrerern Kernen.