In einigen Fällen erkennt der OES Linux-Server nicht einen Client-Host, der aufgrund des Ausfalls einer Arbeitsstation oder eines Stromausfalls unerwartet heruntergefahren wurde. Die Verbindung bleibt jedoch für die Dauer der standardmäßigen Zeitüberschreitung (etwa 12 bis 15 Minuten) bestehen, bevor sie gelöscht wird. Wenn Sie die Anzahl der gleichzeitigen Verbindungen auf 1 gesetzt haben, sollten Sie die Verbindung entweder manuell beenden oder die geschätzte Zeitüberschreitung abwarten, bevor Sie sich erneut anmelden. Diese Situation tritt ein, wenn der Überwachungsprozess die Verbindung nicht sauber schließt. Wenn die Anzahl der gleichzeitigen Verbindungen auf 1 festgelegt ist und die Verbindung vom Überwachungsprozess nicht gelöscht wird, können sich die Benutzer nicht anmelden. Der Linux-Kernel bietet drei Parameter, mit denen festgelegt werden kann, wie keepalive-Muster von der Serverseite aus arbeiten. Stellen Sie mit diesen Parametern eine Behelfslösung auf TCP-Ebene bereit.
Die Parameter stehen im Verzeichnis /proc/sys/net/ipv4/ zur Verfügung.
tcp_keepalive_time: Bestimmt die Frequenz, mit der TCP-keepalive-Pakete gesendet werden, um eine derzeit nicht verwendete Verbindung aktiv zu erhalten. Dieser Wert wird nur verwendet, wenn keepalive aktiviert ist.
Für tcp_keepalive_time wird ein ganzzahliger Wert in Sekunden angegeben. Der Standardwert ist 7200 Sekunden bzw. 2 Stunden. Dies ist für die meisten Hosts gut geeignet und beansprucht die Netzwerkressourcen nicht zu stark. Wenn Sie einen zu niedrigen Wert festlegen, werden die Netzwerkressourcen mit unnötigem Datenverkehr belastet.
tcp_keepalive_probes: Bestimmt die Frequenz, mit der TCP-keepalive-Muster gesendet werden, bevor eine unterbrochene Verbindung entschieden wird.
Für tcp_keepalive_probes wird ein ganzzahliger Wert festgelegt. Je nach den Werten für tcp_keepalive_time und tcp_keepalive_interval empfiehlt sich ein Wert unter 50. Standardmäßig wird die Anwendung nach 9 Mustern über die unterbrochene Verbindung informiert.
tcp_keepalive_intvl: Bestimmt die Dauer der Antwort für jedes keepalive-Muster. Dieser Wert ist wichtig für die Berechnung der Dauer, nach der die Verbindung eine keepalive-Unterbrechung erfährt.
Für tcp_keepalive_intvl wird ein ganzzahliger Wert, standardmäßig 75 Sekunden, festgelegt. 9 Muster zu jeweils 75 Sekunden dauern also etwa 11 Minuten. Anhand der standardmäßigen Werte für die Variablen tcp_keepalive_probes und tcp_keepalive_intvl kann geschätzt werden, nach welcher Zeitdauer bei einer Verbindung eine keepalive-Zeitüberschreitung auftritt.
Bearbeiten Sie diese drei Parameter so, dass kein übermäßiger zusätzlicher Netzwerkverkehr generiert, das Problem jedoch behoben wird. Eine Änderung könnte wie folgt aussehen (3-minütige Erkennungsdauer):
tcp_keepalive_time set -120
tcp_keepalive_probes - 3
tcp_keepalive_intvl - 20
HINWEIS:Ändern Sie die Parametereinstellungen mit Vorsicht und vermeiden Sie das Einstellen bereits gültiger Verbindungen.
Die Einstellungen sind sofort nach dem Ändern der Dateien wirksam. Es ist nicht erforderlich, Services neu zu starten. Die Einstellungen sind jedoch nur für die aktuelle Sitzung gültig. Nach dem Neubooten des Servers werden die Einstellungen auf die standardmäßigen Einstellungen zurückgesetzt.
Gehen Sie folgendermaßen vor, um die Einstellung dauerhaft (auch nach einem erneuten Booten) anzuwenden:
Fügen Sie die folgenden Einträge zu /etc/sysctl.conf hinzu.
net.ipv4.tcp_keepalive_time=120
net.ipv4.tcp_keepalive_probes=3
net.ipv4.tcp_keepalive_intvl=20
Diese Einstellungen werden nur empfohlen, wenn alle Clients und Server über LAN verbunden sind.