Já o processo morto continua a consumir tráfego líquido

1

Estou usando o Windows 7, Ruby 1.9.2, SciTE, Outpost Pro 2009 e NetBalancer.

Encriptando programas Ruby no SciTE Pressiono Ctrl+Break para eliminá-los. Desta forma, é projetado para ser fácil, rápido e confiável. Mas agora eu escrevi um tipo de programa que nunca escrevi antes e encontrei um problema.

O programa agrupa um site em 10 tópicos ( Thread.new ) com open-uri . Cada thread faz o download de um pequeno arquivo. Alguns URLs têm Timeout::Error .
Quando pressiono Ctrl+Break , processo ruby.exe dies (também posso ver no Gerenciador de Tarefas) e o SciTE está pronto para o próximo F5 . O Posto Avançado também não me mostra nenhuma atividade líquida.
MAS! O ícone do NetBalancer na bandeja mostra que minha rede está carregada no máximo - 512kbps. Quando eu abro o NetBalancer eu vejo a linha verde, mostrando a carga de rede, mas não há nenhum processo de comer o tráfego na lista, então eu não sei o que devo matar para pará-lo. E quando eu faço netstat -o , vejo isso:

  TCP    192.168.1.2:53629      server2:http           FIN_WAIT_1      916
  TCP    192.168.1.2:53630      server2:http           FIN_WAIT_2      916
  TCP    192.168.1.2:53631      server2:http           FIN_WAIT_2      916
  TCP    192.168.1.2:53632      server2:http           FIN_WAIT_2      916
  TCP    192.168.1.2:53648      server2:http           FIN_WAIT_2      916
  TCP    192.168.1.2:53664      server2:http           FIN_WAIT_2      916
  TCP    192.168.1.2:53667      server2:http           FIN_WAIT_2      916
  TCP    192.168.1.2:53676      server2:http           FIN_WAIT_2      916

Parece que eu tenho que usar apenas taskkill , mas:

C:\Windows\system32>taskkill /PID 916
Ошибка: Не удается найти процесс "916".

(tradução: não é possível encontrar o processo "916")

O processo invisível continua a comer todo o meu canal da rede por vários minutos e depois pára. Conexões em netstat também desaparecem. Mas eu ainda não entendo como, por que e quando parar, porque a tarefa completa de download deve durar quase uma hora. Então morre espontaneamente?
De qualquer forma eu quero ter uma maneira de matar este net-comedor invisível .

    
por Nakilon 27.09.2011 / 12:56

1 resposta

2

Quando o processo é encerrado, o Windows solicita que o servidor feche a conexão TCP enviando um pacote FIN. No entanto, desde que sua conexão está sendo usada em 100%, o pacote FIN leva algum tempo para chegar ao servidor. Durante esse tempo, o servidor não sabe sobre a morte do processo e envia dados ainda mais para você. O estado FIN-WAIT significa que seu computador enviou um pacote FIN e está aguardando uma confirmação de FIN + ACK.

O processo já está morto; você está vendo seu PID porque o PID é armazenado junto com outros parâmetros de conexão TCP e a conexão ainda não foi fechada.

    
por 27.09.2011 / 14:32