sql >> Databasteknik >  >> RDS >> Sqlserver

SQL-anslutningen väntar 15 sekunder trots 3 sekunders timeout i anslutningssträngen

Det finns en timeout innan nätverkshårdvaran rapporterar anslutningstimeout till nätverksdrivrutinerna, som i sin tur meddelar programmen som väntar på nätverks-IO. Du kan verifiera transportlagrets timeouts via telnet-servernamn 1433 (förutsatt att din sql-server lyssnar på port 1433).

Men 3 sekunder är alldeles för kort för en process för att initiera nätverks-API:erna (förutsatt att din webbapp är i sin egen applikationspool), skicka förfrågan och vänta på att hårdvaran tar timeout. Att uppdatera BIOS/firmware/drivrutin kommer förmodligen inte att minska svarstiden så mycket.

Det skulle vara bättre att utföra anslutningen asynkront. Jag föreslår inte att du använder EndInvoke för att avsluta det asynkrona samtalet eftersom olyckliga användare fortfarande kan behöva vänta 3 hela sekunder för att se något svar när databasen är nere. Kanske är ett Ajax-samtal bättre. Om du har många användare som ständigt besöker din webbplats, kanske du vill cachelagra resultatet av anslutningskontroll och uppdatera det på ett sätt som är meningsfullt för dina användare.



  1. Varning:mysql_connect():Kan inte ansluta till lokal MySQL-server

  2. Använder COALESCE korrekt i WHERE-satsen

  3. Hur man skapar en PDF-rapport med PL/SQL

  4. Hur man konverterar en Unix-tidsstämpel till ett datum-/tidsvärde i SQL Server