Sun Cluster Entwicklerhandbuch Datendienste für Solaris OS

Verwenden von Keep-Alives

Auf der Serverseite schützt die Verwendung von TCP-Keep-Alives den Server vor der Verschwendung von Systemressourcen an einen heruntergefahrenen bzw. netzwerkpartitionierten Client. Wenn diese Ressourcen nicht bereinigt werden (auf einem Server, der lange genug aktiv bleibt), wachsen die verschwendeten Ressourcen schließlich unkontrolliert an, während die Clients abstürzen und neu starten.

Wenn die Client/Server-Kommunikation einen TCP-Strom verwendet, sollten sowohl der Client als auch der Server den TCP-Keep-Alive-Mechanismus aktivieren. Dies gilt auch für einzelne Nicht-HA-Server.

Andere verbindungsorientierte Protokolle können ebenfalls über einen Keep-Alive-Mechanismus verfügen.

Auf der Clientseite ermöglicht die Verwendung von TCP-Keep-Alives dem Client, eine Benachrichtigung zu erhalten, wenn eine Netzwerkressource ein Failover bzw. Switchover von einem realen Host zu einem anderen ausgeführt hat. Diese Übertragung der Netzwerkadressressource bricht die TCP-Verbindung ab. Wenn der Client allerdings das Keep-Alive nicht aktiviert hat, wird die Verbindungsunterbrechung möglicherweise nicht festgestellt, wenn die Verbindung zu diesem Zeitpunkt ruhte.

Angenommen, der Client wartet zum Beispiel auf die Antwort des Servers auf eine langfristige Anforderung, und die Anforderungsmeldung des Clients ist bereits beim Server angekommen und wurde auf TCP-Ebene bestätigt. In dieser Situation braucht das TCP-Modul des Clients die Anforderung nicht immer neu zu übertragen, und die Client-Anwendung ist blockiert, während sie die Antwort auf die Anforderung abwartet.

Womöglich sollte die Client-Anwendung zusätzlich zur Verwendung des TCP-Keep-Alive-Mechanismus ebenfalls in regelmäßigen Abständen ihr eigenes Keep-Alive ausführen, da der TCP-Mechanismus nicht in allen möglichen Grenzfällen perfekt funktioniert. Für die Verwendung eines Keep-Alive auf Anwendungsebene muss das Client/Server-Protokoll normalerweise einen Null-Vorgang unterstützen, oder zumindest einen effizienten schreibgeschützten Vorgang, wie einen Statusvorgang.