Existe um método no Linux para verificar quantas portas efêmeras ainda estão disponíveis? Ocasionalmente, vejo erros de "Endereço já em uso" como resultado da falta de portas efêmeras. Uma reinicialização da máquina resolverá isso, mas seria melhor capturá-la antes que isso aconteça.
17
Respostas:
O intervalo de portas epérmicas é especificado em
/proc/sys/net/ipv4/ip_local_port_range
. Você provavelmente pode estendê-lo para executar de 16k a 64k.Você pode ver o número de conexões abertas usando
netstat -an
. Os soquetes podem estar presos no estado TIME_WAIT se você estiver abrindo e fechando muitas conexões. Em alguns lugares, isso é inevitável, mas talvez seja necessário considerar se você precisa de um conjunto de conexões, se for o caso.Se o problema for TIME_WAIT, você pode definir
net.ipv4.tcp_tw_reuse
/net.ipv4.tcp_tw_recycle
para acelerar a rotatividade da conexão.fonte
net.ipv4.tcp_tw_recycle
foi removido no Linux 4.12/proc/sys/net/ipv4/ip_local_port_range
precisa ser um subconjunto de 49152-65535. Portanto, reduzir o limite inferior do intervalo para algo menor que 49152 tem um certo risco.Lembre-se de que esse limite se aplica por tupla exclusiva (IP de origem, IP de ponto, porta de ponto). Portanto, você precisará agrupar a saída de
netstat
/ss
por cada uma dessas tuplas e verificar a proximidade de cada grupo com o limite de conexão.Esta postagem explica como você pode fazer esse agrupamento com mais detalhes. Para verificar o quão perto cada grupo está do limite em Ruby, você pode processar a
ss
saída como:fonte