Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

A conexão SQL aguarda 15 segundos apesar do tempo limite de 3 segundos na string de conexão


Há um tempo limite antes que o hardware de rede relate o tempo limite de conexão para os drivers de rede, o que, por sua vez, notifica os programas que aguardam E/S de rede. Você pode verificar os tempos limite da camada de transporte via telnet servername 1433 (supondo que seu servidor sql esteja escutando na porta 1433).

Mas 3 segundos é muito curto para um processo inicializar as APIs de rede (supondo que seu aplicativo da Web esteja em seu próprio pool de aplicativos), envie a solicitação e aguarde o tempo limite do hardware. A atualização do BIOS/firmware/driver provavelmente não reduzirá muito o tempo de resposta.

Seria melhor realizar a conexão de forma assíncrona. Eu não sugiro usar EndInvoke para encerrar a chamada assíncrona, pois usuários azarados ainda podem precisar esperar 3 segundos completos para ver qualquer resposta quando o banco de dados estiver inativo. Talvez uma chamada Ajax seja melhor. Se você tiver muitos usuários acessando constantemente seu site, convém armazenar em cache o resultado da verificação de conectividade e atualizá-lo de maneira significativa para seus usuários.