optimale Max, MinSpareServers

Apache, Lighttpd, nginx, Cherokee
Post Reply
pg-computer
Posts: 144
Joined: 2002-09-27 19:28
Location: Drebach / Erzgebirge
Contact:
 

optimale Max, MinSpareServers

Post by pg-computer »

Hoi Hoi,

hab zwar im Forum mal bisschen gesucht, bin aber nicht so richtig fündig geworden..
mit welchen Werten habt ihr gute Erfahrungen gemacht für einen durchschnittlich belasteten Server..

Ist ein AMD Athlon XP 2000+ mit 256 MB RAM

#
# Server-pool size regulation. Rather than making you guess how many
# server processes you need, Apache dynamically adapts to the load it
# sees --- that is, it tries to maintain enough server processes to
# handle the current load, plus a few spare servers to handle transient
# load spikes (e.g., multiple simultaneous requests from a single
# Netscape browser).
#
# It does this by periodically checking how many servers are waiting
# for a request. If there are fewer than MinSpareServers, it creates
# a new spare. If there are more than MaxSpareServers, some of the
# spares die off. The default values are probably OK for most sites.
#
MinSpareServers 5
MaxSpareServers 20

#
# Number of servers to start initially --- should be a reasonable ballpark
# figure.
#
StartServers 8

#
# Limit on total number of servers running, i.e., limit on the number
# of clients who can simultaneously connect --- if this limit is ever
# reached, clients will be LOCKED OUT, so it should NOT BE SET TOO LOW.
# It is intended mainly as a brake to keep a runaway server from taking
# the system with it as it spirals down...
#
MaxClients 200

# MaxRequestsPerChild: the number of requests each child process is
# allowed to process before the child dies. The child will exit so
# as to avoid problems after prolonged use when Apache (and maybe the
# libraries it uses) leak memory or other resources. On most systems, this
# isn't really needed, but a few (such as Solaris) do have notable leaks
# in the libraries. For these platforms, set to something like 10000
# or so; a setting of 0 means unlimited.
#
# NOTE: This value does not include keepalive requests after the initial
# request per connection. For example, if a child process handles
# an initial request and 10 subsequent "keptalive" requests, it
# would only count as 1 request towards this limit.
#
MaxRequestsPerChild 0


Ist das ok so oder würdet ihr da was ändern?

Mein physikaler Speicher sagt folgendes...
server1:/etc/httpd # free -m
total used free shared buffers cached
Mem: 242 221 21 0 12 90
-/+ buffers/cache: 118 124
Swap: 227 0 227



Sollte man da was ändern oder ist das ok so?
Die ganzen Apache Prozesse verschlucken ja schon bissi bzw. ne Menge RAM...

Danke im Voraus! :wink:
scopeman
Posts: 62
Joined: 2002-05-15 20:22
Location: MG
 

mal in deutsch

Post by scopeman »

hier hast du mal eine deutsche übersetzung, vielleicht hilft dir das ein wenig um es für dich selber am besten zu konfigurieren.
#
# "Timeout" legt die Sekundenanzahl fest, ehe ein Timeout (eine lauf-
# zeitbedingte Unterbrechung) gesendet wird.
#
Timeout 300

#
# "KeepAlive": legt fest, ob persistente Verbindungen (mehr als eine Anfrage
# pro Verbindung) zulässig sind. Wird mit "Off" deaktiviert
#
KeepAlive On

#
# "MaxKeepAliveRequests": die Höchstzahl der während einer persistenten Verbindung
# zulässigen Anfragen. Wird hier 0 angegeben, ist unbegrenzter Zugriff möglich.
# Empfohlen wird ein hoher Wert, um eine hohe Performance zu erhalten.
#
MaxKeepAliveRequests 200

#
# "KeepAliveTimeout": Zeitspanne (Zahl an Sekunden), um auf die nächste Abfrage
# desselben Clients mit derselben Verbindung zu warten.
#
KeepAliveTimeout 15

#
# Größenanpassung des Server-Pools: Ã?hnlich wie Sie selbst abschätzen würden, wieviele
# Server-Prozesse Sie brauchen, paßt sich Apache dynamisch der Belastung an, die er
# erkennt - das bedeutet, er versucht, genügend Server-Prozesse zur Bewältigung der
# aktuellen Serverlast bereitzustellen und zusätzlich noch ein paar Ersatz-Server, damit
# kurzzeitige Spitzenbelastungen (z.B. multiple simultane Requests von einem einzelnen
# Netscape-Browser) bewältigt werden können.
#
# Das verläuft so, daß periodisch abgefragt wird, wieviele Server gerade auf eine Rück-
# meldung warten. Wenn das weniger sind als in "MinSpareServers" vorgegeben,
# wird ein neuer erstellt. Sind das mehr als in "MaxSpareServers" vorgegeben, werden
# einige beendet (sie "sterben"). Die Standardvorgaben sind vermutlich für die meisten
# Seiten so in Ordnung.
#
MinSpareServers 5
MaxSpareServers 10

#
# "StartServers": Anzahl der Server, die zu Beginn gestartet werden. Das sollte eine
# vernünftige Vorgabe sein.
#
StartServers 5

#
# "MaxClients": Höchstzahl der gleichzeitig laufenden Server. Damit wird auch die Zahl
# der Clients eingegrenzt, die simultan mit dem Server verbunden werden können. Wenn
# diese Zahl erreicht ist, werden weitere Clients ausgeschlossen; also sollte Ihre Vorgabe
# kein zu kleiner Wert sein.
# Diese Anweisung soll vor allem verhindern, daß ein "durchdrehender" Serverprozeß
# das gesamte System mitnimmt, wenn er sich beendet.
#
MaxClients 150

#
# "MaxRequestsPerChild": Höchstzahl an Anfragen, die jeder "Kind-Prozeß" (der Webserever
# startet bei Anfragen solche "Kind-Prozesse", in denen die Threads ablaufen können)
# behandeln darf, ehe er beendet wird. Das Beenden von "Kind-Prozessen" ist wichtig, um
# Probleme zu vermeiden, falls Apache (und möglicherwiese die von ihm verwendeten
# Bibliotheken) den Speicher oder andere Ressourcen aufgebraucht hat. Auf den meisten
# Plattformen wird das zwar kaum einmal vorkommen, aber ein paar, wie zum Beispiel Solaris,
# verfügen über beachtliche "Lecks" in ihren Bibliotheken. Für solche Plattformen
# sollten Sie hier 10 000 oder einen ähnlichen Wert festlegen. Wenn Sie 0 (Null) vorgeben,
# ist die Anzahl unbegrenzt.
#
# Beachten Sie: mit Ausnahme der Initial-Anfrage gilt dieser Wert NICHT für
# "Keepalive"-Anfragen. Wenn ein "Kind-Prozeß" beispielsweise mit einer
# Initial-Anfrage startet, der weitere zehn Anfragen folgen, so würde hier
# lediglich 1 gezählt werden.
#
MaxRequestsPerChild 0
cae
Posts: 68
Joined: 2002-12-16 07:16
Location: München
 

Re: optimale Max, MinSpareServers

Post by cae »

mach mal "top" und schau Dir an, wie viel Speicher einer der httpd Prozesse verbaucht. Das zu wissen ist essentiell, um MaxSpareServers richtig einstellen zu können.
Außerdem stellt sich natürlich die Frage, was ein "durchschnittlich belasteter Server" ist... wieviele Zugriffe hast du denn pro Sekunde/Minute im Durchschnitt?
pg-computer
Posts: 144
Joined: 2002-09-27 19:28
Location: Drebach / Erzgebirge
Contact:
 

Re: optimale Max, MinSpareServers

Post by pg-computer »

Hoi,

PID USER PRI NI SIZE RSS SHARE STAT %CPU %MEM TIME COMMAND
1799 wwwrun 9 0 16008 15M 13592 S 0.0 6.4 0:00 httpd
1774 wwwrun 9 0 15960 15M 13580 S 0.0 6.4 0:00 httpd
1777 wwwrun 9 0 15924 15M 13576 S 0.0 6.4 0:01 httpd
1779 wwwrun 9 0 15908 15M 13548 S 0.0 6.4 0:00 httpd
1773 wwwrun 9 0 15896 15M 13588 S 0.0 6.4 0:00 httpd
1776 wwwrun 9 0 15876 15M 13560 S 0.0 6.3 0:01 httpd
1772 wwwrun 9 0 15860 15M 13576 S 0.0 6.3 0:02 httpd
1775 wwwrun 9 0 15800 15M 13568 S 0.0 6.3 0:00 httpd
1778 wwwrun 9 0 15708 15M 13580 S 0.0 6.3 0:00 httpd
11241 wwwrun 9 0 15620 15M 13552 S 0.0 6.2 0:00 httpd
11242 wwwrun 9 0 15596 15M 13544 S 0.0 6.2 0:00 httpd
11239 wwwrun 9 0 15584 15M 13548 S 0.0 6.2 0:01 httpd


So siehts aus derzeit, is denk ich bissi viel, mit den Zugriffen, das ist noch nicht soviel... wird aber noch, will das eben so Durchschnittlich einrichten und weiß nicht, was die besten Werte für den Apache sind, aber der Server is ja bald beim Swappen...

Danke im Voraus!
cae
Posts: 68
Joined: 2002-12-16 07:16
Location: München
 

Re: optimale Max, MinSpareServers

Post by cae »

PG-Computer wrote: So siehts aus derzeit, is denk ich bissi viel, mit den Zugriffen, das ist noch nicht soviel... wird aber noch, will das eben so Durchschnittlich einrichten und weiß nicht, was die besten Werte für den Apache sind, aber der Server is ja bald beim Swappen...

Danke im Voraus!
Deine Anbage von oben:
Mem: 242 221 21 0 12 90
-/+ buffers/cache: 118 124
Swap: 227 0 227
124MB frei, das sollte erstmal reichen, wenn Du nicht große Datenbank-Scripts am laufen hast.
Ich würde MaxSpareServers mal auf 10 setzen. 10 Server sollten reichen. Wenn Du simulieren möchtest, wie sich Dein Server bei mehr Anfragen verhält, würde ich zuerstmal MRTG oder RRDTOOL
installieren, um damit z.B. den Speicher, die CPU oder die MySQL Datenbank monitoren zu können.
Dann kannst Du mit ab oder siege künstlich Last erzeugen, d.h. den Zugriff von vielen Usern simulieren. Beie Programme zeigen an, wieviele Fehler aufgetreten sind und zusammen mit den anderen Parametern (CPU, Speicher) kannst Du dann ans optimieren gehen.

Oder Du setzt einfach die Standartwerte in die httpd.conf ein und wirst damit zu 95% glücklich sein ;)
pg-computer
Posts: 144
Joined: 2002-09-27 19:28
Location: Drebach / Erzgebirge
Contact:
 

Re: optimale Max, MinSpareServers

Post by pg-computer »

Hoi Hoi,

jo effektiv sind 21 MB frei..

Danke erstmal an alle!!!

http://sysinfo.pg-tw-server.de
cae
Posts: 68
Joined: 2002-12-16 07:16
Location: München
 

Re: optimale Max, MinSpareServers

Post by cae »

PG-Computer wrote:Hoi Hoi,

jo effektiv sind 21 MB frei..

Danke erstmal an alle!!!

http://sysinfo.pg-tw-server.de
Es sind 124MB frei, da Linux meines Wissens nach immer recht viel Speicher für Buffers und Cache reserviert. Sollte eine Anwendung mehr als den "wirklich freien" Speicher (21MB) brauchen, kann sie auf 124MB zugeifen. (bezogen auf Deine free angaben weiter oben)
pg-computer
Posts: 144
Joined: 2002-09-27 19:28
Location: Drebach / Erzgebirge
Contact:
 

Re: optimale Max, MinSpareServers

Post by pg-computer »

Hoi Hoi,

na da passt es ja! ;)

kann ich meine Konfiguration auch so lassen! ;-)
nn4l
Posts: 172
Joined: 2002-06-19 07:06
Contact:
 

Re: optimale Max, MinSpareServers

Post by nn4l »

Dein Wert für MaxClients ist *viel* zu hoch.

MaxClients ist die maximale Anzahl Apache-Prozesse, die gestartet werden (jeder Client kriegt seinen eigenen Prozess). Bei MaxClients=200 kann es Dir also passieren, dass 200 httpd-Prozesse gestartet werden.

Ich bin mir nicht ganz sicher, wie man den echten RAM-Bedarf pro Prozess ausrechnet, ich glaube, es ist RSS minus SHARE. Laut o.a. Tabelle dürften das ungefähr 3 MByte sein.

Folglich kannst Du Dir höchstens so ungefähr 50 - 80 httpd-Prozesse leisten, also 50 - 80 User gleichzeitig.
cae
Posts: 68
Joined: 2002-12-16 07:16
Location: München
 

Re: optimale Max, MinSpareServers

Post by cae »

nn4l wrote:MaxClients ist die maximale Anzahl Apache-Prozesse, die gestartet werden (jeder Client kriegt seinen eigenen Prozess). Bei MaxClients=200 kann es Dir also passieren, dass 200 httpd-Prozesse gestartet werden.
Falsch. MaxSpareServers ist die Anzahl der maximal zu startenden Server-Prozesse. MaxClients gibt nur die maximale Anzahl an gleichzeitigen Verbindungen an.
nn4l
Posts: 172
Joined: 2002-06-19 07:06
Contact:
 

Re: optimale Max, MinSpareServers

Post by nn4l »

cae wrote:Falsch. MaxSpareServers ist die Anzahl der maximal zu startenden Server-Prozesse. MaxClients gibt nur die maximale Anzahl an gleichzeitigen Verbindungen an.
Stimmt nicht. Lies die Apache Doku:

http://httpd.apache.org/docs/mod/core.h ... areservers

MaxSpareServers ist die max. Anzahl unbenutzter httpd-Prozesse.


http://httpd.apache.org/docs/mod/core.html#maxclients

MaxClients ist tatsächlich die maximale Anzahl der gleichzeitigen Verbindungen, da jede Verbindung aber einen eigenen httpd-Prozess braucht, läuft es letztlich auf die max. Anzahl Prozesse hinaus.

Kann man auch leicht mit dem ApacheBench Programm nachweisen. Die Anzahl httpd-Prozesse ist nie höher als MaxClients, auch bei einer sehr hohen Anzahl gleichzeitiger connections.
kase
Posts: 1031
Joined: 2002-10-14 22:56
 

Re: optimale Max, MinSpareServers

Post by kase »

Ich empfehl euch dafür mal diesen Thread hier:

http://www.rootforum.org/forum/viewtopic.php?t=7740
cae
Posts: 68
Joined: 2002-12-16 07:16
Location: München
 

Re: optimale Max, MinSpareServers

Post by cae »

kase wrote:Ich empfehl euch dafür mal diesen Thread hier:

http://www.rootforum.org/forum/viewtopic.php?t=7740
Hmm, I stand corrected :oops: Ich hab das eigentlich anders gesehen, aber nun weiß ich's besser... sorry nn4l, danke kase!
nn4l
Posts: 172
Joined: 2002-06-19 07:06
Contact:
 

Re: optimale Max, MinSpareServers

Post by nn4l »

Ich hab jetzt mal ausgiebige Lasttests mit ApacheBench und Astra Loadtest gemacht, mit folgenden Ergebnissen:

ApacheBench hat ergeben, dass mein Wert für MaxClients ca. 15 sein sollte. Wenn ich einen höheren Wert nehme, fängt der Server an zu swappen, die Performance bricht total ein und einige Prozesse scheinen auch hängen zu bleiben. Bei MaxClients = 15 dagegen kann ich auch 50 gleichzeitige connections entgegennehmen. Das geht dann zwar für alle langsamer, aber es gibt wenigstens keine TimeOuts.

Der ApacheBench macht keine Wartezeiten zwischen den einzelnen Zugriffen. Das ist insofern unrealistisch, weil ja reale User zwischen zwei Klicks erstmal den Text lesen. Beim Astra LoadTest kann man aber virtuelle User mit "Denkpausen" einrichten.

Jetzt gibt es noch den Parameter "KeepAliveTimeout". Der definiert die Zeit, die ein httpd-Prozess auf seinen Client wartet. Der nächste Zugriff würde dann ein winziges bisschen performanter sein. Defaultmäßig steht dieser Parameter auf 15. D.h. falls ich MaxClients Besucher habe, die aber pro Seite 15 Sekunden warten, dann ist der Server ausgelastet, obwohl er nicht viel tut.

Bei den Versuchen mit Astra Loadtest hat sich dann auch ergeben, dass ein niedriger Wert für "KeepAliveTimeout" das Lastverhalten erheblich verbessert, d.h. der Server kann wesentlich mehr reale Besucher (mit Denkpausen) verkraften als bei der Defaulteinstellung. Ich hab jetzt KeepAliveTimeout auf 3 gesetzt.
kase
Posts: 1031
Joined: 2002-10-14 22:56
 

Re: optimale Max, MinSpareServers

Post by kase »

KeepaliveTimeout bringt aber nur was, wenn KeepAlive On ist, und normalerweise ist das glaube ich auf off gesetzt. Zumindest verwende ich dies nicht.
nn4l
Posts: 172
Joined: 2002-06-19 07:06
Contact:
 

Re: optimale Max, MinSpareServers

Post by nn4l »

KeepAlive ist defaultmäßig auf "on", wenn man den Apache selbst compiliert.

Ich halte es aber für nachteilig, KeepAlive auf "off" zu setzen, aus folgendem Grund:

Eine normale Webseite erzeugt mehrere Webserver Zugriffe, nämlich für die HTML Seite und für die ganzen GIFs.

Wenn der Server aufgrund hoher Besucherzahlen am Limit ist, dann dauert der Aufbau einer Seite extrem lange, weil nämlich der Zugriff für jedes einzelne GIF wieder in die Queue eingereiht und erst nach ein paar Sekunden abgearbeitet wird.

Wenn KeepAlive aber auf "on" ist, dann bekommt der Besucher die GIFs praktisch sofort, weil der httpd Prozess noch für ihn reserviert ist.

Solange man noch weit vom Limit entfernt ist, ist es natürlich egal, wie die Einstellung ist.
kase
Posts: 1031
Joined: 2002-10-14 22:56
 

Re: optimale Max, MinSpareServers

Post by kase »

wenn man den Apache mit Debian und apt-get instatlliert, ist KeepAlive off, zumindest bei der Stable Version. Ich denke, da muss man einfach mal selber testen...
Post Reply