Erreur de connexion SQL intermittente étrange, correctifs au redémarrage, revient après 3-5 jours (ASP.NET)

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

Question

Pour une raison quelconque, tous les 3 à 5 jours, notre application Web perd la possibilité d'ouvrir une connexion à la base de données avec l'erreur suivante. Ce qui est étrange, c'est que tout ce que nous avons à faire est de redémarrer le conteneur (il s'agit d'un VPS) et il est restauré à la fonctionnalité normale. Puis quelques jours plus tard ou alors cela se reproduit. Quelqu'un a-t-il déjà eu un tel problème? J'ai remarqué beaucoup de LOGON ANONYMES dans le journal de sécurité au milieu de la nuit provenant de notre serveur AD, ce qui est étrange, et également à partir d'une adresse IP à Amsterdam. Je ne sais pas comment dire exactement ce qu'ils veulent dire, si c'est lié ou non.

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 
Était-ce utile?

La solution

Le nombre de connexions autorisées au serveur SQL est une ressource fixe. On dirait que vous avez du code quelque part qui ne ferme pas correctement sa connexion et qu'après une période donnée, vous ne pouvez plus en ouvrir de nouvelles.

Autres conseils

Nous avons récemment été confrontés à un problème similaire dans notre environnement de production et, après plusieurs cycles de "débogage" et d’analyse des décharges, nous sommes parvenus à la conclusion qu’un grand tas d’objets largement fragmenté en était la cause. Référez-vous à http://msdn.microsoft.com/en-us/magazine/cc534993. aspx . En bref, votre application a peut-être manqué de mémoire et n’a plus assez d’espace contigu pour ouvrir des connexions. Vous pouvez utiliser VMMap http://technet.microsoft.com/en-us/sysinternals/dd535533 dans le but d'identifier l'espace libre disponible. Recyclez-vous vos AppPools régulièrement? AppPool Recycler supprime l'application et libère toute la mémoire d'aide, ce qui résout tous les problèmes associés.

Avez-vous essayé de collecter des informations de base avec perfmon et profiler (trace) pour connaître le nombre de connexions établies, les statistiques sur la mémoire et d’autres éléments intéressants?

" J'ai remarqué beaucoup de LOGON ANONYMES dans le journal de sécurité au milieu de la nuit provenant de notre serveur AD, ce qui est étrange, et également à partir d'une adresse IP d'Amsterdam. "

On dirait que quelqu'un pourrait éventuellement essayer de pénétrer dans votre système et que ce sont peut-être les connexions qui ne se ferment pas. J'aime la suggestion d'utiliser perfmon et profiler pour voir le problème.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top