Skip to main content

Keep Alive

Was bedeutet Keep Alive?

Ein Keep Alive oder Keepalive ist ein Signal, das von einem Gerät zu einem anderen gesendet wird, um eine Verbindung zwischen den beiden Geräten aufrechtzuerhalten. Dies kann zum Beispiel über einen HTTP-Header zwischen einem Client und einem Server geschehen. Keep Alives werden im Internet und in Netzwerkumgebungen verwendet, um einen offenen Kommunikationspfad aufrechtzuerhalten oder um den Status einer Verbindung zu einem Remote-Gerät regelmäßig zu überprüfen.

Verwendung von Keep Alive

Netzwerke verwenden unterschiedliche Protokolle zum Einrichten und Verwalten von Konversationen zwischen den Geräten im Netzwerk. Um diese Protokolle aktiv zu halten – um mehr Daten zu senden oder um zu überprüfen, ob ein Link noch funktioniert – kann ein Keepalive in vordefinierten Intervallen gesendet werden. Keep Alives können konfigurierbare Parameter wie Rahmengröße, Intervalle zwischen den Signalen, Anzahl der Wiederholungen und Timeouts verwenden. Keepalives dienen dazu, Netzwerkverbindungen aufrechtzuerhalten.

Verschiedene Technologien nutzen Keepalive Signale. TCP-Keepalive-Pakete prüfen, ob eine Verbindung noch gültig ist. HTTP-Keepalives verwalten Browserverbindungen, während Daten von einem Server zu einem Client übertragen werden. Keepalives können mit dem Session-Interface-Protokoll (SIP), dem Server-Nachrichtenblock (SMB), dem Spanning-Tree-Protokoll (STP), der Transportschicht-Sicherheit (TLS) und verschiedenen anderen Protokollen verwendet werden.

Aktivieren von HTTP Keep Alive

Das Aktivieren von Keepalive bedeutet, dass der HTTP-Antwortheader Connection: keep-alive anzeigt. Wenn es nicht aktiviert ist, zeigt der Antwortheader wahrscheinlich Connection: close an. Keep Alive ist in den meisten Fällen standardmäßig aktiviert, aber manchmal wird Keep Alive von den Hostinganbieter aus Leistungsgründen deaktiviert.

Der HTTP Keepalive-Header kann direkt aus der .htaccess-Datei aktiviert werden. Der Keepalive-Header in der .htaccess-Datei überschreibt die meisten Einschränkungen von Webserver oder Host. Die Aktivierung erfolgt mit:

< ifModule mod_headers.c>
Header set Connection keep-alive
< /ifModule>

Apache Webserver

Um Keepalives in Apache Webservern zu aktivieren oder deaktivieren ist der Zugriff auf die Apache-Konfigurationsdatei httpd.conf erforderlich. Um HTTP Keep-Alive zu aktivieren, wird KeepAlive auf “On” gesetzt. Zum Deaktivieren wird KeepAlive auf “Off” gesetzt.

Nginx

Keepalive ist in Nginx standardmäßig aktiviert. Einstellungen und Syntax können mit dem HttpCoreModule identifiziert werden. Mit “keepalive_disable none | browser” kann festgelegt werden, für welche Browser Keep Alive deaktiviert werden soll. Dies kann nützlich sein, wenn jemand einen älteren Browser verwendet, der sich nicht korrekt mit Keep Alive verhält. Wenn dies auf “None” gesetzt wird, wird die Aufrechterhaltung der Verbindungen für alle Browser aktiviert.

HTTP Keep Alive Einstellungen

Bei der Implementierung von Keepalive können mit zwei durch Kommas getrennte Parameter – Timeout und max – Vorgaben für die maximal möglichen Anforderungen über eine Verbindung und die Zeit für die Aufrechterhaltung einer inaktiven Verbindung gemacht werden:

Timeout

Der Parameter “Timeout” gibt an, wie lange eine inaktive Verbindung geöffnet bleiben muss und entspricht der Anzahl Sekunden, die ein Server auf neue Anforderungen von Clients warten soll. Die Einstellung von Timeout ist normalerweise auf 7 – 10 Sekunden. Bei einem höheren Datenverkehr ist möglicherweise eine längere Zeit sinnvoll, um sicherzustellen, dass nicht unnötig TCP-Verbindungen neu aufgebaut werden. Wird die Zeit jedoch zu lange gewählt, führt dies zur Ressourcenverschwendung, hauptsächlich von Speicherplatz, da die Verbindung auch bei fehlendem Verkehr geöffnet bleibt.

max

Mit dem Parameter “max” kann die maximale Anzahl von Anforderungen vorgegeben werden, die über eine Verbindung gesendet werden können, bevor diese geschlossen wird. Es wird empfohlen, diese Zahl auf 100 zu setzen, da dies in den meisten Szenarien ausreichend ist. Wenn der Server mehr Dateien bereitstellen muss, sollte diese Einstellung erhöht werden. Für eine unbegrenzte Anzahl Anfragen während einer einzelnen Verbindung wird der Parameter auf 0 gesetzt.

Die Vorteile von Keep Alive

Keepalive reduziert die CPU-Auslastung: Das Erstellen neuer TCP-Verbindungen erhöht die CPU- und Speicherauslastung eines Servers. Wenn Verbindungen länger aufrechterhalten werden, kann die Belastung verringert werden.

Kürze Ladezeit der Webseite: Die Möglichkeit, mehr Dateien mit derselben Verbindung bereitzustellen, kann die Latenz verringern und das Laden von Webseiten beschleunigen.

Schneller HTTPS Verbindungen: HTTPS-Verbindungen sind sehr ressourcenintensiv. Daher ist es empfehlenswert, Keep-Alive für HTTPS-Verbindungen zu aktivieren.

Die Nachteile von Keep Alive

Wenn der Client die Verbindung nicht schließt, wenn alle erforderlichen Daten empfangen wurden, sind die Ressourcen, die zum Offenhalten der Verbindung auf dem Server benötigt werden, für andere Clients nicht verfügbar. Wie stark dies die Verfügbarkeit des Servers beeinflusst und wie lange die Ressourcen nicht verfügbar sind, hängt von der Architektur und Konfiguration des Servers ab.

Persistente Verbindungen in HTTP / 1.1

Mit HTTP / 1.1 wurde die Unterstützung für Keepalive-Verbindungen durch ein verbessertes Design, das als persistente Verbindungen bezeichnet wird, ersetzt. Die Ziele von persistenten Verbindungen sind die gleichen wie die von Keepalive-Verbindungen, aber die Funktionsweise ist verschieden.

Im Gegensatz zu HTTP / 1.0 + Keepalive-Verbindungen sind persistente HTTP / 1.1-Verbindungen standardmäßig aktiviert. HTTP / 1.1 geht davon aus, dass alle Verbindungen persistent sind, sofern nichts anderes angegeben wird. HTTP / 1.1-Anwendungen müssen einen Connection: close-Header explizit zu einer Nachricht hinzufügen, um anzugeben, dass eine Verbindung geschlossen werden soll, nachdem die Übertragung abgeschlossen ist. Dies ist ein wesentlicher Unterschied zu früheren Versionen des HTTP-Protokolls, bei denen Keep-Alive-Verbindungen entweder optional oder vollständig nicht unterstützt wurden.

Ein HTTP / 1.1-Client geht davon aus, dass eine HTTP / 1.1-Verbindung nach einer Antwort geöffnet bleibt, es sei denn, die Antwort enthält einen Connection: close-Header. Clients und Server können jedoch weiterhin inaktive Verbindungen jederzeit schließen. Nach dem Senden eines Connection: close-Request-Headers kann der Client keine weiteren Anforderungen für diese Verbindung senden. Clients müssen daher in der Lage sein, Anforderungen erneut zu versuchen, wenn die Verbindung geschlossen wird, bevor sie die gesamte Antwort erhalten haben.

Ein einzelner Benutzerclient sollte höchstens zwei dauerhafte Verbindungen zu einem beliebigen Server oder Proxy aufrechterhalten, um eine Überlastung des Servers zu verhindern. Da Proxys möglicherweise mehr Verbindungen zu einem Server benötigen, um gleichzeitig mehrere Benutzer zu unterstützen. Wenn X Benutzer versuchen, auf die Server zuzugreifen, sollte ein Proxy höchstens 2X-Verbindungen zu einem beliebigen Server oder übergeordneten Proxy verwalten.

Alle modernen Browser verwenden persistente Verbindungen, vorausgesetzt, der Server erlaubt die Aufrechterhaltung der Verbindungen. Eine Überprüfung der Anwendungs- und Proxy-Server-Konfigurationen kann erforderlich sein, um sicherzustellen, dass sie Keep Alive unterstützen und Webseiten von der besseren Performance profitieren können.

 

Sie haben noch Fragen?

Kontaktieren Sie uns

Kostenloser SEO-Check der OSG