Acho que você pode estar se deparando com o problema 2 * MSL . Veja como você diz:
$ netstat -na | grep 28960.*TIME_WAIT
Se você obtiver algo a partir disso, significa que a pilha de rede do kernel está aguardando duas vezes a vida útil máxima do segmento (MSL) para que os pacotes dispersos façam uma aparição antes de permitir que essa porta seja recolocada. O estado TIME_WAIT
é uma coisa boa.
Servidores que devem ser reiniciados na operação normal desabilitam o TIME_WAIT
handling definindo a opção SO_REUSEADDR
socket . Se você pesquisar os documentos do seu servidor de jogos, pode ser que haja uma opção que permita ativar esse comportamento.
Se não, e você não pode obter a fonte para modificar o servidor do jogo, sua única opção é aguardar que os TIME_WAIT
estados expirem, o que normalmente leva entre 30 e 120 segundos.
Aqui está um script que eu chamo de showwait
, que é útil com esse tipo de coisa:
#!/bin/sh
while [ true ]
do
netstat -na | grep WAIT
sleep 1
done
Você acabou de executá-lo e esperar que ele pare de colocar linhas a cada segundo. Então você Ctrl-C e seguir em frente com o que você precisa para fazer isso requer que não haja estados de espera.
Este script não é adequado para uso em um servidor ocupado, onde há estados de espera acontecendo o tempo todo, mas quando você está apenas esperando por um servidor com nada mais acontecendo para atingir quiescência, é perfeito. / p>