KeepAlive aktivieren oder nicht?

9

Wie ist der Konsens darüber, dass KeepAlive mit einer stark frequentierten Magento-Site besteht? Es scheint, dass die meisten Leute empfehlen, es einzuschalten, aber dann gibt Magento an, es in ihrer Maximierung der Leistung und Skalierbarkeit mit Magento Enterprise Edition wegzulassen, behaupten sie

"Wenn ein Webserver stark ausgelastet ist, wird das Aufrechterhalten dauerhafter Verbindungen nachteilig. Daher sollte die KeepAlive-Direktive immer deaktiviert werden."

Gedanken?

Jeremy Miller
quelle

Antworten:

4

Gute Frage!

Traditionell war KeepAlive eine gute Sache, da es den TCP-Overhead einer gesamten Seitenlast erheblich reduziert, bei der viele Anforderungen (wie alle Bilder, CSS, JS) von einem Server aus bearbeitet werden. Wenn Ihre Seite 85 Assets enthält, sind das 85 zusätzliche Drei-Wege-TCP-Handshakes, und die Latenz summiert sich. Vor vielen Jahren war dies bei langsameren Internetverbindungen viel wichtiger als heute, obwohl es für mobile Browser oder Verbindungen mit langsamer / hoher Latenz immer noch sehr relevant ist.

Die hier erwähnten Auswirkungen hängen jedoch davon ab, wie lange diese TCP-Verbindungen geöffnet bleiben und ob dies Ihre untergeordneten Apache-Prozesse schnell erschöpfen könnte. Die meisten Standardeinstellungen, die ich gesehen habe, sind:

KeepAliveTimeOut 15
MaxClients 256

Das heißt, wenn 256 verschiedene Browser innerhalb derselben 15 Sekunden Inhalte anfordern würden, müsste der 257. Client warten, bis die Verbindungen unterbrochen werden. Nicht gut - das ist überhaupt nicht besonders viel Verkehr, deshalb erklärt es diesen Rat. Es kann auch dazu führen, dass man MaxClients erhöht, um damit fertig zu werden, was viel Speicher verbrauchen könnte. Wenn ich KeepAlives verwende, setze ich KeepAliveTimeout im Allgemeinen auf 2 oder 3 Sekunden. Dies ist die Leerlaufzeit zwischen Anforderungen und nicht die gesamte Zeit für alle Anforderungen.

Wenn Sie KeepAlive verwenden, gibt es einen Spagat zwischen KeepAliveTimeout, MaxClients und Serverressourcen. Um Ihnen dabei zu helfen, zeigt Ihnen ein 'Dienst httpd / apache2 fullstatus' die Anzahl der Verbindungen an, die von KeepAlives gleichzeitig verwendet werden - angezeigt mit dem Großbuchstaben 'K'.

Für Magento brauche ich KeepAlives allerdings nicht.

Was Sie sollten , wenn Sie einen sehr hohen Verkehrs Unternehmen Website haben tun, ein CDN für statische Inhalte verwendet.

Wenn Sie in mehreren Ländern verkaufen, beschleunigt die Verwendung eines CDN nicht nur das Laden der gesamten Seite für Ihre Kunden (was gut ist), sondern reduziert auch die Bandbreite Ihres Servers massiv. Die Einstellungen unter System> Config> Web> [Un] Secure machen es wirklich trivial, ein CDN für Medien, Skin und JavaScript zu integrieren. Dies ist der Hauptteil der tatsächlichen HTTP-Anforderungen. Als Bonus können Sie verschiedene DNS-Einträge verwenden, um Downloads über Hostnamen hinweg zu parallelisieren. Wenn Sie es richtig machen, berühren diese Anforderungen Ihren Server kaum, sodass kein wirklicher Bedarf mehr bestehtfür KeepAlive. In diesem Fall sollten Sie KA deaktivieren. Wir möchten die Verbindung nicht aufrecht erhalten, wenn wir wissen, dass der Rest des Inhalts von einem anderen Ort aus bereitgestellt wird. Wenn Sie eine eigenständige CDN-Empfehlung wünschen: CloudFlare ist fantastisch, und Sie erhalten sogar SSL mit dem kostenlosen Paket.

Wenn Sie ein solches CDN verwenden oder einen anderen Reverse-Proxy (wie Varnish) verwenden, sind Ihre Apache HTTP KeepAlives grundsätzlich irrelevant.

Zusammenfassend stimme ich zu, dass Sie KeepAlive wahrscheinlich deaktivieren sollten , um eine Sättigung Ihrer Apache-Prozesse unter Last zu vermeiden, aber auf jeden Fall ein CDN oder einen anderen Reverse-Proxy für die Assets verwenden sollten, um das Laden Ihrer Seite so schnell wie möglich zu halten.

Will Parsons
quelle
1
Keepalives sind während eines Ursprungsabrufs von einem CDN weiterhin relevant. Das Aktivieren / Deaktivieren sollte nicht leicht genommen und gründlich getestet werden. Ich würde empfehlen, Anfragen zu reduzieren und Assets zu verkleinern, bevor überhaupt ein CDN in Betracht gezogen wird - falsch konfiguriert, können sie Geschäfte leicht langsamer als schneller machen.
Ben Lessani - Sonassi
Wie setze ich dieses lokale Keepalive-Einstellungssystem für den XAMPP-Server?
Bhavin Thummar