Hallo
da unter anderem MYSENSORS Netzwerk gateways nicht besonders gesprächig sind, fällt deren Ausfall (Netzwerkverbindung tot) möglicherweise erst sehr spät auf. Die Standard-Werte für KeepAlive sind unter Unix sehr hoch gewählt und nachdem ein Socket geöffnet ist, wird das erste KeepAlive Paket erst nach zwei Stunden gesendet.
Deshalb mein Vorschlag die Socket Optionen anzupassen:
--- DevIo.pm.org 2017-01-03 07:16:26.302041479 +0100
+++ DevIo.pm 2017-01-03 07:27:41.400313025 +0100
@@ -322,6 +322,12 @@
delete($hash->{NEXT_OPEN});
$conn->setsockopt(SOL_SOCKET, SO_KEEPALIVE, 1) if(defined($conn));
+ #adjust keep_alive strategy for this socket connection
+ #with linux the defaults are too large (seconds and retries): KEEPIDLE=7200 (2 hours!), KEEPINTVL=75, KEEPCNT=9
+ $conn->setsockopt(IPPROTO_TCP, TCP_KEEPIDLE, 300); #seconds to wait before first keep_alive packet send
+ $conn->setsockopt(IPPROTO_TCP, TCP_KEEPINTVL, 75); #seconds interval between keep_alive packets after first packet
+ $conn->setsockopt(IPPROTO_TCP, TCP_KEEPCNT, 3); #attempts before conn is considered being broken
+
} else {
Log3 $name, 3, "Can't connect to $dev: $!" if(!$reopen && $!);
$readyfnlist{"$name.$dev"} = $hash;
Was haltet Ihr davon?
~Josef