Seltsam intermittierende SQL-Verbindungsfehler, Fehlerbehebung beim Neustart, kommen zurück nach 3-5 Tagen (ASP.NET)

StackOverflow https://stackoverflow.com/questions/428846

Frage

Aus irgendeinem Grunde all 3-5 Tage unseres Web-App die Möglichkeit, eine Verbindung mit dem db mit dem folgenden Fehler zu öffnen verliert, ist das Merkwürdige, dass alles, was wir tun müssen, ist, den Behälter neu zu starten (es ist ein VPS) und es ist die normale Funktionalität wiederhergestellt. Dann ein paar Tage später oder so passiert es wieder. Hat jemand schon einmal ein solches Problem gehabt? Ich habe eine Menge von anonymen Anmeldungen im Sicherheitsprotokoll in der Mitte der Nacht von unserem AD-Server bemerkt, die seltsam ist, und auch einige von einer IP in Amsterdam. Ich bin nicht sicher, wie zu sagen, was genau sie bedeuten oder, wenn sie verwandt ist oder nicht.

Server Error in '/ntsb' Application.
A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server)
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.Data.SqlClient.SqlException: A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server)

Source Error:

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


Source File: C:\Inetpub\wwwroot\includes\connection.ascx    Line: 13

Stack Trace:

[SqlException (0x80131904): A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server)]
   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


Version Information: Microsoft .NET Framework Version:2.0.50727.3053; ASP.NET Version:2.0.50727.3053 
War es hilfreich?

Lösung

Die Anzahl der zulässigen Verbindungen zu SQL Server ist eine feste Ressource. Es klingt wie Sie Code irgendwo haben, die nicht endet es ist Verbindung richtig, und nach einer gewissen Zeit können Sie keine weiteren neuen öffnen.

Andere Tipps

Wir standen vor kurzem ein ähnliches Problem in unserer Produktionsumgebung und nach vielen Runden „DebugDiag“ ging und die Analyse der Deponien wir zu dem Schluss gekommen, dass ein weitgehend fragmentierten großen Objektheap dies verursacht wurde. Ref http://msdn.microsoft.com/en-us/magazine/cc534993. aspx . Kurz gesagt, könnte Ihre Anwendung zu wenig Arbeitsspeicher ausgeführt hat und nicht genug nebeneinanderliegenden Raum links zu öffnen Verbindungen hat. Sie können mit VMMap http://technet.microsoft.com/en-us/sysinternals/dd535533 zum Zweck verfügbaren freien Speicherplatz zu identifizieren. Recyceln Sie Ihre AppPools regelmäßig? AppPool recycle Tränen aus der Anwendung und entlastet somit jede Hilfe Speicher, lösen alle damit zusammenhängende Fragen.

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

„Ich habe viele anonymen Anmeldungen im Sicherheitsprotokoll in der Mitte der Nacht von unserem AD-Server bemerkt, die seltsam ist, und auch einige von einer IP in Amsterdam.“

klingt, als ob Sie könnte möglicherweise jemand zu brechen in Ihr System versucht, und vielleicht das sind die Verbindungen, die nicht schließen. Ich mag den Vorschlag der Verwendung von Perfmon und Profiler, das Problem zu sehen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top