3 Stimmen

Seltsamer intermittierender SQL-Verbindungsfehler, der beim Neustart behoben wird und nach 3-5 Tagen wieder auftritt (ASP.NET)

Aus irgendeinem Grund verliert unsere Web-App alle 3-5 Tage die Fähigkeit, eine Verbindung zur Datenbank herzustellen, mit folgendem Fehler. Das Seltsame ist, dass wir einfach den Container neu starten müssen (es ist ein VPS), und er dann wieder normal funktioniert. Ein paar Tage später passiert es wieder. Hat jemand schon einmal ein solches Problem gehabt? Ich habe viele ANONYME LOGONs im Sicherheitsprotokoll mitten in der Nacht von unserem AD-Server bemerkt, was seltsam ist, und auch einige von einer IP in Amsterdam. Ich bin mir nicht sicher, wie ich herausfinden kann, was sie genau bedeuten oder ob es damit zusammenhängt oder nicht.

Serverfehler in der Anwendung "/ntsb".
Ein netzwerkbezogener oder instanzspezifischer Fehler ist beim Herstellen einer Verbindung mit SQL Server aufgetreten. Der Server wurde nicht gefunden oder war nicht erreichbar. Überprüfen Sie, ob der Instanzname korrekt ist und ob SQL Server so konfiguriert ist, dass Remoteverbindungen zulässig sind. (Anbieter: Named Pipes Provider, Fehler: 40 - Konnte keine Verbindung mit SQL Server herstellen)
Beschreibung: Ein unbehandelter Ausnahmefehler ist während der Ausführung der aktuellen Webanforderung aufgetreten. Bitte überprüfen Sie den Stapelüberlauf für weitere Informationen zum Fehler und wo er im Code entstanden ist.

Ausnahmedetails: System.Data.SqlClient.SqlException: Ein netzwerkbezogener oder instanzspezifischer Fehler ist beim Herstellen einer Verbindung mit SQL Server aufgetreten. Der Server wurde nicht gefunden oder war nicht erreichbar. Überprüfen Sie, ob der Instanzname korrekt ist und ob SQL Server so konfiguriert ist, dass Remoteverbindungen zulässig sind. (Anbieter: Named Pipes Provider, Fehler: 40 - Konnte keine Verbindung mit SQL Server herstellen)

Quellfehler:

Zeile 11:         
Zeile 12:         
Zeile 13:         dbConnection.Open()
Zeile 14:         
Zeile 15:        

Quelldatei: C:\Inetpub\wwwroot\includes\connection.ascx    Zeile: 13

Stapelüberlauf:

[SqlException (0x80131904): Ein netzwerkbezogener oder instanzspezifischer Fehler ist beim Herstellen einer Verbindung mit SQL Server aufgetreten. Der Server wurde nicht gefunden oder war nicht erreichbar. Überprüfen Sie, ob der Instanzname korrekt ist und ob SQL Server so konfiguriert ist, dass Remoteverbindungen zulässig sind. (Anbieter: Named Pipes Provider, Fehler: 40 - Konnte keine Verbindung mit SQL Server herstellen)]
   System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) +248
   System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj) +245
   System.Data.SqlClient.TdsParser.Connect(ServerInfo serverInfo, SqlInternalConnectionTds connHandler, Boolean ignoreSniOpenTimeout, Int64 timerExpire, Boolean encrypt, Boolean trustServerCert, Boolean integratedSecurity, SqlConnection owningObject) +475
   System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo, String newPassword, Boolean ignoreSniOpenTimeout, Int64 timerExpire, SqlConnection owningObject) +260
   System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(String host, String newPassword, Boolean redirectedUserInstance, SqlConnection owningObject, SqlConnectionString connectionOptions, Int64 timerStart) +2445449
   System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(SqlConnection owningObject, SqlConnectionString connectionOptions, String newPassword, Boolean redirectedUserInstance) +2445144
   System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, String newPassword, SqlConnection owningObject, Boolean redirectedUserInstance) +354
   System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection) +703
   System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnection owningConnection, DbConnectionPool pool, DbConnectionOptions options) +54
   System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject) +2414696
   System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject) +92
   System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject) +1657
   System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection) +84
   System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory) +1645687
   System.Data.SqlClient.SqlConnection.Open() +258
   ASP.includes_connection_ascx.getConnection() in C:\Inetpub\wwwroot\includes\connection.ascx:13
   ASP.default_aspx.Page_Load(Object sender, EventArgs e) in C:\Inetpub\wwwroot\Default.aspx:16
   System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +25
   System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +42
   System.Web.UI.Control.OnLoad(EventArgs e) +132
   System.Web.UI.Control.LoadRecursive() +66
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +2428

Versionsinformationen: Microsoft .NET Framework Version:2.0.50727.3053; ASP.NET Version:2.0.50727.3053

0 Stimmen

Wenn es in diesen Zustand gerät, können Sie den SQL-Server vom Server aus anpingen, auf dem der Code ausgeführt wird?

0 Stimmen

Gute Idee, das werde ich beim nächsten Mal ausprobieren, wenn es passiert.

0 Stimmen

Ich habe genau das gleiche Problem. Die Website funktioniert einwandfrei auf unserem Produktions- (non-VPS) Server, aber sie hat kürzlich angefangen, uns sporadisch diese Fehler auf unserem Staging- (VPS) Server zu geben. Ich denke, es muss sich um irgendein Ressourcenproblem handeln, da das Problem intermittierend ist und ein Neustart es für eine Weile lösen zu scheint. Haben Sie das jemals herausgefunden?

2voto

Joel Coehoorn Punkte 377088

Die Anzahl der zulässigen Verbindungen zum SQL-Server ist eine feste Ressource. Es scheint, dass Sie irgendwo Code haben, der seine Verbindung nicht ordnungsgemäß schließt, und nach einer gewissen Zeit keine neuen Verbindungen mehr geöffnet werden können.

1 Stimmen

Ich habe das schon mehr als ein paar Mal passieren sehen.

0 Stimmen

Das ist interessant, ich werde das überprüfen. Wir hatten jedoch diese Web-App auf einem früheren Server laufen und hatten nie dieses Problem. Es war erst nach der Migration auf diesen neuen virtuellen Server, dass das Problem begann. Also denke ich irgendwie, dass es nicht daran liegt...

0 Stimmen

Es könnte jedoch sein, dass Sie möglicherweise über weniger Ressourcen verfügen.

1voto

Chayan Punkte 11

Wir hatten kürzlich ein ähnliches Problem in unserer Produktionsumgebung und nach vielen Runden von "Debugdiag" und Analyse der Dumps kamen wir zu dem Schluss, dass ein weitgehend fragmentierter großer Objektheap dieses verursachte. Siehe http://msdn.microsoft.com/en-us/magazine/cc534993.aspx. Kurz gesagt, Ihre Anwendung könnte Speichermangel haben und nicht genügend zusammenhängenden Speicherplatz haben, um Verbindungen zu öffnen. Sie können VMMap http://technet.microsoft.com/en-us/sysinternals/dd535533 verwenden, um den verfügbaren freien Speicherplatz zu identifizieren. Werden Ihre AppPools regelmäßig zurückgesetzt? Das Zurücksetzen des AppPools zerstört die Anwendung und gibt jeglichen helfenden Speicher frei, löst dadurch also auftretende Probleme.

0voto

Sam Punkte 7422

Haben Sie versucht, grundlegende Informationen mit Perfmon und Profiler (Trace) zu sammeln, um zu sehen, wie viele Verbindungen hergestellt werden, Speicherstatistiken und andere interessante Dinge?

1 Stimmen

Nein, wie mache ich das? Ich werde googeln... Ich habe die Ereignisprotokolle in der Computerverwaltungskonsole verwendet.

0 Stimmen

OK Ich habe perfmon ausprobiert und es geöffnet, aber es waren keine Protokolle verfügbar.

0 Stimmen

Hast du Zugriff auf das SQL Management Studio? msdn.microsoft.com/de-de/library/ms187929.aspx Ich bin nicht vertraut mit den Möglichkeiten, die du in einer VPS-Situation hast. Perfmon - keine Protokolle verfügbar? Meinst du, es gibt keine Zähler zur Auswahl?

0voto

HLGEM Punkte 91543

Ich habe festgestellt, dass mitten in der Nacht viele ANONYME LOGONs im Sicherheitsprotokoll von unserem AD-Server auftreten, was merkwürdig ist, auch einige von einer IP in Amsterdam.

Es scheint, als ob jemand versucht, in Ihr System einzubrechen und möglicherweise sind dies die Verbindungen, die nicht geschlossen werden. Ich mag den Vorschlag, Perfmon und Profiler zu verwenden, um das Problem zu sehen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X