tcp_tw_reuse vs tcp_tw_recycle : pour l'utiliser (ou les deux)?
J'ai un site web et d'application qui utilisent un nombre important de connexions. Il a normalement environ 3 000 connexions statique ouvrir, et peuvent recevoir n'importe où à partir de 5 000 à 50 000 tentatives de connexion en quelques secondes, laps de temps.
J'ai eu le problème de l'exécution des ports à ouvrir de nouvelles connexions en raison de TIME_WAIT statut de sockets. Même avec tcp_fin_timeout réglé à une valeur faible (1 à 5), cela semble juste être la cause de trop de frais généraux/de ralentissement, et il serait encore de temps en temps être incapable d'ouvrir un nouveau socket.
J'ai regardé tcp_tw_reuse et tcp_tw_recycle, mais je ne suis pas sûr de ce qui devrait être le choix préféré, ou si vous utilisez les deux d'entre eux est une option.
- Avez-vous essayé option de socket SO_REUSEADDR déjà?
- Quel est le résultat de
cat /proc/sys/net/ipv4/ip_local_port_range
? si pas de 1024 à 65535, vous pouvez le changer avececho 1024 65535 > /proc/sys/net/ipv4/ip_local_port_range
Vous devez vous connecter pour publier un commentaire.
Selon La documentation de Linux, vous devez utiliser le TCP_TW_REUSE indicateur pour permettre la réutilisation des sockets en état TIME_WAIT pour les nouvelles connexions.
Il semble être une bonne option lorsque vous traitez avec un serveur web qui ont à gérer de nombreux court connexions TCP laissé dans un état TIME_WAIT.
Comme décrit ici, Le TCP_TW_RECYCLE pourrait causer des problèmes lors de l'utilisation de répartiteurs de charge...
MODIFIER (ajouter quelques avertissements 😉 ):
comme mentionné dans le commentaire de @raittes, les "problèmes lors de l'utilisation de répartiteurs de charge" est sur les serveurs exposés. Lorsque le recyclage est activé, le serveur ne peut pas distinguer les nouvelles connexions entrantes à partir de différents clients derrière le même périphérique NAT.
REMARQUE:
net.ipv4.tcp_tw_recycle
a été supprimé de Linux 4.12.SOURCE: https://vincent.bernat.im/en/blog/2014-tcp-time-wait-state-linux