desvincular porta do programa com falha

4

Existe alguma maneira de desvincular uma porta que foi previamente vinculada por um programa que caiu em algum momento? Eu não gosto de reiniciar a máquina de desenvolvimento a cada hora.

    
por bam 08.07.2016 / 12:24

1 resposta

5

Quando um programa tem conexões, e depois que você mata o processo, um tempo limite pode ser definido para a porta demorar.

As variáveis do kernel envolvidas para alterar os tempos limite são:

De: Sintonização TCP do Linux

/proc/sys/net/ipv4/tcp_tw_reuse - This allows reusing sockets in TIME_WAIT state for new connections when it is safe from protocol viewpoint. Default value is 0 (disabled). /proc/sys/net/ipv4/tcp_fin_timeout - This setting determines the time that must elapse before TCP/IP can release a closed connection and reuse its resources. During this TIME_WAIT state, reopening the connection to the client costs less than establishing a new connection. By reducing the value of this entry, TCP/IP can release closed connections faster, making more resources available for new connections.

Você pode alterá-lo temporariamente com:

sudo sysctl -w sudo sysctl -w net.ipv4.tcp_fin_timeout=30
sudo sysctl -w sudo sysctl -w net.ipv4.tcp_tw_reuse=1

Ou para adicionar a configuração permanentemente, edite /etc/sysctl.conf e adicione:

net.ipv4.tcp_fin_timeout=30
net.ipv4.tcp_tw_reuse=1

Assim, será aplicado também na inicialização.

Para mais orientações, leia: Reduzir as conexões do soquete TIME_WAIT

No nível do aplicativo, você também pode especificar o SO_REUSEADDR ao abrir a meia por este post: um caso de terminação de programa">

Como dr01 afirma, outra alternativa é fazer manualmente:

service networking restart
    
por 08.07.2016 / 12:54