MSSQLSERVER_17883

S’applique à :SQL Server

Détails

Attribut Valeur
Nom du produit SQL Server
ID de l’événement 17883
Source de l’événement MSSQLSERVER
Composant SQLEngine
Nom symbolique SRV_SCHEDULER_NONYIELDING
Texte du message Le processus %ld:%ld:%ld (0x%lx) travail 0x%p semble être improductif dans le Planificateur %ld. Heure de création du thread : %I64d. Utilisation approximative de l'UC pour ce thread : noyau %I64d ms, utilisateur %I64d ms. Utilisation du processus %d%%. Système inactif %d%%. Intervalle : %I64d ms.

Explication

Indique qu’il existe un problème possible avec un thread qui ne cède pas sur un planificateur. Cette erreur peut être provoquée par une condition du système d’exploitation, un problème d’environnement ou un problème logiciel dans SQL Server, ou si SQL Server n’obtient pas suffisamment de cycles pour s’exécuter. Cette erreur peut disparaître si le thread finit par se produire.

Action requise

Si vous examinez les informations du message d’erreur, vous voyez que certains comportements apparaissent. Par exemple :

  • Si le temps de mode utilisateur augmente rapidement et continue de le faire, la cause probable est une boucle non délimitée dans le moteur SQL Server qui ne fonctionne pas correctement.

  • Si le temps en mode noyau monte rapidement, le thread passe la plupart de son temps dans le système d’exploitation et nécessite un débogage du noyau pour déterminer la cause racine de ce comportement.

  • Si le temps du noyau et le temps utilisateur n’augmentent pas rapidement, le thread attend probablement qu’un appel d’API tel que WaitForSingleObject, Sleep, WriteFileou ReadFile soit retourné. Ou bien, le thread n’est peut-être pas planifié par le système d’exploitation. Les conditions de blocage de l’API nécessitent généralement un débogage en mode noyau pour déterminer leur cause racine.

  • Si System Idle % est faible et Process Utilization % faible, SQL Server peut ne pas obtenir suffisamment de cycles d’UC. Vérifiez l’utilisation du processeur d’autres applications sur le système. Vérifiez également si la pagination est en cours dans le système. L’exécution SELECT * FROM sys.dm_os_ring_buffers peut également fournir plus de détails.

  • Si kernel + user les temps sont faibles mais Process Utilization % sont élevés, la condition d’erreur peut indiquer que le ou les threads préemptifs consomment tout le processeur (par exemple, le garbage collection).

La combinaison d’informations avec l’utilisation du système et le temps d’inactivité peut fournir des informations sur la nature du problème.

Pour comprendre la logique de détection et les raisons courantes qui génèrent cette condition d’erreur, consultez Comment diagnostiquer et corriger les erreurs 17883, 17884, 17887 et 17888.