Zum Hauptinhalt springen

Bleib am Leben

Bleib am Leben (Verbindungswartungsmechanismen) bezieht sich im Allgemeinen auf Kommunikationsverbindungen in einem Netzwerk, die nicht beendet, sondern beibehalten werden, bis die Verbindung vom Client oder Server unterbrochen wird. Das Hauptmerkmal, um sie am Leben zu erhalten, ist das Senden einer Nachricht ohne Inhalt zwischen einem Server und einem Client. Mit dieser Nachricht kann einer der Netzwerkbenutzer (Client oder Server) steuern, ob die Verbindung aufrechterhalten wird, und verhindern, dass sie abgebrochen wird. Wenn die Verbindung noch aktiviert ist, kann sie für den Datenaustausch verwendet werden.

Darüber hinaus werden Keep-Alive-Verbindungen als HTTP-Keep-Alive-Verbindungen, dauerhafte HTTP-Verbindungen und Wiederverwendung von HTTP-Verbindungen bezeichnet. Das HTTP 1.1-Protokoll unterstützt standardmäßig Keep-Alive und verwendet die HTTP-Pipeline auch zur Stapelverarbeitung von Anforderungen. HTTP 2 erweitert die Prozedur für dauerhafte Verbindungen um zusätzliche Optionen (z. B. Multiplexing).

Allgemeine Information

Die konventionelle Netzwerkkommunikation arbeitet nach einem Schema von Anfrage-Antwort. Ein Client fordert bestimmte Daten von einem Server an. Der Server antwortet, indem er das Vorhandensein der Daten bestätigt oder ablehnt und einen Fehlercode ausgibt. Sobald die Daten verfügbar sind, fordert der Client sie an, indem er eine neue Verbindung herstellt. Der Client interpretiert dann die Daten und präsentiert sie. Wenn es nicht vollständig ist, sind zusätzliche Daten erforderlich, um die Visualisierung abzuschließen. Hierfür wird eine neue Verbindung verwendet und manchmal entstehen unnötige Daten (Overhead-Zuschlag). Im HTTP 1.0-Protokoll wird für jede Anforderung immer eine neue TCP-Verbindung definiert. Dies bedeutet, dass jede Anfrage von einem Client ist individuell behandelt vom Server und, wenn möglich, individuell beantwortet.

Websites bestehen normalerweise aus unterschiedlichen Datenressourcen. Zum Beispiel HTML-Dateien, CSS-Skripte und Skripte, die sich auf Benutzerinteraktionen auswirken. Darüber hinaus sind Bilder oder Multimediadateien enthalten. Für HTTP 1.0 ist einfach a erforderlich separate Verbindung für jede Datei, die auch abgeschlossen werden muss. Dieser Ansatz ist besonders für größere Websites ineffizient, da die Netzwerkauslastung sehr hoch ist (Netzwerküberlastung).[1]. Um zu verhindern, dass viele einzelne Verbindungen wieder hergestellt und beendet werden, wurde die Netzwerkverwaltung durch dauerhafte Verbindungen und HTTP-Pipes erweitert. Für das HTTP 1.1-Protokoll ist es jetzt möglich, mehrere Anforderungen und Antworten pro Verbindung zu implementieren. Für jede Verbindung wird eine bestimmte Keep-Alive-Nachricht zwischen dem Client und dem Server gesendet, und Anforderungen können jetzt in der Pipeline gespeichert werden

Wie funktioniert es

Die meisten Server können so konfiguriert werden, dass sie "Keep-Alive" unterstützen.[2]. Auf der Clientseite können die am häufigsten verwendeten Browser bereits dauerhafte Verbindungen ermitteln. Dies ist jedoch eine Frage der Konfiguration auf der Serverseite. Je nach Technologie und verwendeter Programmiersprache unterscheiden sich die notwendigen Änderungen geringfügig in Syntax und Semantik. Für einen Apache-Server kann Keep-Alive in der Konfigurationsdatei "httpd.conf" zugelassen werden. Drei Eigenschaften sind besonders wichtig:[3]

  • Bleib am Leben: Mit dieser Eigenschaft können die Ein- und Ausschaltwerte eingegeben werden. Für HTTP 1.1 ist dies der Standardwert.[4]
  • MaxKeepAliveRequests: Diese Eigenschaft legt die maximal möglichen Anforderungen pro Verbindung fest. Ein Wert zwischen 50 und 100 ist normalerweise ausreichend. Dieser Wert hängt jedoch von der Größe des Webprojekts oder der Anzahl der Dateien in einem Webportal ab.
  • KeepAliveTimeout: Wenn der Server keine Anforderungen empfängt, ist er inaktiv und behält die Verbindung bei, bis er abgebrochen wird. Die Eigenschaft timeout begrenzt die Zeit, die der Server auf eine neue Anforderung warten muss. Etwa 10 Sekunden werden als ideal angesehen, aber die Wartezeit für stark frequentierte Websites kann länger sein.

Wenn die entsprechenden Eigenschaften und Werte in die Serverkonfiguration eingegeben werden, sendet der Apache-Server Antworten auf Anforderungen, die wie folgt aussehen:[5].

~ $ curl -I https://www.domain.com/file.html HTTP / 1.1 200 OK Verbindung: Keep-Alive Inhaltstyp: text / html; Zeichensatz = UTF-8 Datum: Do, 15. Januar 2015 16:45:29 GMT Inhaltslänge: 1845 Keep-Alive: Timeout = 10, max = 20 Server: Apache / 2.4.9 (Unix) PHP / 5.6.2

Das Prinzip ist für alle Server gleich. Der Client und der Server tauschen sehr kleine Nachrichten aus, die als "Keep-Alive-Nachrichten" bezeichnet werden. Sie ermöglichen es dem Client, verschiedene Dateien innerhalb einer Verbindung zu empfangen. Die Keep Alive-Nachricht wird über den HTTP-Header übertragen. Weist den Client oder Server an, dass die Verbindung aufrechterhalten werden soll. Jede Anfrage wird über eine Verbindung gestellt. Erst wenn einer der Netzwerkteilnehmer die Verbindung unterbricht, können verschiedene Anforderungen und Antworten nicht mehr ausgeführt werden.

Mit .HTACCESS am Leben bleiben

Wenn der Web-Operator keinen Zugriff auf die Serverkonfiguration hat, können die Änderungen auch in der htaccess-Datei vorgenommen werden. Die .htaccess-Datei überschreiben die Apache-Serverkonfiguration durch Aufzeichnen des folgenden Quellcodes:

Header-Set Verbindung bleibt am Leben

Der Header "Keep Alive" wird jeder Anfrage hinzugefügt. Es wird empfohlen, einen Test durchzuführen, um festzustellen, ob der Server die Änderung wie gewünscht implementiert. Genauere Definitionen von Zeitüberschreitungen und Spitzenanforderungen können jedoch nur in der entsprechenden Serverkonfigurationsdatei vorgenommen werden.

Relevanz für die Programmierung

Permanente Verbindungen werden standardmäßig im HTTP 1.1-Protokoll bereitgestellt. Das HTTP 2-Protokoll Erweitern Sie diesen Standard mittels eines Multiplexverfahrens, das die Datenübertragung weiter optimiert. Die Verwendung dieser Optionen und in welchem Umfang hängt von der technischen Infrastruktur und dem Kunden ab. Dies bedeutet, dass die Protokolle unterschiedliche Optimierungen zulassen, die Implementierung jedoch manchmal auf der Serverseite erfolgen muss.

Für bestimmte Webprojekte werden Keep-Alive-Header ausdrücklich empfohlen. Dies gilt für Websites mit vielen Dateien und umfangreichen Multimedia-Inhalten sowie für Online-Shops, die von HTTPS-Verbindungen abhängig sind. HTTPS ist bei der Dateiübertragung im Allgemeinen ressourcenintensiv, da die Verbindung mit SSL (Secure Socket Layer) verschlüsselt wird. Durch Hinzufügen eines "Keep Alive" -Headers kann die Ladegeschwindigkeit der Websites erheblich verkürzt werden, da Latenzen zwischen den verschiedenen Verbindungen vollständig vermieden werden und nur eine Verbindung mehrere Anforderungen und Antworten zulässt, die der Server gleichzeitig verarbeiten kann .

Da gleichzeitig Ressourcen wie die CPU (Zentraleinheit) und der Speicher erforderlich sind, um neue Verbindungen auf der TCP / IP-Schicht (die unterhalb der Anwendungsschicht des HTTP-Protokolls liegt) zu bestimmen, kann die CPU auch von freigegeben werden der Keep-Alive-Header. Der PC muss deutlich weniger TCP-Verbindungen konfigurieren[6].

Web-Links