Help us improve the AWS re:Post Knowledge Center by sharing your feedback in a brief survey. Your input can influence how we create and update our content to better support your AWS journey.
Wie behebe ich Probleme mit hoher CPU-Auslastung in meinem Amazon RDS für SQL Server-Instance?
Ich habe eine hohe CPU-Auslastung auf meinem Amazon Relational Database Service (Amazon RDS) für Microsoft SQL Server-DB-Instances.
Kurzbeschreibung
Die folgenden Gründe können zu einer erhöhten CPU-Auslastung führen:
- Vom Benutzer initiierte hohe Workloads, mehrere gleichzeitige Abfragen oder lang andauernde Transaktionen
- Verwendung einer zu wenig bereitgestellten Instance-Klasse für die Workload
- Veraltete Statistiken und Indexfragmentierung oder fehlende Indizes
- Abfragen mit Verbesserungspotenzial
- Blockierung und Deadlocks
- Parallelität
- Häufige Kompilierung und Neukompilierung
- Parameter aufspüren
- Thread-Überlastung
Verwende die folgenden Tools, um die Quelle der hohen CPU-Auslastung für die Amazon RDS für SQL Server-Instance zu ermitteln:
- Amazon CloudWatch-Metriken für Amazon RDS
- Verbesserte Überwachung
- Performance Insights
- Database Insights
- SQL Server-Tools
Nachdem du die Quelle identifiziert hast, kannst du die Workload analysieren und optimieren, um die hohe CPU-Auslastung zu reduzieren.
Lösung
CloudWatch-Metriken für Amazon RDS
Verwende CloudWatch-Metriken für Amazon RDS, um CPU-Muster über längere Zeiträume zu identifizieren.
Gehe wie folgt vor, um die Zeiten zu ermitteln, zu denen die Workload die CPU-Auslastung erhöht:
- Öffne die Amazon-RDS-Konsole.
- Wähle im Navigationsbereich Datenbanken aus, und wähle dann die Datenbank aus, die du überwachen möchtest.
- Wähle die Registerkarte Überwachung.
- Wähle das Menü Überwachung und dann CloudWatch.
- Suche nach den folgenden CloudWatch-Metriken und vergleiche dann die Grafiken:
WriteIOPS
ReadIOPS
ReadThroughput
WriteThroughput
CPUUtilization
CPUCreditBalance
CPUCreditUsage
Hinweis: Wenn das CPU-Guthaben kontinuierlich sinkt und die CPU-Guthabenverwendung kontinuierlich steigt, sind nicht genügend CPU-Kerne für die Workload verfügbar. Wenn du eine Instance der Instance-Klasse t2 oder t3 verwendest, überprüfe, ob die Instance ungenügend bereitgestellt ist.
Nachdem du den Zeitrahmen identifiziert hast, verwende „Verbesserte Überwachung“, um die Daten, die der DB-Instance zugeordnet sind, genauer zu überprüfen. Du kannst „Verbesserter Überwachung“ so einrichtest, dass Daten in Intervallen von 1, 5, 10, 15, 30 oder 60 Sekunde(n) erfasst werden.
Verbesserte Überwachung
Du kannst „Verbesserte Überwachung“ einrichten, um das Betriebssystem (OS) zu überwachen, das auf der DB-Instance ausgeführt wird.
Gehe wie folgt vor, um die CPU-Auslastung mit „Verbesserte Überwachung“ zu überprüfen:
- Öffne die Amazon-RDS-Konsole.
- Wähle im Navigationsbereich Datenbanken aus, und wähle dann die Datenbank aus, die du überwachen möchtest.
- Wähle die Registerkarte Überwachung.
- Wähle das Menü Überwachung und dann Betriebssystem-Prozessliste.
Überprüfe, ob die Betriebssystemprozesse, RDS-Prozesse, SQL Server-Prozesse oder SQL-Agent-Prozesse zu einer hohen CPU-Auslastung führen. Du kannst auch überprüfen, wie viel Prozent der CPU und des Speichers diese Prozesse verwenden.
Verwende die Konsole, um Leistungsmetriken zu überwachen. Wähle auf der Registerkarte Überwachung das Menü Überwachung und wähle dann Diagramme verwalten.
Um zu ermitteln, wann die CPU Benutzerprozesse ausführt, Kernel ausführt oder sich im Leerlauf befindet, wähle die Diagramme für die Metriken CPU-Benutzer, CPU-System und CPU-Leerlauf aus. Wähle dann die Metriken für Festplatten-E/A und die E/A für physische Geräte aus. Zu diesen Metriken gehören „EA/s lesen“, „EA/s schreiben“, Kb/s lesen und Kb/s schreiben. Du kannst auch speicherbezogene Parameter wie „Verfügbarer Arbeitsspeicher“, „SQL Server – Gesamtspeicher“ und Gesamtspeicher anzeigen. Diese Metriken sind hilfreich, denn wenn die CPU mehr Zeit damit verbringt, auf Ressourcen zu warten, kann es zu einer hohen CPU-Auslastung kommen.
Weitere Informationen findest du unter Betriebssystemmetriken in der RDS-Konsole anzeigen.
Database Insights
Verwende CloudWatch Database Insights, um die Hauptverursacher der Datenbankauslastung und einzelner Betriebssystemprozesse zu beheben, die auf einer Gruppe von Instances ausgeführt werden.
Standardmäßig ist der Standardmodus von Database Insights für die Amazon RDS-Datenbank aktiviert. Informationen zum Aktivieren des Standardmodus, wenn du die DB-Instance erstellst oder änderst, findest du unter Den Standardmodus von Database Insights für Amazon RDS aktivieren.
Hinweis: Wenn du keine umfassenderen Berechtigungen verwendest, stelle sicher, dass du die erforderlichen IAM-Berechtigungen für Database Insights gewährst. Weitere Informationen findest du unter Erste Schritte mit CloudWatch Database Insights.
Weitere Informationen zur Unterstützung von Amazon RDS und Instance-Klassen findest du unter Amazon RDS-DB-Engine-, Regions- und Instance-Klassenunterstützung für Database Insights.
Performance Insights
Performance Insights aktivieren, um Abfragen zu identifizieren, die für die Datenbanklast verantwortlich sind.
Führe die folgenden Schritte aus:
- Rufe das Performance Insights-Dashboard auf.
- Überprüfe die Registerkarte Top SQL, die dem Zeitrahmen entspricht, den du analysieren möchtest.
- Identifiziere die Abfrage, die am längsten dauert.
- Überprüfe die ressourcenintensive Abfrage und die in diesem Zeitraum beobachteten Warteereignisse. Die folgenden Warteereignisse sind häufig mit einer hohen CPU-Auslastung verbunden:
SOS_SCHEDULER_YIELD zeigt, dass ein Worker-Thread nachgegeben hat, damit ein anderer Thread ausgeführt werden kann. Wenn die Anzahl der Wartezeiten hoch ist und die Wartezeiten niedrig sind, sind die Abfragen normalerweise CPU-gebunden. Wenn Worker-Threads nachgeben, können sich die Wartezeiten in den CPU-gebundenen Abfragen verlängern. Wenn die Wartezeit lang ist, musst du die Workload überprüfen. Wenn SOS_SCHEDULER_YIELD vorherrscht, ist der CPU-Druck das Problem. Überprüfe die Art der Workload und führe zusätzliche Optimierungen durch.
CXPACKET und CXCONSUMER sind die Warteereignisse, die im Zusammenhang mit der Parallelität stehen und normalerweise kein Problem darstellen. Wenn Warteereignisse jedoch häufig auftreten und die Leistung beeinträchtigen, überprüfe die Abfragen und lege geeignete Werte für die Kostenschwelle der Parallelität fest. Stelle sicher, dass SQL Server den kostengünstigeren Parallelitätsparameter in der Parametergruppe auswählt. Du kannst auch den maximalen Parallelitätsgrad, MAXDOP, auf Abfrage- oder Instance-Ebene auf „1“ erhöhen.
**ThreadPool ** zeigt Thread-Überlastung. Wenn die Instance-Klasse damit umgehen kann, erhöhe den Parameter „maximale Anzahl der Worker-Threads. Es kann zu ThreadPool-Wartezeiten kommen, wenn aufgrund von Blockierung, hoher Workload oder einer hohen Anzahl paralleler Abfragen zu viele Threads verwendet werden. Wenn du den Parameter „maximale Anzahl der Worker-Threads“ falsch konfigurierst, kann es außerdem zu dem ThreadPool-Warteereignis kommen.
Überprüfe die Datenbank-Metriken auf Batch-Anfragen, SQL-Kompilierungen und SQL-Neukompilierungen. Suche nach Abfragen, die mehr als einmal kompiliert werden. Prüfe auch, ob die Abfragen für einen bestimmten Batch häufig neu kompiliert werden. Wenn ja, bedeutet dies, dass die Klausel WITH RECOMPILE im Abfragecode verwendet wird. Beide Gründe können zu einer übermäßigen CPU-Auslastung führen.
SQL Server-Tools
Gehe wie folgt vor, um Probleme bei hoher CPU-Auslastung mit SQL Server-Tools zu beheben:
- Analysiere spezifische Abfragen für hohe CPU-Auslastung, Statistiken aktualisieren, fehlende Indizes und das Aufspüren von Parametern. Weitere Informationen findest du unter Beheben von Problemen mit hoher CPU-Auslastung in SQL Server auf der Microsoft-Website.
- Überprüfe den Ausführungsplan auf Abfragen mit schlechter Leistung, und führe dann zusätzliche Optimierungen durch. Weitere Informationen findest du unter Anzeigen eines tatsächlichen Ausführungsplans auf der Microsoft-Website.
- Verwende Abfragen und „Erweiterte Ereignisse“, um übermäßige Sperren, Blockierungen und Deadlock-Probleme zu beheben. Weitere Informationen findest auf der Microsoft-Website unter Grundlegendes und Beheben von SQL Server-Blockierungsproblemen.
Hinweis: Wenn du „Erweiterte Ereignisse“ in RDS für SQL Server konfigurierst, kannst du die Standardmethode nicht verwenden, um XEL-Dateien zu speichern. - Verwende SQL Server-Berichte, um die Workload zu optimieren. Weitere Informationen findest du unter Leistungs-Dashboard auf der Microsoft-Website.
- Sprache
- Deutsch

Relevanter Inhalt
AWS OFFICIALAktualisiert vor 9 Monaten
AWS OFFICIALAktualisiert vor 3 Jahren
AWS OFFICIALAktualisiert vor einem Jahr