Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

SQL-Verbindung wartet 15 Sekunden trotz 3-Sekunden-Timeout in der Verbindungszeichenfolge

Es gibt eine Zeitüberschreitung, bevor die Netzwerkhardware die Verbindungszeitüberschreitung an die Netzwerktreiber meldet, was wiederum die Programme benachrichtigt, die auf Netzwerk-E/A warten. Sie können Zeitüberschreitungen der Transportschicht über den Telnet-Servernamen 1433 überprüfen (vorausgesetzt, Ihr SQL-Server überwacht Port 1433).

Aber 3 Sekunden sind viel zu kurz für einen Prozess, um die Netzwerk-APIs zu initialisieren (vorausgesetzt, Ihre Webanwendung befindet sich in einem eigenen Anwendungspool), eine Anfrage zu senden und auf das Timeout der Hardware zu warten. Das Aktualisieren von BIOS/Firmware/Treiber wird die Reaktionszeit wahrscheinlich nicht so stark verkürzen.

Besser wäre es, die Verbindung asynchron durchzuführen. Ich schlage nicht vor, EndInvoke zu verwenden, um den asynchronen Aufruf zu beenden, da unglückliche Benutzer möglicherweise noch 3 volle Sekunden warten müssen, um eine Antwort zu sehen, wenn die Datenbank ausgefallen ist. Vielleicht ist ein Ajax-Aufruf besser. Wenn Ihre Website ständig von vielen Benutzern besucht wird, sollten Sie das Ergebnis der Konnektivitätsprüfung zwischenspeichern und auf eine für Ihre Benutzer sinnvolle Weise aktualisieren.