O Firewall do Windows está causando o afogamento de conexão

1

Eu tenho um aplicativo em execução no Win8.1 (ou WinServer2012, não faz diferença) que fornece dois ouvintes do servidor HTTP em processos separados (um usando HTTP.SYS via .NET HttpListener, o outro usando o Microsoft OWIN e auto-hospedado ASP.NET WebAPI).

O firewall foi configurado com as regras Permitir para permitir conexões aos dois servidores (via regras baseadas em porta TCP) para a sub-rede local.

Cada cliente faz três conexões LongPoll ao servidor (duas para HTTP.SYS e uma para OWIN), além de todas as conexões necessárias para carregar os recursos iniciais de HTML / JS / image. Está usando um navegador baseado em WebKit no Linux para fazer tudo.

Com um pequeno número de clientes, tudo funciona perfeitamente. (Em alguns casos, até um grande número de clientes também funciona perfeitamente; não consegui identificar um acionador específico para esse problema.)

Após conectar cerca de 12 desses clientes, alguns dos últimos têm problemas para se conectar ao servidor - eles apenas aguardam para se conectar sem aparentemente carregar nada (ou às vezes eles apenas carregam alguns dos recursos, por exemplo, eles se conectam a um servidor com êxito, mas não o outro). Uma vez que eles realmente obtenham uma conexão, eles tendem a continuar trabalhando, já que o navegador reutiliza as conexões existentes para solicitações subsequentes.

Observar com o Wireshark no servidor mostra que a solicitação HTTP é recebida na camada de rede, mas o aplicativo do servidor não a vê. A cada dois minutos uma Retransmissão TCP é vista da pilha de rede do cliente tentando reenviar a solicitação original. Após cerca de 15 minutos, o cliente desiste e relata a falha no aplicativo cliente, que é desconectado e reconectado; algumas vezes iniciando o ciclo de retransmissão novamente e algumas vezes funcionando perfeitamente.

O problema é reproduzível desconectando e reconectando fisicamente os cabos Ethernet em todos os dispositivos clientes - alguns passarão enquanto outros irão para os loops de Retransmissão como acima. Estranhamente, puxar a energia de todos os dispositivos clientes e, em seguida, iniciá-los simultaneamente, geralmente não aciona o problema.

A desativação do Firewall do Windows na máquina do servidor é exibida para resolver todos os problemas. Existe uma configuração em algum lugar que precisa ser alterada para resolver isso, mantendo o firewall ativado?

    
por Miral 05.07.2016 / 04:13

0 respostas