Existe-t-il une méthode sous Linux pour vérifier combien de ports éphémères restent disponibles? Je vois parfois des erreurs "Adresse déjà utilisée" suite à un manque de ports éphémères. Un redémarrage de la machine résoudra cela, mais il serait préférable de l'attraper avant qu'il ne se produise.
17
Réponses:
La plage de ports éphermiques est spécifiée dans
/proc/sys/net/ipv4/ip_local_port_range
. Vous pouvez probablement l'étendre pour qu'il fonctionne de 16k à 64k.Vous pouvez voir le nombre de connexions ouvertes utilisant
netstat -an
. Les sockets peuvent être bloqués dans l'état TIME_WAIT si vous ouvrez et fermez un grand nombre de connexions. Dans certains endroits, cela est inévitable, mais vous devrez peut-être déterminer si vous avez besoin d'un pool de connexion si tel est le cas.Si TIME_WAIT est le problème, vous pouvez définir
net.ipv4.tcp_tw_reuse
/net.ipv4.tcp_tw_recycle
pour accélérer le renouvellement de la connexion.la source
net.ipv4.tcp_tw_recycle
été supprimé dans Linux 4.12/proc/sys/net/ipv4/ip_local_port_range
doit s'agir d'un sous-ensemble de 49152-65535. Ainsi, la réduction de l'extrémité inférieure de la plage à un niveau inférieur à 49152 présente un certain risque.Gardez à l'esprit que cette limite s'applique par tuple unique (IP source, IP homologue, port homologue). Par conséquent, vous devrez regrouper la sortie de
netstat
/ss
par chacun de ces tuples et vérifier à quel point chaque groupe est proche de la limite de connexion.Cet article explique comment vous pouvez effectuer ce regroupement plus en détail. Pour vérifier à quel point chaque groupe est proche de la limite dans Ruby, vous pouvez traiter la
ss
sortie comme:la source