Avez-vous vécu l'un des problèmes suivants et avez-vous trouvé une solution:
Une grande partie du back-end de notre site Web est MS SQL Server 2005. Chaque semaine ou deux semaines, le site commence à fonctionner plus lentement - et je vois des requêtes de plus en plus longues à terminer en SQL. J'ai une requête que j'aime utiliser:
USE master
select text,wait_time,blocking_session_id AS "Block",
percent_complete, * from sys.dm_exec_requests
CROSS APPLY sys.dm_exec_sql_text(sql_handle) AS s2 order by start_time asc
Ce qui est assez utile ... il donne un instantané de tout ce qui fonctionne à ce moment précis sur votre serveur SQL. Ce qui est bien, c'est que même si votre processeur est fixé à 100% pour une raison quelconque et que le moniteur d'activité refuse de se charger (je suis sûr que certains d'entre vous y ont été), cette requête revient toujours et vous pouvez voir quelle requête tue votre base de données.
Lorsque j'exécute ceci, ou le moniteur d'activité pendant les périodes où SQL a commencé à ralentir, je ne vois aucune requête spécifique à l'origine du problème - elles s'exécutent toutes plus lentement sur toute la ligne. Si je redémarre le service MS SQL, tout va bien, il accélère - pendant une semaine ou deux jusqu'à ce que cela se reproduise.
Rien à quoi je peux penser n'a changé, mais cela vient de commencer il y a quelques mois ... Des idées?
--Ajoutée
Veuillez noter que lorsque ce ralentissement de la base de données se produit, peu importe si nous obtenons 100 000 pages vues par heure (heure la plus occupée) ou 10 000 pages vues par heure (temps lent), toutes les requêtes prennent plus de temps que d'habitude. Le serveur n'est pas vraiment stressé - le CPU n'est pas élevé, l'utilisation du disque ne semble pas être hors de contrôle ... cela ressemble à une fragmentation d'index ou quelque chose du genre, mais cela ne semble pas être le Cas.
En ce qui concerne le collage des résultats de la requête que j'ai collée ci-dessus, je ne peux vraiment pas le faire. La requête ci-dessus répertorie la connexion de l'utilisateur effectuant la tâche, l'intégralité de la requête, etc., et je ne voudrais vraiment pas distribuer les noms de mes bases de données, tables, colonnes et les connexions en ligne:) ... I peut vous dire que les requêtes en cours d'exécution à ce moment-là sont des requêtes normales et standard pour notre site qui s'exécutent tout le temps, rien hors de la norme.
- 24 mars
Cela fait environ deux semaines depuis le dernier redémarrage. J'ai apporté plusieurs modifications: j'ai trouvé quelques requêtes où nous faisions un usage intensif de tables temporaires qui étaient totalement inutiles et ont demandé à nos développeurs de changer la façon dont ils le faisaient. J'ai ajusté la taille de certaines des bases de données en croissance constante (lente mais sûre) à une taille intelligente pour leur croissance. J'ai également ajusté les paramètres de croissance automatique pour tout pour être plus intelligent (ils étaient tous définis sur une croissance de 1 Mo). Enfin, j'ai un peu nettoyé MSDB. Nous faisons des expéditions de journaux et nous n'avions vraiment pas besoin de conserver des années et des années de points de sauvegarde, j'ai écrit quelques scripts qui ne limitent cela qu'à quelques mois. Je continuerai à mettre à jour ce fil, car il est trop tôt pour dire si le problème est encore résolu.