1 votes

nginx détecte les clients morts

Normalement, lorsque vous retirez le câble réseau d'un périphérique réseau (ce qui simule une chute sur le réseau, donc une déconnexion obscure), les prises sous-jacentes ne détectent pas de déconnexion (du moins nos unités ne le font pas) et nous utilisons donc le maintien en vie pour interrompre la connexion et la reconnecter.

Toutes les unités utilisent une interrogation horaire du serveur nginx. Ma question est donc la suivante :

Si l'unité ne détecte pas de déconnexion de câble (et probablement 100 autres situations sur le réseau), alors nginx ne déconnecte pas non plus le socket et ce socket reste ouvert ?

Pour combien de temps ?

Doit-on utiliser du côté de nginx aussi tcp keep alive vers le client ? Comment ?

2voto

Tero Kilkanen Points 32968

Vous avez besoin de TCP keepalive pour détecter de telles pannes. La socket n'est qu'une abstraction, et la socket ne se ferme que lorsque la transmission de paquets dans la connexion échoue.

Dans le cas d'une interrogation longue, il n'y a pas de transmission de paquets, et la machine d'état TCP ne peut donc pas réagir à un événement de perte de paquets.

Vous devez donc activer la fonction TCP keepalive sur la pile réseau :

sysctl -w net.ipv4.tcp_keepalive_time = 600
sysctl -w net.ipv4.tcp_keepalive_intvl = 60
sysctl -w net.ipv4.tcp_keepalive_probes = 5

La première valeur indique la durée d'inactivité de la connexion avant l'envoi d'une sonde keepalive.

La deuxième valeur indique la fréquence d'envoi de la sonde keepalive une fois que l'envoi est déclenché.

La dernière valeur indique le nombre de paquets de sonde qui doivent échouer avant que la connexion ne soit considérée comme rompue.

En sysctl ne modifie que la configuration en cours d'exécution. Vous devez vous référer à la documentation de votre distribution pour savoir comment la rendre persistante.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X