Wenn Sie auf Serverseite einen TCP-Keep-Alive-Mechanismus verwenden, wird der Server geschützt und es werden keine Systemressourcen für einen heruntergefahrenen (oder netzwerk-partitionierten) Client verschwendet. Wenn diese Ressourcen nicht auf einem Server bereinigt werden, der lange genug ausgeführt wird, wachsen die verschwendeten Ressourcen beim Absturz und Neustart von Clients endlos an.
Wenn für die Client-Server-Kommunikation ein TCP-Stream verwendet wird, 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.
Wenn auf Client-Seite TCP-Keep-Alive verwendet wird, wird der Client benachrichtigt, wenn für eine Netzwerkadressressource ein Failover oder Switchover von einem physikalischen Host an einen anderen stattfindet. 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 diesem Fall muss das TCP-Modul des Clients die Anforderung nicht ständig erneut übertragen. Außerdem ist die Client-Anwendung blockiert und wartet auf eine Antwort auf die Anforderung.
Die Client-Anwendung muss, wenn mögich, nicht nur den TCP-Keep-Alive-Mechanismus verwenden, sondern auch eigene Keep-Alives auf seiner Ebene durchführen. Der TCP-Keep-Alive-Mechanismus ist nicht in allen möglichen Grenzfällen die optimale Lösung. Wenn Sie einen Keep-Alive-Mechanismus auf Anwendungsebene verwenden, ist es in der Regel erforderlich, dass das Client-Server-Protokoll eine Null-Operation unterstützt oder zumindest eine effiziente schreibgeschützte Operation, wie z.B. eine Statusoperation.