Como matar conexões tcp de zumbis do windows?

10

Estou executando o link beyondtv no xp, conectando-me a um host do beyondtv. O programa Link trava após cerca de 20 min e eu não tenho nenhuma correção para isso. Quando isso acontece, usando o tcpview, vejo que o host tem cerca de 200 conexões tcp zumbis que sobraram da conexão do Link. Eu não posso limpá-los, eles são do mesmo processo inexistente. As conexões permanecem até eu reiniciar o host. A reinicialização é a única maneira que encontrei para reconectar além do Link. Eu acho que há um bug no beyondtv que está causando isso, mas não consigo obter nenhuma resposta em seus fóruns. Mas, de qualquer forma, gostaria de saber se existe uma maneira de matar todas essas conexões.

Editar: na verdade, são cerca de 3000 conexões WAIT_CLOSE acumuladas após cerca de 40 min e, em seguida, o cliente morre. Se eu fechar o aplicativo do servidor, todos esses soquetes agora serão exibidos como pertencentes a um processo não existente no tcpview. Compreensível. Mas não há como fechá-los sem reiniciar?

    
por P a u l 07.11.2009 / 06:37

7 respostas

10

Você pode usar os Currículos da Nirsoft para monitorar e eliminar conexões.

Você pode automatizar a eliminação de um padrão de conexão usando a AutoHotKey.

    
por 08.11.2009 / 11:43
7

CLOSE_WAIT significa que a conexão foi fechada na outra extremidade.

Evidentemente, beyondtv não detecta essa condição e continua a enviar dados para o aplicativo na outra extremidade. A outra extremidade não pode enviar nada de volta por essa conexão, já que fechou o fim da conexão.

A solução é definir a entrada TcpTimedWaitDelay em

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\tcpip\Parameters

This entry determines the time that must elapse before TCP can release a closed connection and reuse its resources. This interval between closure and release is known as the TIME_WAIT state or 2MSL state. During this time, the connection can be reopened at much less cost to the client and server than establishing a new connection.

Por padrão, na minha máquina, isso contém o valor de -1, o que considero significar que as conexões fechadas nunca são liberadas, que é exatamente o comportamento que você está observando.

Sugiro que você defina o valor dessa entrada no intervalo permitido de 30 a 300 segundos. Suponho que 300 segundos = 5 minutos é totalmente suficiente para o seu caso, onde leva 40 minutos para congelar o computador.

    
por 15.11.2009 / 18:57
1

Você pode forçar o Windows a forçar o fechamento de todas as conexões TCP 1) desativando , e 2) reativando sua interface de rede. Se isso funcionar, você poderá rotear em lote as etapas a serem executadas quando necessário.

Eu procurei por alguma maneira de fazer isso via linha de comando, do utilitário netsh (ou similar), mas até agora não tive sorte.

Naturalmente, a melhor maneira de corrigir isso é corrigir o aplicativo corrompido. Verifique se você está experimentando a versão mais recente do aplicativo. continue incomodando os desenvolvedores; Se você já tiver a versão mais recente, tente localizar uma versão mais antiga do programa.

    
por 08.11.2009 / 08:02
1

Você provavelmente está recebendo estas sessões do CLOSE_WAIT porque do programa - não posso dizer se você suspeita delas como a causa, então só queria deixar isso claro.

Meu palpite é que eles não vão ficar pendurados para sempre; provavelmente apenas por 2 horas e 5 segundos. Pode parecer para sempre, eu sei. Você pode tentar sintonizar o KeepAliveTime (provavelmente requer uma reinicialização final) para sua conexão de rede em algo pequeno, como 5 minutos. Isso pode ajudá-los a desaparecer mais rapidamente, depois que o seu programa trava.

Ou, se você sabe que pode executar o programa de forma confiável por, digamos, 10 minutos por vez, poderá reiniciá-lo periodicamente. Não sei se alguma dessas soluções é útil para sua situação específica; Eu concordo com ~ quack que você deve abandonar a versão problemática do aplicativo o mais rápido possível.

    
por 08.11.2009 / 08:49
0

Veja se o beyondtv está gerando outro processo que mantém as conexões abertas. O Process Explorer mostrará se isso está acontecendo.

    
por 07.11.2009 / 06:54
0

É possível que exista um problema de firewall? Pode ser uma conexão incompleta sendo tentada e repetida.

Desativo todos os firewalls em ambas as máquinas e, se houver um roteador, também seu firewall interno.

    
por 08.11.2009 / 08:37
0

Tente corrigir o WinSock XP.

link

Trashes sua conexão e redefine-a de volta ao padrão. Eu sempre manter isso em um pen drive quando tudo mais falhar.

    
por 13.11.2009 / 20:27

Tags