Apache Prefork-Optimierung - Auswahl des richtigen MaxRequestsPerChild-Werts

9

Ich versuche, unsere Webserver so zu optimieren, dass möglichst viele Verbindungen hergestellt werden. Ich habe viele Beiträge und die Apache-Notizen gelesen. Ich versuche zu verstehen, für welchen Wert ich mich entscheiden soll MaxRequestsPerChild.

Zuerst habe ich versucht, es auf 4.000 zu setzen, aber der Server hatte Schwierigkeiten, viele Anfragen zu bearbeiten, also habe ich angefangen, es zu erhöhen. Im Moment sind meine Einstellungen:

<IfModule prefork.c>
StartServers       8
MinSpareServers    5
MaxSpareServers   20
ServerLimit      256
MaxClients       256
MaxRequestsPerChild  40000
</IfModule>

Nach dem Festlegen MaxRequestsPerChildvon 40.000 konnte der Server mehr Verbindungen verarbeiten, ohne mehr Speicher / CPU zu verwenden.

Kann mir bitte jemand sagen, ob dieser Wert zu hoch ist oder ob es in Ordnung ist, einen so hohen Wert zu haben?

Vielen Dank!

Betriebssysteminfo:

[root@web06 ~]# uname -a
Linux web 2.6.18-164.el5PAE #1 SMP Thu Sep 3 04:10:44 EDT 2009 i686 i686 i386 GNU/Linux
[root@web06 ~]# free
             total       used       free     shared    buffers     cached
Mem:       3814660    3502968     311692          0     144368    2970468
-/+ buffers/cache:     388132    3426528
Swap:      5210104          0    5210104
Kuf
quelle

Antworten:

10

MaxRequestsPerChildist wirklich nur nützlich, um den Umfang des Speicherverlusts im Laufe der Zeit zu begrenzen, wenn dynamische Skripte ausgeführt werden. Wenn Sie nur statischen Inhalt oder sehr kleine / einfache Skripte bereitstellen, können Sie ihn wahrscheinlich ohne großen Effekt auf 0 oder sehr hoch setzen. Wenn Sie größere / komplexe Skripte ausführen, führt das Setzen von 0 / hoch dazu, dass Ihre Apache-Prozesse immer mehr Speicherplatz beanspruchen. Wie viel mehr genau hängt von Ihrer spezifischen Anwendung ab.

Auf der anderen Seite kann eine sehr niedrige Einstellung tatsächlich zu einer etwas höheren CPU-Auslastung führen, da die Apache-Prozesse ständig neu gestartet werden.

Ich würde einen einfachen Test durchführen, um festzustellen, wie viel Speicher Ihre Prozesse verwenden können. Auf MaxRequestsPerChild0 setzen und Apache neu starten. Testen Sie das Laden einiger Seiten und sehen Sie, welche anfängliche Größe die Apache-Prozesse verwenden top. Überprüfen Sie nach einigen Stunden / Tagen / Wochen erneut (abhängig von Ihrer Anwendung und den Seitenaufrufen) und sehen Sie, wie es wächst. Wenn es nicht sehr stark wächst, sollte eine 0 oder ein sehr großer Wert für MaxRequestsPerChildin Ordnung sein.

Wenn Sie eine festgelegte maximale Größe für Ihre Apache-Prozesse festgelegt haben (dh Sie möchten, dass diese 50 MB oder weniger betragen), können Sie denselben Test mit verschiedenen Werten von durchführen, MaxRequestsPerChildbis Sie einen Wert finden, der Apache kleiner hält.

uesp
quelle
1
Wie kann ich das Laden der Seiten testen und die Größe der Apache-Prozesse unter Windows Server anzeigen?
Ahmad Alfy