2009-08-19 5 views
1

mon application est développée sur asp classique, mais utilise aussi asp.net comme je migre l'application sur .Net. Son utilisation du serveur SQL en tant que base de données et hébergé sur le serveur Windows 2003.SQL server timeout

Maintenant, le problème est que l'application continue à fonctionner parfaitement bien pendant longtemps, mais après un certain temps, le serveur SQL donne une erreur de timeout et peut remplir n'importe lequel des demandes faites. Il n'est pas corrigé même lorsque je redémarre mon serveur SQL ou même IIS, en fin de compte je dois redémarrer mon serveur à chaque fois ce qui ne fait que résoudre le problème.

Une idée de ce qui pourrait causer le problème? Juste pour donner une idée, le site est utilisé par environ 300 personnes aux heures de pointe.

Une idée de ce qui pourrait causer le problème? Juste pour donner une idée, le site est utilisé par environ 300 personnes aux heures de pointe. Je ferme la connexion partout, mon code de fin sur chaque page ferme la connexion. Si une erreur se produit avant la page de fin, le gestionnaire d'attente ferme la connexion. Je suis donc sûr que la fermeture de la connexion n'est pas un problème. Et qu'il n'y a pas de connexion ouverte si je vois les logs de SQL. Notre serveur, une seule boîte, a SQL Server, IIS, iMail (notre serveur de messagerie). Après avoir redémarré SQL Server, cela n'a pas résolu le problème. Seulement en redémarrant Windows Server, cela a fonctionné. De perfom, l'utilisation d'IO est assez élevée. Y a-t-il des suggestions?

Merci,

Répondre

1

Cela ressemble beaucoup à une ressource non gérée que vous ne nettoyez pas correctement. Nous n'avons pas assez d'informations pour savoir exactement ce que cette ressource pourrait être, donc tout ce que nous pouvons faire est de deviner.

Mon premier instinct est les connexions à la base de données, sauf que le redémarrage de ce serveur sql de redémarrage devrait le réparer si c'était le cas. Suivant dans la liste sont les handles de fichiers et les threads, donc si vous faites un travail de multithreading ou un fichier supplémentaire io qui serait quelque chose à regarder. Rappelez-vous, dans ASP.Net, l'instruction using (non directive) est votre ami.

2

À tout le moins, êtes-vous fermer la connexion à la base de données, une fois que vous avez fini de l'utiliser dans le code? De plus, à quoi ressemble votre chaîne de connexion? utilise-t-il le pool de connexions?

EDIT: J'ai vu vos commentaires. Y a-t-il des transactions en attente à engager?

0

Tout d'abord, vous devez parler à votre DBA ... ils peuvent vérifier le nombre de connexions ouvertes, verrous de table, les requêtes à vitesse lente, etc.

Ma réaction instinctive est que vous ne fermons pas votre connexions quelque part, ou votre piscine de connexion est trop faible.

0

Effectuez-vous régulièrement la maintenance de la base de données? Reconstruire/défragmenter des index, recalculer des statistiques (à moins qu'il ne soit configuré pour le faire automatiquement). Vérifiez la taille de votre journal des transactions, etc.