Maison >Java >javaDidacticiel >Comment TCP Keep-Alive empêche-t-il les connexions de socket obsolètes ?
Oui, il existe un mécanisme de délai d'attente en place pour les connexions socket TCP appelé TCP Keep-Alive. Il empêche les connexions de socket de rester ouvertes indéfiniment, résolvant les scénarios dans lesquels un côté met fin à la connexion sans en avertir l'autre.
TCP Keep-Alive est configurable sous Linux via les éléments suivants propriétés :
Le processus consiste à envoyer des paquets ACK vides à intervalles réguliers jusqu'à ce qu'une réponse soit reçue. Si aucune réponse n'est reçue après un nombre spécifié de sondes, la connexion est interrompue.
Les paquets Keep-Alive sont facultatifs et peuvent ne pas être transmis de manière fiable. Cependant, dans la pratique, la plupart des systèmes d'exploitation et des fournisseurs de cloud prennent en charge ce mécanisme.
Configuration par socket (Java 11 et supérieur) :
Java 11 a introduit la possibilité de configurer les délais d'expiration TCP au niveau de chaque socket à l'aide de code natif.
Configuration à l'échelle du système :
Pour les anciennes versions de Java et sur d'autres systèmes d'exploitation, vous devrez peut-être appliquer une configuration de délai d'attente au niveau du système.
Linux :
# Echo commands to modify the values in /proc echo 180 > /proc/sys/net/ipv4/tcp_keepalive_time echo 3 > /proc/sys/net/ipv4/tcp_keepalive_probes echo 10 > /proc/sys/net/ipv4/tcp_keepalive_intvl
Mac OS X :
# Use sysctl to modify values sysctl -w net.inet.tcp.keepidle=180000 net.inet.tcp.keepintvl=10000 net.inet.tcp.keepcnt=3
Windows :
Clé de registre : HKEY_LOCAL_MACHINESystemCurrentControlSetServicesTCPIPParameters
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!