2014-04-24 4 views
1

J'ai implémenté une interaction socket - client en utilisant le module TCP d'akka. J'essaye de faire l'application pour détecter quand le support est fermé et libérer les ressources assignées au support de ce client.TCP IO La connexion socket Akka fermée n'est pas appelée quand Internet est en panne

Akka a affaire _: Case ConnectionClosed pour gérer ce genre de situation.Mais j'ai réalisé qu'il n'est pas appelé lorsque la connexion Internet est en panne.

Je ne pouvais pas trouver quelque chose pour détecter que la partie client du socket est déconnectée d'Internet.

Y at-il des détails qui me manquent?

Répondre

0

La connexion réseau en cours ne ferme pas nécessairement les sockets, le système d'exploitation est libre de les laisser ouverts en cas de rétablissement de la connexion réseau. Je crois que c'est vraiment un problème avec votre système d'exploitation, et non avec Akka. Les connexions TCP finiront par expirer, mais cela peut prendre des dizaines de minutes. Voir TCP Socket no connection timeout.

+1

Maintenant, je vois que c'était le problème principal. Je n'ai pas pensé que ce serait 2 heures pour une connexion à tomber. La solution pour moi était de changer les paramètres du système d'exploitation "echo 60>/proc/sys/net/ipv4/tcp_keepalive_time", "echo 5>/proc/sys/net/ipv4/tcp_keepalive_intvl ", "echo 3>/proc/sys/net/ipv4/tcp_keepalive_probes " –

Questions connexes