Von http://httpd.apache.org/docs/2.2/misc/perf-tuning.html
Das größte Hardwareproblem, das sich auf die Leistung des Webservers auswirkt, ist der Arbeitsspeicher. Ein Webserver sollte niemals austauschen müssen, da das Austauschen die Latenz jeder Anforderung über einen Punkt hinaus erhöht, den Benutzer als "schnell genug" betrachten. Dies führt dazu, dass Benutzer auf Stop und Reload klicken, wodurch die Last weiter erhöht wird. Sie können und sollten die MaxClients-Einstellung so steuern, dass Ihr Server nicht so viele untergeordnete Elemente erzeugt, dass er mit dem Austausch beginnt. Das Verfahren hierfür ist einfach: Ermitteln Sie die Größe Ihres durchschnittlichen Apache-Prozesses, indem Sie Ihre Prozessliste mit einem Tool wie top anzeigen, und teilen Sie diese in Ihren gesamten verfügbaren Speicher auf, sodass Platz für andere Prozesse bleibt.
Das Hauptproblem ist, dass ich nicht verstehen kann, wie man die Größe kennt, weil ich die Größe von httpd auf nicht mehr von 3888 habe
Aber wenn wir die Anzahl für MaxClients bestimmen müssen und ich 4 GB RAM habe, bekomme ich: 972, also sollte ich wie 900 in den MaxClients verwenden?
quelle
Antworten:
Bestimmen Sie zunächst die PID eines Ihrer Apache-Prozesse.
Dann können Sie so etwas tun:
cat /proc/PIDHERE/status | grep VmRSS
Dies ergibt die (aktuelle) Resident-Set-Größe dieses bestimmten Prozesses, ähnlich wie:
VmRSS: 304456 kB
Dieser Wert entspricht der Größe des im RAM befindlichen Prozesses.
Normalisieren Sie dann Ihre Maßeinheit (
4GB * 1024 * 1024 = 4,194,304 KB
). Teilen:4194304 KB / 304456 KB = 13.77 processes
Bedenken Sie, dass auf Ihrem System wahrscheinlich andere Prozesse ausgeführt werden, die ebenfalls Speicher verbrauchen, und Sie möchten im Idealfall das Auslagern minimieren. Daher möchten Sie wahrscheinlich nicht, dass 13 Apache MaxClients konfiguriert werden (unter Verwendung meiner Nummern), sondern dass Sie (nach Ihrem Ermessen) etwas weniger möchten ).
Dies ist eine grobe Schätzung; Die Größe Ihrer Apache-Prozesse kann je nach Auslastung mit der Zeit zunehmen.
quelle
Die Vorhersage der maxClients anhand von Testszenarien ist ein Ausgangspunkt. Um das Problem jedoch richtig zu lösen, müssen Sie zunächst messen, wie sich Ihre Anwendung mit dem tatsächlichen Datenverkehr verhält.
Angenommen, Ihr Apache läuft vor der Gabelung ....
Richten Sie einen Cron-Job ein, um die Anzahl der httpd-Prozesse und die Ausgabe von 'free' zu zählen. Beachten Sie, dass die für Cache / Puffer verfügbare Speichermenge einen großen Einfluss auf die Leistung hat, wenn Ihr Webserver Inhalte aus lokalen Dateien bereitstellt (und in vielen Fällen auch dann, wenn dies nicht der Fall ist). Wenn Sie also zum Tauschen kommen, ist Ihre Webleistung wahrscheinlich schrecklich!
Wenn Sie einige Daten haben, zeichnen Sie sie in ein Diagramm und führen Sie eine Regression der kleinsten Quadrate durch. Extrapolieren Sie sie, um die Anzahl der Clients zu ermitteln, bei denen Sie Ihr Ziellimit für die httpd-Speichernutzung erreichen. Ein Ausgangspunkt für das Speicherziel wäre weniger als 80% des physischen Speichers / 80% der Größe des Inhalts.
(Beachten Sie, dass die Ergebnisse möglicherweise nicht korrekt sind, wenn MinSpareServer auf einen sehr hohen Wert eingestellt sind.)
In einer idealen Welt würden Sie auch die URL-Antwortzeit in derselben Protokolldatei messen - dies wird jedoch viel komplexer.
quelle