Estamos enfrentando um tempo limite de login intermitente expirado em nosso aplicativo após a migração de um SQL Server 2008 R2 / W2k8 R2 físico autônomo para um VMWare SQL Server 2014 / Win 2012 R2.
Está acontecendo cerca de 5 vezes por dia, por isso é difícil solucionar problemas.
Mensagem de Falha
Erro: Microsoft SQL Server Native Client 10.0: não é possível concluir o processo de login devido ao atraso na resposta de pré-login.
Erro: Microsoft SQL Server Native Client 10.0: o tempo limite de login expirou.
Mais detalhes
- Tenho certeza de que
sp_configure
são os mesmos em ambos os casos. - Temos menos cpu em comparação com o servidor anterior, mas Max Worker Threads está OK.
- Quando eu estava monitorando as conexões localmente no SQL Server, ele estava funcionando bem ao mesmo tempo em que o tempo limite de login expirou do aplicativo.
- Configurar o tempo limite de consulta remota não resolverá meu problema aqui.
- Estamos usando a unidade NIC virtual VMXNET3.
Estou aqui respondendo minha própria pergunta para ajudar aqueles que estão passando pelo mesmo comportamento. Depois de muitas observações e experimentos com pesquisas na internet, encontrei a solução para esse problema seguindo as próximas etapas. Certifique-se de testar tudo antes de ir para a produção.
Desative os recursos do TCP Chimney no servidor de aplicativos SQL Server e Client:
Desabilite os recursos TCPChimney e Offload nos registros de nível do sistema.
Você pode fazer isso executando o comando
"Netsh int ip set chimney DISABLED"
no prompt de comando. Mas você pode fazer isso manualmente.Vá para o registro
"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters"
uma. Clique duas vezes na entrada de registro EnableTCPChimney. Se alguma entrada não estiver presente, crie-a clicando com o botão direito do mouse no espaço em branco e clique em Criar DWORD (32 bits).
b. Na caixa de diálogo Editar valor DWORD, digite 0 na caixa Dados do valor e clique em OK.
c. Clique duas vezes na entrada de registro EnableRSS.
d. Na caixa de diálogo Editar valor DWORD, digite 0 na caixa Dados do valor e clique em OK.
e. Clique duas vezes na entrada de registro EnableTCPA.
f. Na caixa de diálogo Editar valor DWORD, digite 0 na caixa Dados do valor e clique em OK.
g. Crie a chave de registro “SynAttackProtect” e – Na caixa de diálogo Editar valor DWORD, digite 0 na caixa Dados do valor e clique em OK.
h. Reinicie o servidor.
uma. Clique em Iniciar, em Executar, digite ncpa.cpl e clique em OK.
b. Clique com o botão direito do mouse em um objeto de adaptador de rede e clique em Propriedades.
c. Clique em Configurar e, em seguida, clique na guia Avançado.
d. Na lista Property, clique em Receive Side Scaling, clique em Disable na lista Value e, em seguida, clique em OK.
e. Na lista Propriedade, clique em Descarregamento de TCP/IP, clique em Desabilitar na lista Valor e clique em OK.
f. Repita as etapas 2 a 5 para cada objeto de adaptador de rede.
eu. Descarregar soma de verificação de recebimento de IP
ii. Descarregar receber soma de verificação TCP
iii. Descarregar segmentação TCP
iv. Descarregar soma de verificação de transmissão de IP
v. Descarregar soma de verificação de transmissão de TCP
Artigos relacionados:
Informações sobre os recursos TCP Chimney Offload, Receive Side Scaling e Network Direct Memory Access no Windows Server 2008: http://support.microsoft.com/kb/951037
Mensagem de erro quando um aplicativo se conecta ao SQL Server em um servidor em execução Windows Server 2003: "Erro de rede geral", "Falha no link de comunicação" ou "Erro no nível de transporte": http://support.microsoft.com/kb/942861
Em relação ao impacto no desempenho:
TCP Chimney Offload – Possíveis impactos de desempenho e simultaneidade nas cargas de trabalho do SQL Server: http://blogs.msdn.com/b/psssql/archive/2008/10/01/windows-scalable-networking-pack-possible-performance-and- concurrency-impacts-to-sql-server-workloads.aspx
TCP TIME-WAIT Delay & MaxUserPort :
As seguintes alterações precisam ser feitas nas máquinas de onde nos conectamos ao SQL Server a partir dos aplicativos clientes. Adicione isso em seus servidores de aplicativos/web universalmente.
5. TCP TIME-WAIT Delay:
Defina a chave de registro TcpTimedWaitDelay que está disponível em
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
30 segundos.Se a chave do registro não estiver presente, crie-a e defina-a com o valor que sugerimos acima.
6. MaxUserPort:
Defina a chave de registro MaxUserPort disponível em
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
65.000. Novamente, se a chave do registro não estiver presente, crie-a e defina-a com o valor que sugerimos acima.Consulte o seguinte artigo para obter mais informações:
TCP TIME-WAIT Delay: https://technet.microsoft.com/en-us/library/cc938217.aspx
MaxUserPort: https://technet.microsoft.com/en-us/library /cc938196.aspx