Configurações TCP para VMs do Azure
As VMs do Azure se comunicam com a Internet pública usando NAT (Network Address Translation). Os dispositivos NAT atribuem um endereço IP público e uma porta a uma VM do Azure, permitindo que a VM estabeleça um soquete para comunicação com outros dispositivos. Se os pacotes param de fluir através desse soquete após um tempo específico, o dispositivo NAT mata o mapeamento e o soquete fica livre para ser usado por outras VMs.
Esse é um comportamento comum de NAT, que pode causar problemas de comunicação em aplicativos baseados em TCP que esperam que um soquete seja mantido além de um período de tempo limite. Existem duas configurações de tempo limite ocioso a serem consideradas, para sessões em um estado de conexão estabelecido:
entrada por meio do balanceador de carga do Azure. Esse tempo limite é padronizado para 4 minutos e pode ser ajustado em até 30 minutos.
saída usando SNAT (Source NAT). Este tempo limite está definido para 4 minutos e não pode ser ajustado.
Para garantir que as conexões não sejam perdidas além do limite de tempo limite, certifique-se de que seu aplicativo mantenha a sessão ativa ou que você possa configurar o sistema operacional subjacente para isso. As configurações a serem usadas são diferentes para sistemas Linux e Windows, conforme mostrado abaixo.
Para o Linux, você deve alterar as variáveis do kernel abaixo. net.ipv4.tcp_keepalive_time = 120 net.ipv4.tcp_keepalive_intvl = 30 net.ipv4.tcp_keepalive_probes = 8
Para o Windows, você deve alterar os valores do registro abaixo. KeepAliveInterval = 30 KeepAliveTime = 120 TcpMaxDataRetransmissions = 8
As configurações acima garantem que um pacote keep alive seja enviado após 2 minutos (120 segundos) de tempo ocioso e, em seguida, enviado a cada 30 segundos. E se 8 desses pacotes falharem, a sessão é descartada.
Fonte: link