Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Fehlerbehebung bei zu wenig Worker-Threads

Wenn Ihre Instanz zusammen mit der gleichzeitigen Nutzung einen höheren Datenverkehr erfährt, gehen ihr möglicherweise die Worker-Threads aus, die zum Verarbeiten von Sitzungsanfragen erforderlich sind. Dies bedeutet, dass Sitzungen darauf warten, dass Worker-Threads zugewiesen werden, um die Anforderungen zu verarbeiten. Dies würde höchstwahrscheinlich zu langsameren Verarbeitungszeiten führen und dazu führen, dass Wartetypen wie SOS_SCHEDULER_YIELD, THREADPOOL und CXPACKET auftreten.

Normalerweise wird das Problem durch eine der folgenden Ursachen verursacht:

  • Viele aktive Verbindungen
  • Viele lang andauernde Abfragen
  • Abfragen mit Parallelität
  • Server-CPU nicht stark genug für die Arbeitslast

Die gebräuchlichsten Abhilfemaßnahmen sind:

  • Anzahl der Verbindungen reduzieren
  • Identifizieren und optimieren Sie lang andauernde Abfragen
  • Identifizieren und optimieren Sie Abfragen mit einem hohen Grad an Parallelität
  • Identifizieren und optimieren Sie Abfragen mit CPU-Wartetyp
  • Identifizieren und optimieren Sie Abfragen mit dem CXPACKET-Wartetyp
Der SQL – Running Out of Threads-Alarm von Spotlight Cloud benachrichtigt den Benutzer, wenn der Instanz die Arbeitsthreads zur Verarbeitung von Sitzungsanfragen ausgehen.


Verwenden Sie die Diagnose-Dashboards von Spotlight Cloud, um das Problem zu beheben:

  1. Reduzieren Sie die Anzahl der Verbindungen. Besuchen Sie das Sitzungs-Dashboard, um die Aktivitätsmenge zu ermitteln:

  2. Identifizieren und optimieren Sie lang andauernde Abfragen:

    a. Verwenden Sie das Workload Analyzer-Dashboard, um die Top-SQL nach aktiver Zeit anzuzeigen. Klicken Sie auf die Dimension „SQL-Anweisungen“ und sortieren Sie die Abfragen nach der Metrik „Aktive Zeit“:


    b. Verwenden Sie das Workload Analyzer-Dashboard, um die Top-SQL nach Grad der Parallelität anzuzeigen. Optimieren Sie Abfragen oder verwenden Sie Abfragehinweise in Abfrageanweisungen, um die Verwendung des Parallelitätsgrades zu reduzieren.

    I. Heben Sie die Dimension „SQL-Anweisung“ in der Baumstruktur hervor und klicken Sie auf das Hamburger-Symbol, um die Metrikauswahl zu öffnen:


    II. Suchen Sie das Feld Grad der Parallelität und aktivieren Sie es. Ziehen Sie das Feld mit der Maus an den Anfang der Feldliste


    III. Sortieren Sie nach der Spalte Grad der Parallelität, um Abfragen mit den höchsten Threads zu identifizieren:


    c. Verwenden Sie den Workload Analyzer, um Top-SQL nach CPU-Wartetyp zu filtern. Klicken Sie im Banner auf das Symbol für den CPU-Wartetyp und erweitern Sie die Dimension „SQL-Anweisungen“. Stimmen Sie Abfragen entsprechend ab:


    d. Verwenden Sie das Workload Analyzer-Dashboard, um Top-SQL nach „Anderer Wartetyp“ zu filtern. Klicken Sie im Banner auf das Symbol „Anderer Wartetyp“. Erweitern Sie die Dimension SQL-Anweisungen. Verwenden Sie den Bereich „Ressourcenaufschlüsselung“, um Abfragen mit dem Wartetyp „CXPACKET“ zu identifizieren. Stimmen Sie Abfragen entsprechend ab:
Probieren Sie Spotlight Cloud kostenlos aus!