Diagnose in SQL Server feststellen, angehaltene und hängen e/a-Vorgänge

Zusammenfassung

Ein Datenbankmanagementsystem (DBMS) wie SQL Server basiert auf die Aktualität der Dateieingabe und Ausgabe (e/a) Operationen. Eines der folgenden Elemente kann fest oder angehaltene e/a-Vorgänge verursachen und SQL Server Reaktionsfähigkeit und die Leistung beeinträchtigen:

  • Fehlerhafte hardware
  • Falsch konfigurierte hardware
  • Firmware-Optionen
  • Filtertreiber
  • Komprimierung
  • Fehler
  • Sonstiges im e/a-Pfad
Diese e/a-Probleme möglicherweise das folgende Verhalten auftreten:

  • Blockieren
  • Pufferlatch-Konflikte und Timeouts
  • Langsame Reaktionszeiten
  • Ressource Grenzen Strecken
SQL Server verfügt Logik hilft bei der Ermittlung angehalten und für Datenbank-e/a-Lesevorgänge und Schreibvorgänge und Protokoll Datei e/a-Lesevorgänge und Schreibvorgänge hängen ab Microsoft SQL Server 2000 Service Pack 4 (SP4). Ein e/a-Vorgang Ausstehend für 15 Sekunden oder länger wurde, führt SQL Server die folgenden Schritte aus:

  1. Erkennt, dass der Vorgang ausstehend wurde
  2. Schreibt eine Meldung in der SQL Server-Fehlerprotokoll

    Der Text der Protokollnachricht folgendermaßen aussehen:

Information Beschreibung

NachrichtentextBeschreibung
<Anzahl > vorkommenDie Anzahl der e/a-Anfragen, die nicht den Lese- oder Schreibvorgang in weniger als 15 Sekunden abgeschlossen wurde.
DateiinformationenDer vollständige Dateiname, den Namen und die Datenbank-ID (DBID).
BehandelnDas Betriebssystemhandle der Datei. Das Betriebssystemhandle können Debugger oder mit anderen Dienstprogrammen Sie die e/a-Anforderung Paket (IRP) Anfragen verfolgen.
OffsetDer Offset des letzten e/a-Vorgangs fest oder der letzten e/a-Vorgang angehalten. Den Offset können Debugger oder mit anderen Dienstprogrammen Sie die IRP-Anfragen verfolgen.

Hinweis Wenn die Meldung in der SQL Server-Fehlerprotokoll geschrieben, Vorgang nicht hängen oder angehalten.
Diese Meldung gibt an, dass die aktuelle Auslastung eine der folgenden Situationen auftreten kann:

  • Die Arbeitslast wird i/o-Datenpfade überschritten.
  • Die Arbeitslast ist die aktuelle Systemfunktionen überschreiten.
  • E/a-Pfad hat fehlerhafte Software. Vielleicht Firmware oder einen Treiber vor.
  • E/a-Pfad hat fehlerhafte Hardware-Komponenten.
Weitere Informationen zu SQL Server 2000-e/a-Mustern finden Sie auf folgender Microsoft-Website:Hinweis TechNet-Artikel gilt auch für Microsoft SQL Server 2005 und höher.

Weitere Informationen

Klemmen e/a und angehaltene e/a

Klemmen e/a

Klemmen e/a bezeichnet eine e/a-Anforderung, die nicht beendet wird. Klemmen e/a gibt häufig stecken IRP. Um eine fixierte e/a-Problem zu lösen, Sie normalerweise den Computer neu starten oder eine ähnliche Aktion. Eine fixierte e/a-Bedingung gibt in der Regel die folgenden:

  • Fehlerhafte hardware
  • Ein Fehler in einer Komponente der e/a-Pfad

Angehaltene e/a

Angehaltene e/a bezeichnet eine e/a-Anforderung, die endet oder, die übermäßige Zeit. Angehaltene Verhalten e/a-in der Regel aus einem der folgenden Gründe:

  • Der Hardware-Konfiguration
  • Firmware-Optionen
  • Ein Treiberproblem Filter, die Hilfe aus den Hardware- oder Softwarehersteller und beheben

SQL Server i/o angehalten und e/a, Erfassung und Meldung fest

Microsoft SQL Server Unterstützung behandelt viele Fällen jährlich fest oder angehaltene e/a-Probleme. Diese e/a-Probleme auf unterschiedliche Weise angezeigt werden. E/a-Probleme sind einige der Probleme zu diagnostizieren und zu debuggen und erfordern erhebliche Zeit und Ressourcen für das Debuggen von Microsoft und dem Kunden. Berichtsfunktionen, die SQL Server 2000 SP4 und höher, deutlich hinzugefügt wurden, verringern die Zeit um eine e/a-Problem zu identifizieren.

Die Berichterstattung und die Aufzeichnung der e/a-Anfragen dienen pro Datei. Die Erkennung und Meldung von angehaltene und hängen e/a-Anfragen sind zwei verschiedene Aktionen.

Aufzeichnung

Es gibt zwei Momente eine Aktion Datensatz in tritt SQL Server. Wird die erste Vorgang tatsächlich abgeschlossen ist. Nimmt eine e/a-Anforderung mehr als 15 Sekunden abgeschlossen, wird eine Datensatz-Operation. Das zweite Flächenmoment ist wenn lazy Writer ausgeführt wird. Wenn lazy Writer ausgeführt wird, überprüft der lazy Writer alle ausstehenden Daten und alle ausstehenden Protokoll Datei-e/a-Anfragen. Überschreitung des Schwellenwerts 15 Sekunden wird eine Datensatz-Operation.

Reporting

Reporting tritt in Abständen, die mindestens 5 Minuten auseinander. Reporting tritt bei die nächste e/a-Anforderung für die Datei. Eine Datensatz-Aktion und mindestens 5 Minuten vergangen seit der letzte Bericht aufgetreten ist, die im Abschnitt "Zusammenfassung" genannte Meldung im SQL Server-Fehlerprotokoll geschrieben wird.

15-Sekunden-Schwellenwert ist nicht einstellbar. Jedoch können Sie angehaltene oder fixierte e/a-Erkennung deaktivieren mit Ablaufverfolgungsflag 830, obwohl nicht empfohlen, dies zu tun.

Verwenden Sie zum Deaktivieren von Erkennung beim Starten von SQL Server die -T830 Erkennung deaktivieren bei jedem Start dieser SQL Server-Startparameter. Deaktivieren Sie Erkennung für eine Instanz von SQL Server, das ausgeführt wird, verwenden Sie Folgendes:

DBCC Traceoff (830, -1)
Diese Einstellung gilt nur für die Dauer des SQL Server-Prozesses.

Hinweis Eine e/a-Anforderung, die angehalten oder hängen wird nur einmal gemeldet. Angenommen, wenn die Meldung, dass 10 e/a-Anforderungen angehalten werden, erfolgt die 10-Berichte erneut nicht. Wenn die nächste Nachricht meldet, dass 15 e/a-Anforderungen angehalten werden, also 15 neue e/a-Anforderungen angehalten werden.

Überwachen des e/a-anforderungspaketes (IRP)

SQL Server verwendet die standardmäßige Microsoft Windows-API-Aufrufe zum Lesen und Schreiben von Daten. SQL Server verwendet zum Beispiel die folgenden Funktionen:

  • WriteFile
  • ReadFile
  • WriteFileScatter
  • ReadFileGather
Die Anforderung Lese- oder Schreibvorgang wird als ein e/a-Anforderungspaket (IRP) von Windows behandelt. Ermitteln Sie den Status der IRP verwenden Sie Folgendes:

  • Microsoft-Plattform-Unterstützung
  • Der Kernel-debugger
Weitere Informationen zu IRP und IRP verfolgen, klicken Sie auf der folgenden Microsoft-Website und Suche das Schlüsselwort "IRP":Hinweis Kernel-Debugger kann invasive Prozess, da Kerneldebuggen müssen Sie das System zum Debuggen Aktionen ausführen kann. Wir empfehlen, dass Sie alle verfügbaren Updates für die folgenden Elemente überprüfen:

  • Das BIOS
  • Die firmware
  • Andere e/a-Pfad-Komponenten
Bevor Sie zusätzliche Debuginformationen Aktionen durchführen, wenden Sie sich an den Hardwarehersteller. Die Debugsitzung wird wahrscheinlich eine Fremdanbieter-Treiber, Firmware oder Filter-Komponente umfassen.

Systemleistung und Plan Abfrageaktionen

Insgesamt kann Systemleistung e/a-Verarbeitung eine wichtige Rolle spielen. Sie berücksichtigt den allgemeinen Zustand des Systems beim Untersuchen von Berichten angehaltene oder fixierte e/a-Vorgänge. Übermäßige Auslastung kann das gesamte System langsam. Dies beinhaltet die e/a-Verarbeitung. Das Verhalten des Systems zum Zeitpunkt des Fehlers kann ein wichtiger Faktor bei der Bestimmung der Ursache des Problems sein. Beispielsweise wenn CPU-Auslastung hoch oder CPU-Auslastung hoch bleibt, wenn das Problem auftritt, dies möglicherweise mit ein Prozess auf dem System so viel CPU, dass andere Prozesse beeinträchtigt wird.

Leistungsindikatoren

Überwachen der e/a-Leistung untersuchen Sie die folgenden Leistungsindikatoren für bestimmte e/a-Informationen:

  • Durchschnittliche Sek./Übertragung
  • Durchschnittliche Warteschlangenlänge
  • Aktuelle Warteschlangenlänge
Beispielsweise ist die durchschnittliche Sek./Übertragung-Zeit auf einem Computer mit SQL Server normalerweise weniger als 15 Millisekunden. Wenn der durchschnittliche Sek./Übertragung Wert steigt, bedeutet dies, dass e/a-Subsystem nicht optimal mit e/a-Anforderung zu halten ist.

Seien Sie vorsichtig, wenn Sie Leistungsindikatoren verwenden, da SQL Server asynchrone e/a-Funktionen nutzt, die Datenträger-Warteschlangenlängen stark drücken. Daher werden mehr Datenträger-Warteschlangenlängen allein kein Problem dar.

Im Windows-Systemmonitor können Leistungsindikatoren überprüfen "Festplatte: Bytes/s" für jeden betroffenen Datenträger und vergleichen die Rate gegen die Leistungsindikatoren "Prozess: IO Datenbytes/Sekunde" und "Prozess: IO anderer Bytes/s" für jeden Prozess zu ermitteln, ob ein bestimmter Satz von Prozessen übermäßige e/a erzeugt anfordert. Gibt verschiedene andere e/a im Prozess verfügbaren Leistungsindikatoren-Objekt ergibt, detailliertere Informationen. Wenn Sie eine SQL Server-Instanz für eine übermäßige e/a-Belastung des Servers verantwortlich ist, lesen Sie den nächsten Abschnitt "Indizes und Parallelität". Ausführliche Informationen zum Erkennen und Beseitigen von e/a-Engpässen finden Sie Abschnitt "E/a-Engpässe" in der MSDN-Whitepaper Zur Problembehandlung von Leistungsproblemen in SQL Server 2008 oder Behandlung von Leistungsproblemen in SQL Server 2005.

Indizes und Parallelität

Häufig auftreten Bursts e/a, weil ein Index vorhanden ist. Dies kann ernsthafte e/a-Pfad ablegen. Ein übergeben Sie den Index einschalten Assistenten (ITW) verwendet können e/a-Belastung des Systems zu beheben. Wenn eine Abfrage von einem Index statt einen Tabellenscan Vorteile oder vielleicht sortieren oder Hash verwendet das System die folgenden Vorteile erhalten:

  • Eine Verringerung erfolgt die physische e/a, die erforderlich sind, um die Aktion auszuführen, die Leistungsvorteile für die Abfrage direkt erstellt.
  • Weniger Seiten im Datencache übergeben werden müssen. Diese Seiten im Datencache werden bleiben für aktive Abfragen.

  • Sortiert und Hashes wird ein Index fehlt möglicherweise oder Statistiken veraltet. Tempdb verwenden und Konflikte verringern durch einen oder mehrere Indizes hinzufügen.
  • Eine Verringerung erfolgt in Ressourcen und parallele Vorgänge. Da SQL Server keine parallele Ausführung garantiert, und die Auslastung des Systems gilt, empfiehlt es sich, alle Abfragen für serielle Ausführung optimieren. Zu optimieren, öffnen Sie Query Analyzer Sp_configure Wert der Option Max. Grad an Parallelität auf 1festgelegt. Führen Sie umgehend einen seriellen Operation alle Abfragen optimiert werden, ist parallele Ausführung häufig nur ein besseres Ergebnis. Jedoch oft parallele Ausführung ist ausgewählt, da die Datenmenge groß ist. Bei einem fehlenden Index möglicherweise eine große Art auftreten. Mehrere Arbeitskräfte, die den Sortiervorgang durchführen werden schneller erstellen. Jedoch kann dadurch Druck auf das System erheblich erhöhen. Große Leseanfragen viele Mitarbeiter können mehrere Mitarbeiter eine e/a-Burst mit erhöhten CPU-Auslastung verursachen. Oft eine Abfrage kann optimiert werden, schneller und weniger Ressourcen verwenden, wenn ein Index hinzugefügt oder andere tuning Aktion stattfindet.

Praktische Beispiele von Microsoft SQL Server

Die folgenden Beispiele wurden von Microsoft SQL Server Unterstützung und Plattformen Eskalation abgewickelt. Diese Beispiele sollen ein Rahmen als Referenz und Hilfe ungewöhnlich zu angehalten und e/a-Situationen fest und beeinträchtigt werden oder kann ein System reagiert. Es ist keine spezielle Hardware oder Treiber, die über ein anderes spezifische Risiko oder Risiko darstellen. Alle Systeme sind in dieser Hinsicht.

Beispiel 1: Ein Protokoll schreiben, die für 45 Sekunden fest

Der Versuch, eine SQL Server-Protokolldatei regelmäßig schreiben wird für ungefähr 45 Sekunden fest. Das Protokoll schreiben beendet nicht rechtzeitig. Dies erstellt eine blockierende Bedingung, die 30 Sekunden Client Timeouts führt.

Der Antrag eines Commits auf SQL Server und Commit wurde ein Protokoll schreiben offen geblieben. Dieses Verhalten führt die Abfrage weiterhin sperren und Anfragen von anderen Clients. Starten Sie andere Clients zu. Diese Verbindungen das Problem, weil die Anwendung nicht öffnen Rollback von Transaktionen ist ein Abfragetimeout auftritt. Dadurch werden Hunderte von offenen Posten, die Sperren enthalten. Daher wird eine schwere blockierende Situation.

Weitere Informationen zur Buchung behandeln und blockieren finden Sie in folgenden Artikel der Microsoft Knowledge Base:

Die Anwendung Dienste eine Website mithilfe von Verbindungspooling. Weitere Anschlüsse blockiert werden, erstellt die Website mehr Verbindungen. Verbindung blockiert und der Zyklus wird fortgesetzt.

Nach ungefähr 45 Sekunden beendet das Protokoll schreiben. Allerdings werden zu diesem Zeitpunkt Hunderte von Verbindungen gesichert. Blockierende Probleme verursachen einige Minuten Wiederherstellungszeit für SQL Server und der Anwendung. Zusammen mit der Anwendung, hat angehaltene e/a-Bedingung sehr negativ auf das System.
Problemlösung
Dieses Problem wurde für eine fixierte e/a-Anforderung ein Host Bus Adapter (HBA) nachverfolgt. Der Computer hat mehrere HBAs mit Failover-Unterstützung. Einen HBA war oder keine Kommunikation mit Storage Area Network (SAN), wurde der Timeoutwert "Wiederholen vor dem Failover" 45 Sekunden konfiguriert. Wenn das Timeout überschritten wurde, wurde die e/a-Anforderung an den zweiten HBA weitergeleitet. Der zweite HBA verarbeitet die Anforderung und schnell abgeschlossen. Zur Vermeidung solcher Leiden Stall empfohlen Hardwarehersteller 5 Sekunden die Einstellung "vor dem Failover Wiederholen".

Beispiel 2: Filter Triebfahrzeugführers

Viele Antivirusprogramme und backup-Produkte verwenden e/a-Filtertreiber. Diese e/a-Filtertreiber Bestandteil der e/a-Anforderung Stapel und haben Zugriff auf die IRP-Anforderung. Microsoft Product Support Services gesehen hat verschiedene Probleme Fehler erstellen e/a-Bedingung fest oder e/a-Bedingung in einer Implementierung eines Filter-Treiber installiert.

Eine solche Bedingung wurde ein Filter für backup verarbeiten, die eine Sicherung der Dateien, die geöffnet beim Sichern waren. Der Systemadministrator hat Verzeichnis der SQL Server-Daten in der Datei enthalten. Beim Sichern, versucht die Sicherung zu Abbildung der Datei zum Zeitpunkt des Sicherungsstarts. Dadurch verzögert e/a-Anfragen. E/a-Anfragen durften nur einzeln beenden, als sie von der Software behandelt wurden.

Beim Start der Sicherung dramatisch SQL Server-Leistung da e/a SQL Server mussten einzeln beenden. Um das Problem zu kompensieren, wurde die Logik "einzeln" Vorgang nicht asynchron ausgeführt werden konnte. Daher, wenn SQL Server eine e/a-Anforderung und weiterhin erwartet, die Arbeitskraft steckte in der Lese- oder Schreibzugriff Aufruf bis e/a-Anforderung abgeschlossen. Verarbeitungsaufgaben wie eine SQL Server-Read-ahead wurden durch die Aktionen des Filtertreibers deaktiviert. Außerdem Links eines anderen Fehlers in der Filtertreiber "einzeln" Aktionen im Prozess, auch wenn die Sicherung abgeschlossen wurde. Die einzige Möglichkeit zum Wiederherstellen von SQL Server-Leistung war schließen und erneuten Öffnen der Datenbank oder SQL Server neu starten, damit das Datei-Handle wurde freigegeben und ohne Filter Treiber beendet.
Problemlösung
Um dieses Problem zu beheben, wurden die SQL Server-Datendateien aus Datei-backup-Prozess entfernt. Software-Hersteller korrigiert auch das Problem, das die Datei im Modus "einzeln".

Beispiel 3: Versteckte Fehler

Viele High-End-Systeme haben Mehrkanal-e/a-Pfade Lastenausgleich oder ähnliches. Microsoft Product Support Services hat Probleme mit der Software eine e/a-Anforderung fehlschlägt, wobei die Software behandelt den Fehler nicht ordnungsgemäß gefunden. Die Software kann unbegrenzte Versuche versuchen. Vorgang festhängt und SQL Server die angegebene Aktion kann nicht abgeschlossen werden. Wie das Protokoll schreiben zuvor beschriebenen Zustand können schlechte Systemverhalten auftreten, wenn eine solche Bedingung System Keile.
Problemlösung
Um dieses Problem zu beheben, ist oft Neustart von SQL Server erforderlich. Manchmal aber müssen Sie das Betriebssystem wiederherstellen Verarbeitung starten. Außerdem wird empfohlen, ein Software-Update vom e/a-Hersteller erhalten.

Beispiel 4: Remotespeicher, Spiegelung und RAID-Laufwerke

Viele Systeme verwenden Spiegelung oder ähnliche Schritte, um Datenverluste zu vermeiden. Einige Systeme, die Spiegelung verwenden, basieren auf Software und Hardware-basierte einige. Latenzzeit ist die Situation, die normalerweise vom Microsoft Support für diese Systeme erkannt wird.

Zunahme der gesamten e/a-Zeit tritt auf, wenn die e/a auf den Spiegel enden muss, bevor der e/a als abgeschlossen angesehen wird. Remote-Spiegelung Installationen können Netzwerk Versuche einbezogen werden. Wenn Laufwerksfehler auftreten und das Raid-System neu, kann e/a-Muster auch unterbrochen.
Problemlösung
Strenge Konfigurationen müssen Latenz Spiegelung oder RAID-Wiederherstellung Operationen.


Weitere Informationen finden Sie an SQL Server zur Unterstützung von remote-Spiegelung von Datenbanken .

Beispiel 5: Komprimierung

Microsoft unterstützt nicht Microsoft SQL Server 7.0 oder Microsoft SQL Server 2000-Datendateien und Protokolldateien auf komprimierten Laufwerken. NTFS-Komprimierung ist nicht für SQL Server, da NTFS-Komprimierung Protokoll schreiben vor Protokollierung (WAL) unterbrochen. NTFS-Komprimierung ist auch verbesserte Verarbeitung für jede e/a-Operation erforderlich. Komprimierung erstellt "einzeln" wie Verhalten, bei dem schwerwiegende Leistungsprobleme auftreten.
Problemlösung
Um dieses Problem zu beheben, dekomprimieren Sie die Daten- und Protokolldateien.

Überprüfen Sie für Weitere Informationen die Beschreibung der Unterstützung für SQL Server-Datenbanken auf komprimierten Datenträgern .

Zusätzliche Daten

PAGEIOLATCH_ * und Writelog wartet in dm_os_wait_stats dynamische Verwaltungsansichten (DMV) sind die wichtigsten Indikatoren zu e/a-Pfad-Performance. Wenn erhebliche PAGEIOLATCH wartet angezeigt wird, bedeutet dies, dass SQL Server auf die e/a-Subsystem wartet. Eine gewisse PAGEIOLATCH wartet ist typisch und Verhalten. Allerdings sind die durchschnittlichen PAGEIOLATCH Wartezeiten ständig größer als 10 Millisekunden (ms), sollten Sie untersuchen Warum e/a-Subsystem unter Druck ist. Weitere Informationen finden Sie in folgenden Dokumenten:



SQL Server erfordert, dass Systeme gemäß SQL Server i/o Zuverlässigkeit Programm Requirements"Zustellung stabile Medien" unterstützen. Weitere Informationen zu den Eingabe- und Ausgabeparameter für die SQL Server-Datenbank-Engine finden Sie in folgendem Artikel der Microsoft Knowledge Base:

Eigenschaften

Artikelnummer: 897284 – Letzte Überarbeitung: 16.01.2017 – Revision: 1

Microsoft SQL Server 2014 Business Intelligence, Microsoft SQL Server 2014 Business Intelligence, Microsoft SQL Server 2014 Business Intelligence, Microsoft SQL Server 2014 Business Intelligence, Microsoft SQL Server 2014 Developer, Microsoft SQL Server 2014 Developer, Microsoft SQL Server 2014 Developer, Microsoft SQL Server 2014 Developer, Microsoft SQL Server 2014 Enterprise, Microsoft SQL Server 2014 Enterprise, Microsoft SQL Server 2014 Enterprise, Microsoft SQL Server 2014 Enterprise, Microsoft SQL Server 2014 Enterprise Core, Microsoft SQL Server 2014 Enterprise Core, Microsoft SQL Server 2014 Enterprise Core, Microsoft SQL Server 2014 Enterprise Core, Microsoft SQL Server 2014 Express, Microsoft SQL Server 2014 Express, Microsoft SQL Server 2014 Express, Microsoft SQL Server 2014 Express, Microsoft SQL Server 2014 Standard, Microsoft SQL Server 2014 Standard, Microsoft SQL Server 2014 Standard, Microsoft SQL Server 2014 Standard, Microsoft SQL Server 2014 Web, Microsoft SQL Server 2014 Web, Microsoft SQL Server 2014 Web, Microsoft SQL Server 2014 Web, Microsoft SQL Server 2012 Developer, Microsoft SQL Server 2012 Enterprise, Microsoft SQL Server 2012 Enterprise Core, Microsoft SQL Server 2012 Express, Microsoft SQL Server 2012 Standard, Microsoft SQL Server 2012 Web, Microsoft SQL Server 2012 Business Intelligence, Microsoft SQL Server 2008 Developer, Microsoft SQL Server 2008 Enterprise, Microsoft SQL Server 2008 Express, Microsoft SQL Server 2008 Standard, Microsoft SQL Server 2008 R2 Datacenter, Microsoft SQL Server 2008 R2 Developer, Microsoft SQL Server 2008 R2 Enterprise, Microsoft SQL Server 2008 R2 Express, Microsoft SQL Server 2008 R2 Standard, Microsoft SQL Server 2008 R2 Web, Microsoft SQL Server 2008 R2 Workgroup, Microsoft SQL Server 2005 Workgroup Edition, Microsoft SQL Server 2005 Standard Edition, Microsoft SQL Server 2005 Developer Edition, Microsoft SQL Server 2005 Enterprise Edition

Feedback