Einstellung der TCP-Keepalive-Zeit für Windows-Server
Problemstellung, Hintergrund
Über das TCP-Protokoll von TCP/IP können zuverlässige, verbindungsorientierte Netzwerkverbindungen zwischen einem Client und einem Server aufgebaut werden (eine solche Verbindung stellt z. B. jede Firebird-Session dar.)
Normalerweise wird beim Beenden des Clients die Verbindung ordentlich getrennt. Dadurch kann der Server die Verbindung auch auf seiner Seite beenden und die benötigten Ressourcen freigeben.
Bei einer schlagartigen Trennung der Verbindung (z. B. Client-Rechner wird plötzlich stromlos, Ausfall eines Netzwerk-Routers, Client-Programm wird per Task-Manager "abgeschossen") bekommt der Server die Trennung der Verbindung nicht automatisch mitgeteilt. Die Verbindung ist "halb offen". Der Server würde dies erst bemerken, wenn er etwas in diese halb offene Verbinung sendet, was ein Server aber normalerweise nicht tut.
Der Server sendet regelmäßig sog. "Keepalive"-Nachrichten aus. Diese werden vom Client bestätigt, ohne dass dafür Nutzdaten übertragen werden. Wenn der Client nicht antwortet, betrachtet der Server die Verbindung als halb-offen und schließt sie.
Das Intervall, in dem solche Keepalive-Nachrichten versendet werden ist bei Windows standardmäßig auf 2 Stunden eingestellt. Es kann also sehr lange dauern bis eine halb-offene Verbindung auch vom Server getrennt wird. In dieser Zeit kann eine durch die Verbindung belegte Lizenz nicht verwendet werden.