Wie behebe ich Probleme bei nicht genügend freiem Speicherplatz in meiner RDS for SQL Server-Instance?

Lesedauer: 7 Minute
0

Wie behebe ich Probleme mit nicht genügend freiem Speicherplatz in meiner Amazon Relational Database (Amazon RDS) für SQL Server-Instance?

Kurzbeschreibung

Nicht genügend freigegebener Speicherplatz führt zu unerwarteten Ausfallzeiten auf Ihrer Instance. Daher ist es wichtig, die Speichernutzung auf der Instance zu überwachen und Abhilfemaßnahmen zu ergreifen.

Freigegebener Speicherplatz ist die Menge an Speicher (RAM), die auf der RDS-Instance verfügbar ist. Die Gesamtmenge des auf einer Amazon RDS-Instance verfügbaren Speichers hängt von der Instance-Klasse ab. Die Instance-Klasse db.r5.8xlarge bietet beispielsweise 32 vCPU und 256 GiB Speicher. Wenn Sie eine RDS-Instance mit der Instance-Klasse db.r5.8xlarge bereitstellen, wird der gesamte Speicher der Instance-Klasse (256 GiB) von Folgenden gemeinsam genutzt:

  • Betriebssystem
  • Amazon RDS-Prozesse
  • Datenbank-Engine
  • Arbeitsthreads
  • Business Intelligence Suite (SSIS, SSAS, SSRS) Anwendungen usw.

Weitere Informationen, wie SQL Server Speicher verwendet wird, finden Sie imArchitektur der Speicherverwaltung Leitfaden auf der Microsoft-Dokumentationswebsite.

Behebung

Überwachen Sie die Speichernutzung auf Ihrer Instance

Amazon CloudWatch-Metriken

Überwachen Sie die Amazon CloudWatch-Metriken für Freizugebender Speicherplatz, um eine zu niedrige Speicherkapazität zu identifizieren. Um eine Zunahme des Workload festzustellen, können Sie, zusätzlich zuFreizugebender Speicherplatz, das Folgende überwachen, um eine zu niedrige Speicherkapazität zu identifizieren:

  • Datenbankverbindungen
  • CPU-Nutzung
  • IOPS lesen
  • Durchsatz lesen
  • IOPS schreiben
  • Durchsatz schreiben

Erweiterte Überwachung

DieErweiterte Überwachung kann mit unterschiedlichen Granularitäten aktiviert werden, wie z. B. 1, 5, 10, 15, 30 oder 60 Sekunden, um Betriebssystem-Metriken für Microsoft SQL Server zu überwachen. Es empfiehlt sich, die Granularität auf 1 oder 5 Sekunden festzulegen (die Standardeinstellung ist 60 Sekunden). Sie könnenCloudWatch-Alarme erstellen, um mit Enhanced Monitoring (Erweiterte Überwachung) den Speicherverbrauch der DB-Instance von Amazon RDS für SQL Server zu überwachen

Problembehandlung bei nicht genügend freigegebenem Speicherplatz

Um Probleme mit nicht genügend freigegebenem Speicherplatz zu beheben, gehen Sie folgendermaßen vor:

Begrenzen Sie den von der RDS-Instance verwendeten Speicher

Begrenzen Sie den von der RDS-Instance verwendeten Speicher, indem Sie den Wert fürmax. Serverspeicher so setzen, dass kein systemweiter Speicherdruck entsteht. Sie können den maximalen Serverspeicher für Ihre Instance mit der folgenden Formel ermitteln:

max_server_memory = Total_RAM — (1 GB für das Betriebssystem + Memory_Basis_Amount_of_RAM_on_the_Server)

Total_RAM entspricht dem Speicher der Instance-Klasse, wo der Memory_Basis_Amount_of_RAM_ON_the_Server wie folgt bestimmt wird:

  • Wenn der Arbeitsspeicher auf dem Server zwischen 4 GB und 16 GB liegt: Lassen Sie 1 GB pro 4 GB RAM. Lassen Sie beispielsweise für einen Server mit 16 GB 4 GB übrig.
  • Wenn mehr als 16 GB RAM auf dem Server vorhanden sind: Lassen Sie 1 GB pro 4 GB RAM bis zu 16 GB und 1 GB pro 8 GB RAM über 16 GB.

Wenn ein Server beispielsweise über 64 GB RAM verfügt, lautet die Berechnung wie folgt:

  • 1 GB für das Betriebssystem
  • Bis zu 16 GB RAM: 16/4 = 4 GB
  • Verbleibender RAM über 16 GB: (64-16) /8 = 6
  • Gesamter zu belassender RAM: 1 + 4 + 6 = 11 GB
  • max_server_memory: 64 – 11 = 53 GB

Hinweise:

  • Wenn Sie SSIS, SSAS oder SSRS auf der Instance verwenden, muss max_server_memory an diese Komponenten angepasst werden.
    Beispiel: Sie wollen SSRS mit der RDS-Instance verwenden. Setzen Sie den max. Speicherwert für SSRS auf 10 % (Prozentsatz des Gesamtspeichers der DB-Instance). Dies entspricht etwa 6,4 GiB auf einer Instance mit 64 GiB Speicher. Der max_server_memory-Wert sollte ungefähr 46 GiB (64-11-6.4) betragen.
  • Nach der Erstkonfiguration von max_server_memory, muss Freizugebender Speicherplatz ständig überwacht werden, um festzulegen, ob der zugewiesene Speicher erhöht oder verringert wird.

Um max_server_memory zu ändern, konfigurieren Sie den Wert mit einer benutzerdefinierten Parametergruppe. Der Wert für max_server_memory muss in MB angegeben werden.

Hinweis: Der Parameter max_server_memory ist ein dynamischer Parameter. Ein Neustart ist nicht erforderlich, damit die Änderungen wirksam werden.

Datenbankverbindungen überprüfen

Jede Datenbankverbindung, die mittels Instance hergestellt wird, erfordert weiterhin eine Speicherzuweisung außerhalb des Pufferpools für Arbeitsthreads. Ein Anstieg der Datenbankverbindungen kann also zu einem Verlust von freiem Speicherplatz führen.

Überprüfen Sie, ob SSIS-, SSAS- oder SSRS-Komponenten auf der DB-Instance verwendet werden

Verwenden Sie dazu die Optionsgruppe von Amazon RDS für SQL Server, inwieweit SSIS-, SSAS- oder SSRS-Komponenten in der DB-Instance verwendet werden. Der von diesen Komponenten verwendete Speicher befindet sich außerhalb dermax_server_memory-Einstellung. Wenn Sie diese Funktionen nicht verwenden, entfernen Sie diese durch Ändern der Optionsgruppe. Durch Entfernen dieser Funktionen wird der Speicherbedarf der Instance reduziert.

Überwachen der DB-Instance mit Performance Insights

Mithilfe von Performance Insights können Sie die DB-Instance für die Analyse der Datenbankleistung überwachen. Sie können das Performance Insights-Dashboard verwenden, um Datenbankauslastung, Wartezeiten, Abfragen, Hosts, Benutzer usw. zu überwachen. Diese zu überwachen, hilft Ihnen, potenzielle Engpässe, die die Instance verlangsamen, zu identifizieren.

Regelmäßige Wartung der DB-Instance durchführen

Führen Sie regelmäßig Indexpflege durch und aktualisieren Sie Statistiken. Stark fragmentierte Indizes können zu einer Erhöhung der I/O-Aktivität führen, was zu einem höheren Speicherverbrauch führt. Nicht aktualisierte Statistiken verursachen vereinzelt ungenauen Kardinalitätsschätzungen, was zur Auswahl eines suboptimalen Abfrageplans führen.

Hinweis: Es ist eine bewährte Praxis, Index- und Statistikwartungen außerhalb der Spitzenzeiten oder während eines Wartungsfensters durchzuführen.

Überwachen Sie die Seitenlebenserwartung und die Puffer-Cache-Trefferquote

Die Seitenlebenserwartung (PLE) gibt die Anzahl der Sekunden an, die eine Seite ohne Referenzen im Pufferpool verbleibt.

Die Puffer-Cache-Trefferquote (BCHR) ist der Prozentsatz an Seitenabrufen, der von Datenseiten aus dem Pufferpool erfüllt wird.

Durch das Überwachen von PLE und BCHR wird Speicherdruck identifiziert. Gehen Sie folgendermaßen vor, um diese Metriken mittels Performance Insights zu überwachen:

  1. Öffnen Sie die Amazon-RDS-Konsole.
  2. Wählen Sie Performance Insights.
  3. Wählen Sie die RDS for SQL Server-Instance aus, die Sie überwachen möchten.
  4. Bestimmen Sie den Zeitraum, über den Sie die Metriken überprüfen möchten, und wählen Sie Metriken verwalten aus.
  5. Wählen SieDatenbankmetriken, Seitenlebenserwartung, Puffer-Cache-Trefferquote.

Für eine optimale Leistung sollten die Werte für diese Metriken so hoch wie möglich sein. Sie können diese Metriken mit Performance Insights überwachen. Möglicherweise stellen Sie fest, dass die Werte für diese Metriken über einen Zeitraum konstant niedrig sind. Ist dies der Fall, optimieren Sie die Abfragen, die auf Daten zugreifen, oder erhöhen Sie die Instance-Klasse, um mehr Speicher bereitzustellen.

Wenn auf der Instance Speicherdruck herrscht, erhöht sich, zusätzlich zur niedrigen PLE und BCHR, die PAGEIOLATCH-Wartezeit. Das bedeutet, dass der SQL Server darauf wartet, dass eine Seite von der Festplatte abgerufen und in den Arbeitsspeicher geladen wird. RESOURCE_SEMAPHORE Wartezeitken können bemerkt werden, wenn Speicheranforderungen eine Abfrage wegen Speicherproblemen nicht berücksichtigt werden. Dies führt zu einer erhöhten CPU-Auslastung, da Datenseiten nicht lange genug im Speicher zwischengespeichert werden. Ist dies der Fall, muss SQL Server wiederholt auf die Festplatte zugreifen, um auf Daten zuzugreifen, die Leistungsprobleme verursachen.

Identifizieren Sie die Abfragen mit den meisten Ressourcen

Erfassen Sie mit Performance Insights die Abfragen mit den meisten Ressourcen und optimieren Sie diese für eine bessere Leistung.

Wählen Sie die richtige Instance-Größe für Ihren Workload

Die Speichergröße einer Instance hängt vom Instance-Typ ab. Es ist wichtig, eine Instance-Klasse mit ausreichenden Ressourcen auszuwählen, damit die DB-Instance genügend Ressourcen für den Workload hat. Eine Instance mit weniger Ressourcen leidet unter Leistungsproblemen, eine überdimensionierte Instance verschwendet außerdem Ressourcen.

Erstellen Sie eine Baseline Ihrer Ressourcennutzung

Erstellen Sie eine Baseline für die Ressourcennutzung auf der Instance, indem Sie Metriken wie z. B. Freizugebender Speicherplatz, Seitenlebenserwartung, Puffer-Cache-Trefferquote usw. überwachen. Wenn sich das Datenvolumen auf der Instance signifikant erhöht, erhöht sich der max_server_memory-Wert. Stellen Sie sicher, dass sich der max_server_memory-Wert proportional zur Änderung des Datenvolumens erhöht, um auf der Instance das gleiche Leistungsniveau zu erhalten.

Hinweise: Sie können systemeigene SQL Server-Tools wie Berichte und Datenverwaltungssichten (DMVs) verwenden, um Komponenten mit dem SQL Server-Speicher zu identifizieren. Mit SQL Server Management Studio (SSMS) können Sie die Speichernutzung von SQL Server überprüfen:

  1. Öffnen Sie SQL Server Management Studio (SSMS), und stellen Sie eine Verbindung zu Ihrer RDS for SQL Server-Instance her.
  2. Klicken Sie dazu in Objekt-Explorer mit der rechten Maustaste auf den Endpunktnamen der RDS-Instance.
  3. Wählen Sie Berichte,StandardberichteSpeicherverbrauch aus.

Sie können auch sys.dm_os_memory_clerks DMV abfragen, um Komponenten zu identifizieren, die den max. Speicher in SQL Server verwenden.