ASP classique application connaît SQL Server “délais d'attente” et “SQL Server n'existe pas ou accès refusé”

Nous avons été voir à ce problème pour un certain temps maintenant et je suis vraiment d'essayer d'envelopper ma tête autour de ce qui en est la cause.

Une couple de fois par jour, nous allons voir les périodes où les pages web de commencer à jeter "[Microsoft][ODBC SQL Server Driver]Délai d'attente expiré", puis peu de temps après, les pages se lancer des "[Microsoft][ODBC SQL Server Driver][DBNETLIB]SQL Server n'existe pas ou son accès est refusé."

Nous avons beaucoup de différentes applications qui se connectent à ce serveur de base de données. Il est en moyenne autour de 2 500 connexions simultanées de traitement en moyenne 10 000 transactions par seconde. La plupart de nos demandes n'ont pas de problèmes que ce soit, les problèmes semblent seulement d'arriver sur le serveur web. (Peut-être que c'est lié à la connexion de mise en commun?)

Je ne suis pas sûr de ce que d'attribuer ce problème. Le serveur SQL en question est largement maîtrisé pour le travail qu'il fait, et est équipé de licence par processeur. Donc, je ne pense pas que nous sommes à la recherche à une licence/problème de performance.

J'ai pensé que peut-être il y avait un problème de connectivité IP, alors j'ai changé la ConnectionString pour utiliser l'adresse IP et de couru quelques longue pings. Je me suis 0 paquets perdus entre le serveur Web et le serveur de Base de données.

L'ASP chaîne de connexion ressemble maintenant à ceci:

Provider=MSDASQL; Driver={SQL Server}; Server=10.0.100.100; Database=DBName; UID=WebUserName; PWD=WebUserPassword; ConnectionTimeout=15; CommandTimeout=120;

L'utilisateur est un non-utilisateur domaine de connexion utilisant l'authentification Sql Server. Donc je ne pense pas que c'est un domaine lié à la question. J'ai vérifié le journal de SQL server fichiers et n'avons rien trouvé qui que ce soit correspondant à ces incidents.

J'ai trouvé une autre question stackoverflow décrivant un comportement similaire, mais sans résolution.

Les Détails:

  • Web Serveur: Windows 2003 SP2, IIS 6.
  • Serveur de base de données: Microsoft SQL Server 9.0.4035

Quelqu'un a vu/résolu ce type de problème? Quelqu'un aurait-il des suggestions à l'endroit où je dois chercher la prochaine?

Merci!

-Zorlack

MODIFIER

Quelqu'un peut-il me dire quelle est la meilleure pratique consiste pour l'exécution de requêtes sql en classique à charge élevée asp? Voulons-nous essayer de tirer parti de regroupement de connexion?

En regardant le code, beaucoup ressemble à ceci:

Set objCn = Server.CreateObject("ADODB.Connection") 
objCn.Open(Application("RoConnStr"))
'do some stuff
objCn.Close
Set objCn = Nothing

Solution (par ScottE conseils)

Cet article décrit, à un tee-shirt, mon problème. J'ai fait le changement de registre et ensuite redémarré le serveur.

Problème Résolu!

Merci, j'ai eu ce problème aussi. On dirait le regroupement de connexion est un leurre. Quand je l'ai testé avec et sans regroupement de connexion, le serveur toujours créé des milliers de connexions TCP en état TIME_WAIT. Il semble que le pool de connexion vous permet de ré-utiliser les objets de connexion, mais il s'agit parfois de créer de nombreuses nouvelles connexions TCP entre les serveurs.

OriginalL'auteur zorlack | 2010-06-22