INF : Understanding Bufwait et les messages de Timeout WRITELOG

Traductions disponibles Traductions disponibles
Numéro d'article: 167711 - Voir les produits auxquels s'applique cet article
Agrandir tout | Réduire tout

Résumé

Lorsque vous examinez le journal des erreurs de SQL Server, les types de messages suivants peut s'afficher périodiquement :
bufwait : délai d'expiration, BUF_IO, bp 0xd37ab0, pg 0x5e74e, 0x1008 stat/0x400003, obj 0x6d4f8c1b, bpss 0x2069e1f0
- ou -
WRITELOG : délai d'expiration, dbid 2, dbstat2 0x22(0x22), T1/T2 0/1, propriétaire = 3, waittype = 0 x 81
Cet article explique la signification des messages de délai d'attente bufwait et writelog.

Plus d'informations

SQL Server utilise les appels d'e/S asynchrones ReadFile(), la ReadFileEx() WriteFile() et WriteFileEx() lorsqu'il effectue des lectures et écritures. Ces appels Win32 API soumettre une demande d'e/S à Windows NT Server et laissez l'application de continuer avec d'autres opérations pendant l'attente de l'opération se termine. Une fois terminée, il signale l'application que l'écriture a complété au moyen d'une routine d'événement ou la fin de synchronisation.

Messages bufwait et logwrite sont effectivement des avertissements et ne sont pas nécessairement un signe d'un problème avec l'ordinateur ou SQL Server. Si SQL Server a attendu plus longtemps que le nombre de secondes configuré dans la 'ressource 'paramètre de délai (qui est de 10 secondes) par défaut, il imprime un message d'erreur indiquant le délai d'attente. Toutefois, il doit continuer en attente sur la demande d'e/S à effectuer avant de pouvoir continuer. Le message bufwait correspond à un retard de lecture d'une page à partir du disque pour mettre en cache, soit vider une page dans le cache de sortie sur le disque. Le message logwrite est spécifique à lire ou écrire des enregistrements du journal.

SQL Server utilise les méthodes de synchronisation de thread normal pour garantir l'accès ordonnée dans le journal de transactions. Dans un message de délai d'attente writelog, l'ID de base de données est fourni dans le champ dbid, ainsi que l'ID de processus (propriétaire) de l'autre connexion sur laquelle il est en attente. Dans le message d'exemple ci-dessus, notez que l'actuel processus utilisait la tempdb (dbid 2) et il est en attente sur le processus point de contrôle (propriétaire = 3). Lorsque vous recherchez l'origine de la cause de délais d'attente writelog, il peut être avantageux de requête sysprocesses périodiquement pour rassembler des informations sur les types de traitement exécutés par le spid "propriétaire" répertorié dans le message writelog.

Restauration lourd activité ajoute journal supplémentaire et conflits d'e/S disque et telle activité a été observée comme faisant partie de délais d'attente writelog. Pour obtenir de meilleures performances, tenter de réduire le nombre de transactions doit être restauré ; comme activité sur le serveur s'accroît, à l'aide d'un délai d'attente de requête est trop court peut encore exacerber le problème en provoquant des annulations inutiles. En commençant par SQL Server 6.5 Service Pack 2, une nouvelle option de configuration, LogLRU buffers, a été ajouté qui peut améliorer les performances dans les environnements nécessitant des lectures du journal lourdes, telles que serait nécessaire dans le traitement d'une annulation ou d'un déclencheur. Notez que l'utilisation de cette option réserve de l'espace pour contenir des pages du journal dans le cache, réduisant la quantité de cache de données disponible. Consultez le fichier Lisezmoi.txt inclus dans le service pack pour plus d'informations sur une valeur optimale pour ce paramètre.

Si ces messages s'affichent uniquement par intermittence, ils peuvent s'avérer impossible indicatifs de tous les problèmes. Toutefois, s'ils apparaissent de manière assez régulière, il peut être un signe que le sous-système de disque a atteint la capacité et que vous pouvez tirer profit de répartissant la charge d'e/S sur un plus grand nombre de contrôleurs ou disques, afin de réduire la durée pendant laquelle que vous avez besoin d'attendre la fin d'opération.

Pour déterminer ce qui charge le sous-système de disque gère, vous pouvez utiliser l'Analyseur de performances pour surveiller les compteurs de disque appropriées à votre système. Analysez le compteur de temps du disque % de disque logique et/ou de disque physique qui correspond à vos périphériques de données et de journal ; si la valeur est constamment élevée, envisagez les méthodes pour répartir la charge d'e/S et rechercher des indications que le sous-système de disque a atteint ses limites. Vous pouvez effectuer le réglage fin supplémentaire à l'aide le % temps lecture du disque et contrôler les compteurs % Temps écriture du disque, qui permettraient plus fines de répartissant la charge d'e/S sur les disques et les contrôleurs de. Une grande valeur de longueur de file d'attente du disque indique un important volume de requêtes d'e/S et vous souhaitez étudier ajouter d'autres disques ou chargement des contrôleurs supplémentaires afin de répartir les e/S. Vous trouverez plus d'informations sur les compteurs de disque dans la documentation de Windows NT Server, le Kit de ressources techniques Windows NT Server et l'article suivant dans la base de connaissances Microsoft :
102020 : Comment analyser les performances de disque avec l'Analyseur de performances

Alors que ces messages résultent de retard dans l'exécution d'une e/S, plusieurs valeurs de configuration de SQL Server ont un impact direct sur le débit d'e/S global du système : max async i/O; max lazywrite i / o; logwrite sleep ; et le délai d'expiration de la ressource.

La valeur de configuration de 'max async i/O' détermine que le nombre maximal d'e/S asynchrones en attente demandes, SQL Server autorise, la limitation du nombre de demandes en attente. Lorsqu'une demande d'e/S asynchrone est effectuée, Windows NT Server doit la demande en file d'attente, qui possède un associé surcharge. Alors que les demandes d'e/S asynchrones peuvent augmenter les performances lorsqu'il est utilisé de manière appropriée, une limite peut être atteint à partir de laquelle toute utilisation ultérieure peut-être effectivement commencer à nuire aux performances du système. Cette limite dépend en grande partie le contrôleur, le pilote et le sous-système de disque associés. Si plusieurs reprises une des erreurs ci-dessus et que vous avez modifiée et ce paramètre diffère de sa valeur par défaut, envisagez de définir revenir sur sa valeur par défaut.



Le paramètre 'max lazywrite i / o' est étroitement lié au paramètre 'max async i/O', mais le service spécifiquement limite le nombre de demandes en attente effectuées par le processus d'écriture différée. Le processus d'écriture différée tente de vident les pages modifiées de cache sur disque afin qu'il y ait toujours partie de l'espace libre dans le cache de données. La quantité d'espace que le processus tente de conserver libre est contrôlée par l'option de configuration 'free buffers'.

Le paramètre de configuration 'logwrite sleep' est une option de configuration avancées qui force un retard intentionnel avant d'écrire des pages du journal sur disque. Étant donné que les pages du journal doivent être physiquement validées dans le disque avant que des modifications de données sont effectuées, vous voulez généralement que ces écritures à effectuer plus rapidement possible. Dans certaines circonstances, vous pouvez améliorer les performances en forçant intentionnellement un retard afin que plusieurs processus peuvent «pack «enregistrements du journal sur une seule page et ainsi réduire le nombre d'opérations d'écriture. Combien de temps utilisé dans ce délai intentionnels est comprise dans le délai d'attente pour l'opération d'écriture globale, pour un délai d'attente writelog peut être induite artificiellement en augmentant le paramètre de configuration 'logwrite sleep'. Cette valeur doit uniquement être modifiées de manière contrôlée afin de garantir que les performances n'est pas entravé.



Le paramètre de configuration 'resource timeout' contrôle le délai d'attente global sur les opérations d'e/S asynchrones. Par défaut, le paramètre est défini sur 10 (secondes), afin que toute opération qui prend plu de 10 secondes pour terminer les résultats dans un message d'avertissement d'expiration. Cette valeur trop faible risque des délais d'expiration en un temps court irréalistes. Si vous voyez fréquemment bufwait ou writelog délais d'attente, vous pouvez augmenter ce paramètre pour réduire la fréquence à laquelle ces erreurs sont générées.

Dans la mesure où SQL Server souligne le sous-système d'e/S ainsi largement, il est également important de vérifier que vous exécutez avec les dernières versions du lecteur et micrologiciel du contrôleur, ainsi que le pilote le plus récent. Consultez également le fabricant de votre matériel pour les diagnostics, qu'ils risquent d'avoir pour soulignant le sous-système de disque.

Si les informations ci-dessus ne permettent pas de résoudre le problème, vous voudrez peut-être envisager soulignant le système dans une manière similaire à celle effectuée par SQL Server. Pour vous aider dans cette opération, un utilitaire appelé SQLHDTST a été écrit. Pour plus d'informations sur l'utilitaire et les emplacements à partir duquel il peut être téléchargé, consultez l'article suivant dans la base de connaissances Microsoft :
178444Fichiers SQL Server Utility
SQL Server nécessite des systèmes pour prendre en charge ? remise sur support stable garantie ? comme indiqué dans le cadre du programme de révision de Microsoft SQL Server Always-On Storage Solution. FOPour plus d'informations sur la configuration d'entrée et de sortie requise pour le moteur de base de données SQL Server, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la base de connaissances Microsoft :
967576Microsoft SQL Server Database Engine d'entrée/sortie requise

Propriétés

Numéro d'article: 167711 - Dernière mise à jour: vendredi 21 novembre 2003 - Version: 3.1
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft SQL Server 6.0 Standard
  • Microsoft SQL Server 6.5 Édition Standard
  • Microsoft SQL Server 2008 Developer
  • Microsoft SQL Server 2008 Enterprise
  • Microsoft SQL Server 2008 Express
  • Microsoft SQL Server 2008 Standard
Mots-clés : 
kbmt kbenv kbhardware kbinfo KB167711 KbMtfr
Traduction automatique
IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d?articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d?avoir accès, dans votre propre langue, à l?ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s?exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s?efforce aussi continuellement de faire évoluer son système de traduction automatique.
La version anglaise de cet article est la suivante: 167711
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.
Exclusion de responsabilité concernant les contenus obsolètes dans la Base de connaissances
Cet article concerne des produits pour lesquels Microsoft n'offre plus de support. Il est par conséquent fourni « en l'état » et ne sera plus mis à jour.

Envoyer des commentaires

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com