Hi Tim,
Weiß jemand ob es da einen Richtwert oder eine
performante Zahl in bezug auf die Clients gibt?
das kommt darauf an, welches Lastprofil Du erwartest und wie viele gleichzeitige Verbindungen Du aushalten kannst.
Je größer der KeepAlive-Wert ist, desto höher die Chance, daß Du keinerlei zusätzliche handshakes brauchst, um neue Verbindungen aufzubauen.
Aber gleichzeitig wird auch die mittlere Anzahl gleichzeitiger Verbindungen höher - und damit könnten Dir sehr viel früher die Ressourcen ausgehen. Es ist ein Tanz auf dem Drahtseil - denn wenn Deine Ressourcen am Ende sind, mußt Du wählen, wem Du weh tust - entweder bestehende Verbindungen schließen oder keine neuen mehr aufbauen. Beides ist lästig.
Meine Überlegung ist, dass wenn eine Verbindung ca.
2 sek. bestehen bleibt und innerhalb dieser 2 sek.
30 Anfragen kommen, ich aber nur 20 angegeben habe,
die restlichen 10 warten müssen (Puffer) oder dass
ein Timeout eintritt.
Wenn Du die Lebensdauer ausschließlich durch die Anzahl der Requests limitierst, dann kann genau dies passieren. Deshalb macht der Apache das schlauer ...
Weiß jemand zufällig wie der Apache das handelt,
sprich wann hat er seine Grenze erreicht
(Verbindungen pro Zeiteinheit)?
Im Apache kannst Du die Lebendauer einer Verbindung selbst definieren, und zwar durch eine Anzahl der Sekunden _und_ eine Anzahl der Requests.
Beim Erreichen eines der beiden Grenzwerte klappt der Apache die Verbindung zu; Folge-Requests müssen also erst wieder einen Verbindungsaufbau durchlaufen.
http://httpd.apache.org/docs/mod/core.html#keepalivetimeout
http://httpd.apache.org/docs/mod/core.html#maxkeepaliverequests
Apache-Default-Werte: 15 Sekunden und 100 requests - beides reicht für "üppige" HTML-Seiten mit vielen Bildern etc. aus, monopolisiert die Ressource aber nicht endlos.
Denn beim Apache sind - in der Standard-Übersetzung - nicht mehr als 256 gleichzeitige Verbindungen möglich:
http://httpd.apache.org/docs/mod/core.html#maxclients
Im Klartext: man muß eine Quelltextkonstante ändern und den Apache neu übersetzen, um diese Grenze zu überwinden.
Wir haben mal versucht, KeepAlive produktiv einzusetzen (auf TCP-Ebene würde das durchaus einiges an Traffic ersparen); es ist letztlich an den zu dummen HTTP/1.0-Proxy-Servern auf der Strecke gescheitert ...
Viele Grüße
Michael