Le moniteur de ressource insère une condition dalle sur un serveur qui exécute SQL Server

S’applique à : Microsoft SQL Server

Symptômes


Sur un serveur qui exécute Microsoft SQL Server 2008 (ou une version ultérieure), la tâche de moniteur de ressource enregistre le message suivant toutes les 5 secondes :
Date_And_Time Server Utilisation de 'dbghelp.dll' version '4.0.5'Date_And_Time Serveur ** thread de vidage - spid = 0, PSS = 0x0000000000000000, EC = 0 X 0000000000000000Date_And_Time Ouverture de session connexion réussie pour l’utilisateur 'OPENTEXT\sqlcrmusr'. Connexion : approuvée. [CLIENT : adresse_IP]Date_And_Time spid78 erreur : 4014, gravité : 20, état : 2.Date_And_Time spid78 une erreur irrécupérable s’est produite lors de la lecture du flux d’entrée à partir du réseau. La session va être interrompue.Date_And_Time Serveur *** envoyés au lecteurde vidage de pile : \MSSQL2005\LOG\SQLDump#.txtDate_And_Time Serveur * ***Date_And_Time Serveur *Date_And_Time Serveur * début DUMP de la pile :Date_And_Time Serveur * Date_And_Time spid 0Date_And_Time Serveur *Date_And_Time Serveur * dalle moniteur de ressourceDate_And_Time Serveur *Date_And_Time Serveur * ***Date_And_Time Serveur *---Date_And_Time Serveur * bref vidage de pileDate_And_Time Signature de pile de serveur pour le vidage est 0x000000000000005CDate_And_Time, serveur, inconnu, travailleur de moniteur de ressource (0x9b0) 0x0000000003A2C1C0 semble dalle sur Node_ #. Mémoire libérée : 0 Ko. Environ CPU utilisé (s) : noyau 0 msnull utilisateur 0 msnull intervalle : Interval_value.

Cause


À partir de SQL Server 2008, la tâche de moniteur de ressource réveille périodiquement pour écouter et notifier les abonnés d’événements de mémoire faible, haute ou en régime permanent. Ces événements de mémoire peuvent être externes à SQL Server (les notifications qui sont à l’échelle du système à partir du système d’exploitation) ou interne à SQL Server (les notifications qui sont au niveau du processus du pool de tampons). Lorsque les notifications se produisent, divers consommateurs de mémoire ajuster leur utilisation de la mémoire.Remarque Les consommateurs peuvent être employés de mémoire sont des magasins de cache, magasins d’utilisateurs ou banques de l’objet.Si certains consommateurs de mémoire utilisent une grande quantité de mémoire, la limitation qui les consommateurs effectuent peut prendre beaucoup de temps.La tâche de planificateur moniteur qui s’exécute chaque 5seconds vérifie si le moniteur de ressource a déplacé à partir d’un seul client à l’autre dans les 60 dernières secondes. Lorsque le moniteur de planificateur détecte que le moniteur de ressource n’a pas été déplacé après un consommateur pendant 60 secondes, le moniteur de planification interprète comme le moniteur de ressource entre dans un état de dalle, et le moniteur de planification se connecte ensuite le message d’erreur mentionné dans la section « Symptômes ».
Remarque à partir de SQL Server 2019, l’intervalle de 60 secondes est augmentée à 120 secondes afin de réduire la fréquence de ces notifications de diagnostics et de la génération de fichiers de vidage mémoire.Ces messages sont également déclenchés si la vitesse à laquelle le moniteur de ressources libère de la mémoire est inférieure à 2 Mo toutes les 5 secondes.Ces messages sont uniquement une indication que le moniteur de ressource est occupé nettoyage des grands consommateurs et ces messages n’indiquent pas nécessairement un problème avec le moniteur de ressource elle-même.

Résolution


À partir de Microsoft SQL Server 2008 Service Pack 2 et Service Pack 1 de Microsoft SQL Server 2008 R2, le message dalle de moniteur de ressource a été étendu pour isoler le clerk de mémoire qui mène à la condition de la dalle.Le nouveau message aura l’aspect suivant :
Moniteur (0x9b0) de ressource travail 0x0000000003A2C1C0 semble dalle sur nœud Node_ #. Mémoire libérée : 0 Ko. Dernier attendre : lastwaittype. Dernier employé : type clerk_type, nom de clerk_name. Environ CPU utilisé (s) : noyau 0 ms, utilisateur ms 0, intervalle : Interval_value.
Les descriptions des différents champs qui sont utilisés dans ce message sont les suivantes :
  • Libérer de la mémoire: il s’agit de la quantité de mémoire est libérée par le moniteur de ressource dans l’intervalle spécifié dans exprimée en kilo-octets. Si la vitesse à laquelle la mémoire est libérée ne dépasse pas 2 Mo toutes les 5 secondes, le moniteur de planificateur détecte cette condition comme une condition de la dalle.
  • Dernier attendre: il s’agit du dernier type d’attente pour le thread de moniteur de ressource. Vous pouvez utiliser ce champ avec le champ Utilisé de processeur environ pour déterminer si le thread de moniteur de ressource est en cours d’exécution ou en attente pour une partie importante de l’intervalle.
  • Dernier employé: c’est le type et le nom de l’employé de la mémoire qui a été de réduire sa mémoire lorsque la condition de la dalle s’est produite.
  • Utilisé de processeur environ: il s’agit du noyau et utilisateur qui est utilisé par le moniteur de ressource, mesurée en millisecondes. Vous pouvez utiliser Ceci ainsi que d’autres champs pour vérifier que le moniteur de ressource est sa progression au cours de l’intervalle spécifié.
  • Intervalle: il s’agit du temps écoulé depuis le dernier employé a été notifiée, mesurée en millisecondes.
Vous pouvez utiliser ce message avec les entrées RING_BUFFER_RESOURCE_MONITOR à partir de l’heure du message pour identifier la source de la notification de mémoire insuffisante.Pour plus d’informations sur la façon d’interpréter le moniteur RING_BUFFER_RESOURCE. visitez le site du blog MSDN suivant :Pour plus d’informations sur la façon dont SQL Server est à l’écoute et répond aux notifications de la mémoire et sur la tâche de moniteur de ressource et de la résolution des problèmes de performance liés à la mémoire dans SQL Server, consultez les articles de blog MSDN suivants :

Statut


Microsoft a confirmé l'existence de ce problème dans les produits Microsoft répertoriés dans la section « S'applique à ». Ce problème a été corrigé dans SQL Server 2008 Service Pack 2 pour SQL Server 2008.This problème a été corrigé dans SQL Server 2008 R2 Service Pack 1 pour SQL Server 2008 R2.