Leistung und Skalierung für Aurora Serverless v2 - Amazon Aurora

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Leistung und Skalierung für Aurora Serverless v2

Die folgenden Verfahren und Beispiele zeigen, wie Sie den Kapazitätsbereich für festlegen können Aurora Serverless v2 Cluster und ihre zugehörigen DB-Instances. Sie können die folgenden Verfahren auch verwenden, um zu überwachen, wie ausgelastet Ihre DB-Instances sind. Anschließend können Sie anhand Ihrer Ergebnisse feststellen, ob Sie den Kapazitätsbereich nach oben oder unten anpassen müssen.

Bevor Sie diese Verfahren anwenden, stellen Sie sicher, dass Sie mit der Vorgehensweise vertraut sind Aurora Serverless v2 Skalierung funktioniert. Der Skalierungsmechanismus ist anders als in Aurora Serverless v1. Einzelheiten finden Sie unterAurora Serverless v2 Skalierung.

Auswahl der Aurora Serverless v2 Kapazitätsbereich für einen Aurora-Cluster

Mit Aurora Serverless v2 DB-Instances legen Sie den Kapazitätsbereich fest, der für alle DB-Instances in Ihrem DB-Cluster gilt, und fügen gleichzeitig die ersten hinzu Aurora Serverless v2 DB-Instance für den DB-Cluster. Weitere Informationen zum entsprechenden Verfahren finden Sie unter Einstellung der Aurora Serverless v2 Kapazitätsbereich für einen Cluster.

Sie können den Kapazitätsbereich für einen vorhandenen Cluster auch ändern. In den folgenden Abschnitten wird ausführlicher beschrieben, wie Sie geeignete Mindest- und Höchstwerte auswählen und was passiert, wenn Sie den Kapazitätsbereich ändern. Durch Ändern des Kapazitätsbereichs können sich beispielsweise die Standardwerte einiger Konfigurationsparameter ändern. Das Anwenden aller Parameteränderungen kann einen Neustart der einzelnen Änderungen erfordern Aurora Serverless v2 DB-Instance.

Wählen Sie das Minimum Aurora Serverless v2 Kapazitätseinstellung für einen Cluster

Es ist verlockend, immer 0,5 als Minimum zu wählen Aurora Serverless v2 Kapazitätseinstellung. Dieser Wert ermöglicht es der DB-Instance, am meisten herunterzuskalieren, wenn sie vollständig inaktiv ist. Je nachdem, wie Sie diesen Cluster verwenden und wie die anderen Einstellungen konfiguriert sind, ist jedoch ein anderer Wert ggf. am effektivsten. Berücksichtigen Sie bei der Auswahl der Mindestkapazitätseinstellung die folgenden Faktoren:

  • Die Skalierungsrate für eine Aurora Serverless v2 Die DB-Instance hängt von ihrer aktuellen Kapazität ab. Je höher die aktuelle Kapazität, desto schneller kann sie hochskalieren. Wenn die DB-Instance schnell auf eine sehr hohe Kapazität hochskalieren muss, sollten Sie die Mindestkapazität auf einen Wert einstellen, bei dem die Skalierungsrate Ihren Anforderungen entspricht.

  • Wenn Sie in der Regel die DB-Instance-Klasse Ihrer DB-Instances in Erwartung einer besonders hohen oder niedrigen Arbeitslast ändern, können Sie diese Erfahrung nutzen, um eine grobe Schätzung der Entsprechung vorzunehmen Aurora Serverless v2 Kapazitätsbereich. Informationen zum Ermitteln der Speichergröße, die in Zeiten mit geringem Datenverkehr verwendet werden soll, finden Sie unter Hardware-Spezifikationen für DB-Instance-Klassen für Aurora.

    Angenommen, Sie verwenden die DB-Instance-Klasse db.r6g.xlarge, wenn Ihr Cluster eine geringe Workload hat. Diese DB-Instance-Klasse verfügt über 32 GiB Speicher. Daher können Sie eine Mindesteinstellung für Aurora-Kapazitätseinheit (ACU) von 16 angeben, um eine Aurora Serverless v2 DB-Instance, die auf ungefähr dieselbe Kapazität herunterskaliert werden kann. Das liegt daran, dass jeder etwa 2 GiB Speicher ACU entspricht. Sie können einen etwas niedrigeren Wert angeben, damit die DB-Instance weiter herunterskaliert wird, falls Ihre db.r6g.xlarge-DB-Instance manchmal nicht ausgelastet war.

  • Wenn Ihre Anwendung am effizientesten arbeitet, wenn die DB-Instances eine bestimmte Datenmenge im Puffercache haben, sollten Sie eine ACU Mindesteinstellung angeben, bei der der Speicher groß genug ist, um die häufig aufgerufenen Daten aufzunehmen. Andernfalls werden einige Daten aus dem Puffer-Cache entfernt, wenn Aurora Serverless v2 DB-Instances werden auf eine niedrigere Speichergröße herunterskaliert. Wenn die DB-Instances dann wieder hochskaliert werden, werden die Informationen im Zeitverlauf wieder in den Puffer-Cache eingelesen. Wenn die Menge an I/O, um die Daten zurück in den Puffercache zu bringen, beträchtlich ist, ist es möglicherweise effektiver, einen höheren ACU Mindestwert zu wählen.

  • Wenn Ihre Aurora Serverless v2 DB-Instances werden die meiste Zeit mit einer bestimmten Kapazität ausgeführt. Erwägen Sie, eine Mindestkapazitätseinstellung anzugeben, die niedriger als diese Basiskapazität ist, aber nicht zu viel niedriger ist. Aurora Serverless v2 DB-Instances können am effektivsten abschätzen, wie viel und wie schnell hochskaliert werden muss, wenn die aktuelle Kapazität nicht deutlich niedriger als die erforderliche Kapazität ist.

  • Wenn Ihr bereitgestellter Workload Speicheranforderungen hat, die für kleine DB-Instance-Klassen wie T3 oder T4g zu hoch sind, wählen Sie eine ACU Mindesteinstellung, die Speicherplatz bietet, der mit einer R5- oder R6g-DB-Instance vergleichbar ist.

    Insbesondere empfehlen wir die folgende Mindestkapazität für die Verwendung mit den angegebenen Funktionen (diese Empfehlungen können sich ändern):

    • Performance Insights — 2 ACUs

    • Globale Aurora-Datenbanken — 8 ACUs (gilt nur für die Primärdatenbank AWS-Region)

  • In einigen Fällen kann Ihr Cluster Folgendes enthalten Aurora Serverless v2 Reader-DB-Instances, die unabhängig vom Writer skalieren. In einem solchen Fall wählen Sie eine Mindestkapazitätseinstellung aus, die hoch genug ist, damit die Reader-DB-Instances die Änderungen vom Writer anwenden können, ohne in Rückstand zu geraten, wenn die Writer-DB-Instance mit einer schreibintensiven Workload beschäftigt ist. Wenn Sie die Replikatverzögerung bei Readern beobachten, die sich in den Hochstufungsstufen 2 bis 15 befinden, sollten Sie die Mindestkapazitätseinstellung für Ihren Cluster ggf. erhöhen. Weitere Informationen zur Entscheidung, ob Reader-DB-Instances zusammen mit dem Writer oder unabhängig skaliert werden, finden Sie unter Auswahl der Promotion-Stufe für ein Aurora Serverless v2 reader.

  • Wenn Sie einen DB-Cluster haben mit Aurora Serverless v2 Leser-DB-Instances: Die Leser skalieren nicht zusammen mit der Writer-DB-Instance, wenn die Promotion-Stufe der Leser nicht 0 oder 1 ist. In diesem Fall kann das Festlegen einer geringen Mindestkapazität zu einer übermäßigen Replikationsverzögerung führen. Das liegt daran, dass die Reader möglicherweise nicht genug Kapazität haben, um Änderungen vom Writer zu übernehmen, wenn die Datenbank ausgelastet ist. Wir empfehlen, dass Sie die Mindestkapazität auf einen Wert festlegen, der einer vergleichbaren Menge an Arbeitsspeicher und CPU der Writer-DB-Instance entspricht.

  • Der Wert des max_connections Parameters für Aurora Serverless v2DB-Instances basieren auf der Speichergröße, die sich aus dem Maximum ergibtACUs. Wenn Sie jedoch eine Mindestkapazität von 0,5 für SQL Postgre-kompatible DB-Instances angeben, max_connections ist der Höchstwert von ACUs auf 2.000 begrenzt.

    Wenn Sie beabsichtigen, den Aurora SQL Postgre-Cluster für eine hohe Verbindungslast zu verwenden, sollten Sie eine ACU Mindesteinstellung von 1 oder höher verwenden. Nähere Informationen darüber, wie Aurora Serverless v2 verarbeitet den max_connections Konfigurationsparameter, sieheMaximale Anzahl an Verbindungen für Aurora Serverless v2.

  • Die Zeit, die es für eine dauert Aurora Serverless v2 Die Skalierung einer DB-Instance von ihrer minimalen Kapazität zur maximalen Kapazität hängt von der Differenz zwischen ihren Minimal- und ACU Maximalwerten ab. Wenn die aktuelle Kapazität der DB-Instance groß ist, Aurora Serverless v2 skaliert in größeren Schritten, als wenn die DB-Instance mit einer kleinen Kapazität startet. Wenn Sie also eine relativ große maximale Kapazität angeben und die DB-Instance die meiste Zeit in der Nähe dieser Kapazität verbringt, sollten Sie erwägen, die ACU Mindesteinstellung zu erhöhen. Auf diese Weise kann eine inaktive DB-Instance schneller wieder auf maximale Kapazität skaliert werden.

Wählen Sie das Maximum Aurora Serverless v2 Kapazitätseinstellung für einen Cluster

Es ist verlockend, immer einen hohen Wert für das Maximum zu wählen Aurora Serverless v2 Kapazitätseinstellung. Eine große maximale Kapazität ermöglicht es der DB-Instance, bei intensiver Workload am stärksten hochzuskalieren. Mit einem niedrigen Wert entfällt die Möglichkeit unerwarteter Gebühren. Je nachdem, wie Sie diesen Cluster verwenden und die anderen Einstellungen konfigurieren, kann der effektivste Wert höher oder niedriger sein, als Sie ursprünglich dachten. Berücksichtigen Sie bei der Auswahl der maximalen Kapazitätseinstellung die folgenden Faktoren:

  • Die maximale Kapazität muss mindestens so hoch sein wie die Mindestkapazität. Sie können die minimale und maximale Kapazität auf den gleichen Wert festlegen. In diesem Fall skaliert sich die Kapazität jedoch niemals hoch oder herunter. Daher ist die Verwendung identischer Werte für die minimale und maximale Kapazität außerhalb von Testsituationen nicht geeignet.

  • Die maximale Kapazität muss höher als 0,5 seinACUs. Sie können die minimale und maximale Kapazität in den meisten Fällen auf den gleichen Wert festlegen. Sie können 0,5 jedoch nicht sowohl für das Minimum als auch für das Maximum angeben. Verwenden Sie einen Wert von 1 oder höher für die maximale Kapazität.

  • Wenn Sie in der Regel die DB-Instance-Klasse Ihrer DB-Instances in Erwartung einer besonders hohen oder niedrigen Arbeitslast ändern, können Sie diese Erfahrung nutzen, um den entsprechenden Wert abzuschätzen Aurora Serverless v2 Kapazitätsbereich. Informationen zum Ermitteln der Speichergröße, die in Zeiten mit hohem Datenverkehr verwendet werden soll, finden Sie unter Hardware-Spezifikationen für DB-Instance-Klassen für Aurora.

    Angenommen, Sie verwenden die DB-Instance-Klasse db.r6g.4xlarge, wenn Ihr Cluster eine hohe Workload hat. Diese DB-Instance-Klasse verfügt über 128 GiB Speicher. Daher können Sie eine maximale ACU Einstellung von 64 angeben, um eine einzurichten Aurora Serverless v2 DB-Instance, die auf ungefähr dieselbe Kapazität skaliert werden kann. Das liegt daran, dass jeder etwa 2 GiB Speicher ACU entspricht. Sie können einen etwas höheren Wert angeben, damit die DB-Instance weiter hochskalieren kann, falls Ihre db.r6g.4xlarge-DB-Instance manchmal nicht genug Kapazität hat, um die Workload effektiv zu bewältigen.

  • Wenn Sie eine Budgetobergrenze für Ihre Datenbanknutzung haben, wählen Sie einen Wert, der innerhalb dieser Obergrenze bleibt, auch wenn alle Aurora Serverless v2 DB-Instances werden ständig mit maximaler Kapazität ausgeführt. Denken Sie daran, wenn Sie n Aurora Serverless v2 DB-Instances in Ihrem Cluster, das theoretische Maximum Aurora Serverless v2 Die Kapazität, die der Cluster zu einem beliebigen Zeitpunkt verbrauchen kann, entspricht dem N-fachen der ACU Maximaleinstellung für den Cluster. (Der tatsächlich verbrauchte Betrag ist möglicherweise geringer, wenn beispielsweise einige Reader unabhängig vom Writer skalieren.)

  • Wenn Sie Folgendes verwenden Aurora Serverless v2 Reader-DB-Instances, um einen Teil der schreibgeschützten Arbeitslast von der Writer-DB-Instance zu entlasten, können Sie möglicherweise eine niedrigere Einstellung für die maximale Kapazität wählen. Damit berücksichtigen Sie die Tatsache, dass jede Reader-DB-Instance nicht gleichermaßen hoch skaliert werden muss wie im Falle, dass der Cluster nur eine einzelne DB-Instance enthält.

  • Angenommen, Sie möchten sich vor übermäßiger Auslastung aufgrund falsch konfigurierter Datenbankparameter oder ineffizienter Abfragen in Ihrer Anwendung schützen. In diesem Fall können Sie eine versehentliche Überbeanspruchung vermeiden, indem Sie eine maximale Kapazitätseinstellung wählen, die niedriger ist als die absolut höchste, die Sie festlegen können.

  • Wenn Spitzen aufgrund realer Benutzeraktivitäten zwar selten sind, aber dennoch auftreten, können Sie diese Situationen bei der Auswahl der maximalen Kapazitätseinstellung berücksichtigen. Wenn die Priorität darin besteht, dass die Anwendung weiterhin mit voller Leistung und Skalierbarkeit ausgeführt wird, können Sie eine maximale Kapazitätseinstellung angeben, die höher ist, als Sie bei normaler Auslastung beobachten. Wenn es akzeptabel ist, dass die Anwendung bei sehr extremen Aktivitätsspitzen mit reduziertem Durchsatz ausgeführt wird, können Sie eine etwas niedrigere maximale Kapazitätseinstellung wählen. Stellen Sie sicher, dass Sie eine Einstellung wählen, die immer noch über genügend Arbeitsspeicher und CPU Ressourcen verfügt, um die Anwendung am Laufen zu halten.

  • Wenn Sie Einstellungen in Ihrem Cluster aktivieren, die den Speicherverbrauch für jede DB-Instance erhöhen, berücksichtigen Sie diesen Speicher, wenn Sie den ACU Maximalwert festlegen. Zu diesen Einstellungen gehören die Einstellungen für Performance Insights, Aurora My SQL Parallel Queries, Aurora My SQL Performance Schema und Aurora My SQL Binary Log Replication. Stellen Sie sicher, dass der ACU Höchstwert Folgendes zulässt Aurora Serverless v2 DB-Instances müssen ausreichend skaliert werden, um die Arbeitslast zu bewältigen, wenn diese Funktionen verwendet werden. Informationen zur Behebung von Problemen, die durch die Kombination aus einer niedrigen ACU Maximaleinstellung und Aurora-Funktionen verursacht werden, die einen Speicheraufwand verursachen, finden Sie unterFehler vermeiden out-of-memory.

Beispiel: Ändern Sie den Aurora Serverless v2 Kapazitätsbereich eines Aurora My SQL Clusters

Das folgende AWS CLI Beispiel zeigt, wie der ACU Bereich aktualisiert wird für Aurora Serverless v2 DB-Instances in einem bestehenden Aurora SQL My-Cluster. Anfänglich liegt der Kapazitätsbereich für den Cluster zwischen 8 und 32. ACUs

aws rds describe-db-clusters --db-cluster-identifier serverless-v2-cluster \ --query 'DBClusters[*].ServerlessV2ScalingConfiguration|[0]' { "MinCapacity": 8.0, "MaxCapacity": 32.0 }

Die DB-Instance befindet sich im Leerlauf und wurde auf 8 herunterskaliert. ACUs Die folgenden kapazitätsbezogenen Einstellungen gelten zu diesem Zeitpunkt für die DB-Instance. Zum Darstellen der Größe des Pufferpools in leicht lesbaren Einheiten teilen wir ihn durch 2 hoch 30, was zu einer Messung in Gibibyte (GiB) führt. Das liegt daran, dass speicherbezogene Messungen für Aurora Einheiten verwenden, die auf Zweierpotenzen und nicht auf Zehnerpotenzen basieren.

mysql> select @@max_connections; +-------------------+ | @@max_connections | +-------------------+ | 3000 | +-------------------+ 1 row in set (0.00 sec) mysql> select @@innodb_buffer_pool_size; +---------------------------+ | @@innodb_buffer_pool_size | +---------------------------+ | 9294577664 | +---------------------------+ 1 row in set (0.00 sec) mysql> select @@innodb_buffer_pool_size / pow(2,30) as gibibytes; +-----------+ | gibibytes | +-----------+ | 8.65625 | +-----------+ 1 row in set (0.00 sec)

Als Nächstes ändern wir den Kapazitätsbereich für den Cluster. Nach Abschluss des modify-db-cluster Befehls liegt der ACU Bereich für den Cluster zwischen 12,5 und 80.

aws rds modify-db-cluster --db-cluster-identifier serverless-v2-cluster \ --serverless-v2-scaling-configuration MinCapacity=12.5,MaxCapacity=80 aws rds describe-db-clusters --db-cluster-identifier serverless-v2-cluster \ --query 'DBClusters[*].ServerlessV2ScalingConfiguration|[0]' { "MinCapacity": 12.5, "MaxCapacity": 80.0 }

Durch Ändern des Kapazitätsbereichs können sich die Standardwerte einiger Konfigurationsparameter ändern. Aurora kann einige dieser neuen Standardwerte sofort anwenden. Einige der Parameteränderungen werden jedoch erst nach einem Neustart wirksam. Der Status pending-reboot gibt an, dass ein Neustart erforderlich ist, um einige Parameteränderungen anzuwenden.

aws rds describe-db-clusters --db-cluster-identifier serverless-v2-cluster \ --query '*[].{DBClusterMembers:DBClusterMembers[*].{DBInstanceIdentifier:DBInstanceIdentifier,DBClusterParameterGroupStatus:DBClusterParameterGroupStatus}}|[0]' { "DBClusterMembers": [ { "DBInstanceIdentifier": "serverless-v2-instance-1", "DBClusterParameterGroupStatus": "pending-reboot" } ] }

Zu diesem Zeitpunkt befindet sich der Cluster im Leerlauf und die DB-Instance verbraucht 12,5serverless-v2-instance-1. ACUs Der innodb_buffer_pool_size-Parameter ist bereits basierend auf der aktuellen Kapazität der DB-Instance angepasst. Der max_connections-Parameter spiegelt immer noch den Wert der früheren maximalen Kapazität wider. Das Zurücksetzen dieses Werts erfordert einen Neustart der DB-Instance.

Anmerkung

Wenn Sie den max_connections Parameter direkt in einer benutzerdefinierten DB-Parametergruppe festlegen, ist kein Neustart erforderlich.

mysql> select @@max_connections; +-------------------+ | @@max_connections | +-------------------+ | 3000 | +-------------------+ 1 row in set (0.00 sec) mysql> select @@innodb_buffer_pool_size; +---------------------------+ | @@innodb_buffer_pool_size | +---------------------------+ | 15572402176 | +---------------------------+ 1 row in set (0.00 sec) mysql> select @@innodb_buffer_pool_size / pow(2,30) as gibibytes; +---------------+ | gibibytes | +---------------+ | 14.5029296875 | +---------------+ 1 row in set (0.00 sec)

Jetzt starten wir die DB-Instance neu und warten darauf, dass sie wieder verfügbar ist.

aws rds reboot-db-instance --db-instance-identifier serverless-v2-instance-1 { "DBInstanceIdentifier": "serverless-v2-instance-1", "DBInstanceStatus": "rebooting" } aws rds wait db-instance-available --db-instance-identifier serverless-v2-instance-1

Der pending-reboot-Status ist gelöscht. Der Wert in-sync bestätigt, dass Aurora alle ausstehenden Parameteränderungen übernommen hat.

aws rds describe-db-clusters --db-cluster-identifier serverless-v2-cluster \ --query '*[].{DBClusterMembers:DBClusterMembers[*].{DBInstanceIdentifier:DBInstanceIdentifier,DBClusterParameterGroupStatus:DBClusterParameterGroupStatus}}|[0]' { "DBClusterMembers": [ { "DBInstanceIdentifier": "serverless-v2-instance-1", "DBClusterParameterGroupStatus": "in-sync" } ] }

Der innodb_buffer_pool_size-Parameter hat sich auf seine endgültige Größe für eine inaktive DB-Instance erhöht. Der max_connections Parameter wurde erhöht, um einen vom ACU Maximalwert abgeleiteten Wert widerzuspiegeln. Die Formel, die Aurora für max_connections verwendet, führt zu einem Anstieg von 1.000, wenn sich die Speichergröße verdoppelt.

mysql> select @@innodb_buffer_pool_size; +---------------------------+ | @@innodb_buffer_pool_size | +---------------------------+ | 16139681792 | +---------------------------+ 1 row in set (0.00 sec) mysql> select @@innodb_buffer_pool_size / pow(2,30) as gibibytes; +-----------+ | gibibytes | +-----------+ | 15.03125 | +-----------+ 1 row in set (0.00 sec) mysql> select @@max_connections; +-------------------+ | @@max_connections | +-------------------+ | 4000 | +-------------------+ 1 row in set (0.00 sec)

Wir setzen den Kapazitätsbereich auf 0,5—128 ACUs und starten die DB-Instance neu. Jetzt hat die inaktive DB-Instance eine Puffer-Cache-Größe von weniger als 1 GiB. Daher messen wir sie nun in Mebibyte (MiB). Der max_connections-Wert 5.000 wird von der Speichergröße der maximalen Kapazitätseinstellung abgeleitet.

mysql> select @@innodb_buffer_pool_size / pow(2,20) as mebibytes, @@max_connections; +-----------+-------------------+ | mebibytes | @@max_connections | +-----------+-------------------+ | 672 | 5000 | +-----------+-------------------+ 1 row in set (0.00 sec)

Beispiel: Ändern Sie den Aurora Serverless v2 Kapazitätsbereich eines Aurora Postgre-Clusters SQL

Die folgenden CLI Beispiele zeigen, wie der ACU Bereich aktualisiert wird für Aurora Serverless v2 DB-Instances in einem vorhandenen Aurora SQL Postgre-Cluster.

  1. Der Kapazitätsbereich für den Cluster beginnt bei ACU 0,5—1.

  2. Ändern Sie den Kapazitätsbereich auf 8—32. ACUs

  3. Ändern Sie den Kapazitätsbereich auf 12,5—80. ACUs

  4. Ändern Sie den Kapazitätsbereich auf 0,5—128. ACUs

  5. Setzen Sie die Kapazität auf ihren ursprünglichen Bereich von 0,5—1 zurück. ACU

Die folgende Abbildung zeigt die Kapazitätsänderungen in Amazon CloudWatch.

CloudWatch Grafik von Aurora Serverless v2 Kapazitätsänderungen

Die DB-Instance befindet sich im Leerlauf und wurde auf 0,5 ACUs herunterskaliert. Die folgenden kapazitätsbezogenen Einstellungen gelten zu diesem Zeitpunkt für die DB-Instance.

postgres=> show max_connections; max_connections ----------------- 189 (1 row) postgres=> show shared_buffers; shared_buffers ---------------- 16384 (1 row)

Als Nächstes ändern wir den Kapazitätsbereich für den Cluster. Nach Abschluss des modify-db-cluster Befehls liegt der ACU Bereich für den Cluster zwischen 8,0 und 32.

aws rds describe-db-clusters --db-cluster-identifier serverless-v2-cluster \ --query 'DBClusters[*].ServerlessV2ScalingConfiguration|[0]' { "MinCapacity": 8.0, "MaxCapacity": 32.0 }

Durch Ändern des Kapazitätsbereichs können sich die Standardwerte einiger Konfigurationsparameter ändern. Aurora kann einige dieser neuen Standardwerte sofort anwenden. Einige der Parameteränderungen werden jedoch erst nach einem Neustart wirksam. Der Status pending-reboot gibt an, dass ein Neustart erforderlich ist, um einige Parameteränderungen anzuwenden.

aws rds describe-db-clusters --db-cluster-identifier serverless-v2-cluster \ --query '*[].{DBClusterMembers:DBClusterMembers[*].{DBInstanceIdentifier:DBInstanceIdentifier,DBClusterParameterGroupStatus:DBClusterParameterGroupStatus}}|[0]' { "DBClusterMembers": [ { "DBInstanceIdentifier": "serverless-v2-instance-1", "DBClusterParameterGroupStatus": "pending-reboot" } ] }

Zu diesem Zeitpunkt befindet sich der Cluster im Leerlauf und die DB-Instance verbraucht 8,0serverless-v2-instance-1. ACUs Der shared_buffers-Parameter ist bereits basierend auf der aktuellen Kapazität der DB-Instance angepasst. Der max_connections-Parameter spiegelt immer noch den Wert der früheren maximalen Kapazität wider. Das Zurücksetzen dieses Werts erfordert einen Neustart der DB-Instance.

Anmerkung

Wenn Sie den max_connections Parameter direkt in einer benutzerdefinierten DB-Parametergruppe festlegen, ist kein Neustart erforderlich.

postgres=> show max_connections; max_connections ----------------- 189 (1 row) postgres=> show shared_buffers; shared_buffers ---------------- 1425408 (1 row)

Wir starten die DB-Instance neu und warten darauf, dass sie wieder verfügbar ist.

aws rds reboot-db-instance --db-instance-identifier serverless-v2-instance-1 { "DBInstanceIdentifier": "serverless-v2-instance-1", "DBInstanceStatus": "rebooting" } aws rds wait db-instance-available --db-instance-identifier serverless-v2-instance-1

Nachdem die DB-Instance neu gestartet wurde, ist der Status pending-reboot gelöscht. Der Wert in-sync bestätigt, dass Aurora alle ausstehenden Parameteränderungen übernommen hat.

aws rds describe-db-clusters --db-cluster-identifier serverless-v2-cluster \ --query '*[].{DBClusterMembers:DBClusterMembers[*].{DBInstanceIdentifier:DBInstanceIdentifier,DBClusterParameterGroupStatus:DBClusterParameterGroupStatus}}|[0]' { "DBClusterMembers": [ { "DBInstanceIdentifier": "serverless-v2-instance-1", "DBClusterParameterGroupStatus": "in-sync" } ] }

Nach dem Neustart zeigt max_connections den Wert der neuen maximalen Kapazität an.

postgres=> show max_connections; max_connections ----------------- 5000 (1 row) postgres=> show shared_buffers; shared_buffers ---------------- 1425408 (1 row)

Als Nächstes ändern wir den Kapazitätsbereich für den Cluster auf ACUs 12,5—80.

aws rds modify-db-cluster --db-cluster-identifier serverless-v2-cluster \ --serverless-v2-scaling-configuration MinCapacity=12.5,MaxCapacity=80 aws rds describe-db-clusters --db-cluster-identifier serverless-v2-cluster \ --query 'DBClusters[*].ServerlessV2ScalingConfiguration|[0]' { "MinCapacity": 12.5, "MaxCapacity": 80.0 }

Zu diesem Zeitpunkt befindet sich der Cluster im Leerlauf und die DB-Instance verbraucht 12,5serverless-v2-instance-1. ACUs Der shared_buffers-Parameter ist bereits basierend auf der aktuellen Kapazität der DB-Instance angepasst. Der max_connections-Wert beträgt immer noch 5 000.

postgres=> show max_connections; max_connections ----------------- 5000 (1 row) postgres=> show shared_buffers; shared_buffers ---------------- 2211840 (1 row)

Wir führen einen weiteren Neustart durch, aber die Parameterwerte bleiben gleich. Das liegt daran, max_connections dass es einen Maximalwert von 5000 für einen hat Aurora Serverless v2 DB-Cluster, auf dem Aurora Postgre SQL ausgeführt wird.

postgres=> show max_connections; max_connections ----------------- 5000 (1 row) postgres=> show shared_buffers; shared_buffers ---------------- 2211840 (1 row)

Jetzt legen wir den Kapazitätsbereich von 0,5 bis 128 ACUs fest. Der DB-Cluster wird auf 10 ACUs und dann auf 2 herunterskaliert. Wir starten die DB-Instance neu.

postgres=> show max_connections; max_connections ----------------- 2000 (1 row) postgres=> show shared_buffers; shared_buffers ---------------- 16384 (1 row)

Der max_connections Wert für Aurora Serverless v2 DB-Instances basieren auf der Speichergröße, die sich aus dem Maximum ergibtACUs. Wenn Sie jedoch eine Mindestkapazität von 0,5 für SQL Postgre-kompatible DB-Instances angeben, max_connections ist der Höchstwert von ACUs auf 2.000 begrenzt.

Jetzt setzen wir die Kapazität auf ihren ursprünglichen Bereich von 0,5—1 zurück ACU und starten die DB-Instance neu. Der max_connections-Parameter ist auf seinen ursprünglichen Wert zurückgekehrt.

postgres=> show max_connections; max_connections ----------------- 189 (1 row) postgres=> show shared_buffers; shared_buffers ---------------- 16384 (1 row)

Arbeiten mit Parametergruppen für Aurora Serverless v2

Wenn Sie Ihre erstellen Aurora Serverless v2 DB-Cluster, Sie wählen eine bestimmte Aurora-DB-Engine und eine zugehörige DB-Cluster-Parametergruppe aus. Wenn Sie nicht damit vertraut sind, wie Aurora Parametergruppen verwendet, um Konfigurationseinstellungen konsistent auf Cluster anzuwenden, finden Sie weitere Informationen unter Parametergruppen für Amazon Aurora. Alle diese Verfahren zum Erstellen, Ändern, Anwenden und anderen Aktionen für Parametergruppen gelten für Aurora Serverless v2.

Die Parametergruppenfunktion funktioniert im Allgemeinen auf dieselbe Weise zwischen bereitgestellten Clustern und Clustern, die Folgendes enthalten Aurora Serverless v2 DB-Instances:

  • Die Standardparameterwerte für alle DB-Instances im Cluster werden von der Cluster-Parametergruppe definiert.

  • Sie können einige Parameter für bestimmte DB-Instances überschreiben, indem Sie eine benutzerdefinierte DB-Parametergruppe für diese DB-Instances angeben. Diesen Vorgang können Sie während des Debuggens oder der Leistungsoptimierung für bestimmte DB-Instances durchführen. Nehmen wir zum Beispiel an, Sie haben einen Cluster, der einige enthält Aurora Serverless v2 DB-Instances und einige bereitgestellte DB-Instances. In diesem Fall können Sie mithilfe einer benutzerdefinierten DB-Parametergruppe einige andere Parameter für die bereitgestellten DB-Instances angeben.

  • Wählen Sie in der &Snowconsole; Ihren Auftrag aus der Tabelle. Aurora Serverless v2, können Sie alle Parameter verwenden, die den Wert provisioned im SupportedEngineModes Attribut in der Parametergruppe haben. In Aurora Serverless v1, können Sie nur die Teilmenge der Parameter verwenden, die serverless im SupportedEngineModes Attribut enthalten sind.

Standard-Parameterwerte

Der entscheidende Unterschied zwischen bereitgestellten DB-Instances und Aurora Serverless v2 Bei DB-Instances überschreibt Aurora alle benutzerdefinierten Parameterwerte für bestimmte Parameter, die sich auf die DB-Instance-Kapazität beziehen. Die benutzerdefinierten Parameterwerte gelten weiterhin für alle bereitgestellten DB-Instances in Ihrem Cluster. Weitere Informationen darüber, wie Aurora Serverless v2 DB-Instances interpretieren die Parameter aus Aurora-Parametergruppen, sieheKonfigurationsparameter für Aurora-Cluster. Für die spezifischen Parameter, die Aurora Serverless v2 überschreibt, siehe Parameter, die Aurora anpasst als Aurora Serverless v2 skaliert nach oben und unten undParameter, auf deren Grundlage Aurora berechnet Aurora Serverless v2 maximale Kapazität.

Sie können eine Liste der Standardwerte für die Standardparametergruppen für die verschiedenen Aurora-DB-Engines abrufen, indem Sie den describe-db-cluster-parametersCLIBefehl verwenden und die AWS-Region abfragen. Die folgenden Werte können Sie für die --db-parameter-group-family und -db-parameter-group-name Optionen für Engine-Versionen verwenden, die kompatibel sind mit Aurora Serverless v2.

Datenbank-Engine und -Version Parametergruppenfamilie Name der Standard-Parametergruppe

Aurora Meine SQL Version 3

aurora-mysql8.0

default.aurora-mysql8.0

Aurora SQL Postgre-Version 1.3x

aurora-postgresql13

default.aurora-postgresql13

Aurora SQL Postgre-Version 14.x

aurora-postgresql14

default.aurora-postgresql14

Aurora SQL Postgre-Version 15.x

aurora-postgresql15

default.aurora-postgresql15

Aurora SQL Postgre-Version 16.x

aurora-postgresql16

default.aurora-postgresql16

Im folgenden Beispiel wird eine Liste von Parametern aus der Standard-DB-Clustergruppe für Aurora My SQL Version 3 und Aurora Postgre SQL 13 abgerufen. Dies sind die SQL Versionen Aurora My SQL und Aurora Postgre, die Sie mit verwenden Aurora Serverless v2.

Wählen Sie in der &Snowconsole; Ihren Auftrag aus der Tabelle. Linux, macOS, oder Unix:

aws rds describe-db-cluster-parameters \ --db-cluster-parameter-group-name default.aurora-mysql8.0 \ --query 'Parameters[*].{ParameterName:ParameterName,SupportedEngineModes:SupportedEngineModes} | [?contains(SupportedEngineModes, `provisioned`) == `true`] | [*].[ParameterName]' \ --output text aws rds describe-db-cluster-parameters \ --db-cluster-parameter-group-name default.aurora-postgresql13 \ --query 'Parameters[*].{ParameterName:ParameterName,SupportedEngineModes:SupportedEngineModes} | [?contains(SupportedEngineModes, `provisioned`) == `true`] | [*].[ParameterName]' \ --output text

Wählen Sie in der &Snowconsole; Ihren Auftrag aus der Tabelle. Windows:

aws rds describe-db-cluster-parameters ^ --db-cluster-parameter-group-name default.aurora-mysql8.0 ^ --query 'Parameters[*].{ParameterName:ParameterName,SupportedEngineModes:SupportedEngineModes} | [?contains(SupportedEngineModes, `provisioned`) == `true`] | [*].[ParameterName]' ^ --output text aws rds describe-db-cluster-parameters ^ --db-cluster-parameter-group-name default.aurora-postgresql13 ^ --query 'Parameters[*].{ParameterName:ParameterName,SupportedEngineModes:SupportedEngineModes} | [?contains(SupportedEngineModes, `provisioned`) == `true`] | [*].[ParameterName]' ^ --output text

Maximale Anzahl an Verbindungen für Aurora Serverless v2

Sowohl für Aurora My als SQL auch für Aurora Postgre SQL Aurora Serverless v2 DB-Instances halten den max_connections Parameter konstant, sodass Verbindungen nicht unterbrochen werden, wenn die DB-Instance herunterskaliert wird. Der Standardwert für diesen Parameter leitet sich von einer Formel ab, die auf der Speichergröße der DB-Instance beruht. Weitere Informationen zur Formel und zu den Standardwerten für bereitgestellte DB-Instance-Klassen finden Sie unter Maximale Anzahl an Verbindungen zu einer Aurora My SQL DB-Instance und Maximale Anzahl an Verbindungen zu einer Aurora SQL Postgre-DB-Instance.

Wann Aurora Serverless v2 wertet die Formel aus und verwendet die Speichergröße auf der Grundlage der maximalen Aurora-Kapazitätseinheiten (ACUs) für die DB-Instance, nicht auf dem aktuellen ACU Wert. Wenn Sie den Standardwert ändern, empfehlen wir, eine Variante der Formel zu verwenden, anstatt einen konstanten Wert anzugeben. Auf diese Weise Aurora Serverless v2 kann eine geeignete Einstellung verwenden, die auf der maximalen Kapazität basiert.

Wenn Sie die maximale Kapazität eines ändern Aurora Serverless v2 DB-Cluster, Sie müssen den neu starten Aurora Serverless v2 DB-Instances, um den max_connections Wert zu aktualisieren. Das liegt daran, dass max_connections es sich um einen statischen Parameter handelt für Aurora Serverless v2.

Die folgende Tabelle zeigt die Standardwerte max_connections für Aurora Serverless v2 basierend auf dem ACU Maximalwert.

Maximal ACUs Standardmäßige maximale Verbindungen auf Aurora My SQL Standardmäßige maximale Verbindungen auf Aurora Postgre SQL
1 90 189
4 135 823
8 1.000 1.669
16 2.000 3.360
32 3,000 5,000
64 4.000 5,000
128 5,000 5,000
192 6 000 5,000
256 6 000 5,000
Anmerkung

Der max_connections Wert für Aurora Serverless v2 DB-Instances basieren auf der Speichergröße, die sich aus der maximalen Kapazität ergibt. Wenn Sie jedoch eine Mindestkapazität von 0,5 für SQL Postgre-kompatible DB-Instances angeben, max_connections ist der Höchstwert von ACUs auf 2.000 begrenzt.

Konkrete Beispiele, die zeigen, wie max_connections sich der ACU Maximalwert ändert, finden Sie unter und. Beispiel: Ändern Sie den Aurora Serverless v2 Kapazitätsbereich eines Aurora My SQL Clusters Beispiel: Ändern Sie den Aurora Serverless v2 Kapazitätsbereich eines Aurora Postgre-Clusters SQL

Parameter, die Aurora anpasst als Aurora Serverless v2 skaliert nach oben und unten

Während der automatischen Skalierung Aurora Serverless v2 muss in der Lage sein, die Parameter für jede DB-Instance so zu ändern, dass sie für die erhöhte oder verringerte Kapazität am besten funktionieren. Daher können Sie einige Parameter im Zusammenhang mit der Kapazität nicht außer Kraft setzen. Vermeiden Sie bei einigen Parametern, die Sie außer Kraft setzen können, eine Hartcodierung fester Werte. Die folgenden Überlegungen gelten für diese Einstellungen, die sich auf die Kapazität beziehen.

Für Aurora My SQL Aurora Serverless v2 passt die Größe einiger Parameter während der Skalierung dynamisch an. Für die folgenden Parameter Aurora Serverless v2 verwendet keine benutzerdefinierten Parameterwerte, die Sie angeben:

  • innodb_buffer_pool_size

  • innodb_purge_threads

  • table_definition_cache

  • table_open_cache

Für Aurora Postgre SQL Aurora Serverless v2 ändert die Größe des folgenden Parameters dynamisch während der Skalierung. Für die folgenden Parameter Aurora Serverless v2 verwendet keine benutzerdefinierten Parameterwerte, die Sie angeben:

  • shared_buffers

Für alle Parameter außer den hier aufgeführten Aurora Serverless v2 DB-Instances funktionieren genauso wie bereitgestellte DB-Instances. Der Standardparameterwert wird von der Cluster-Parametergruppe geerbt. Sie können den Standardwert für den gesamten Cluster mit einer benutzerdefinierten Cluster-Parametergruppe ändern. Den Standardwert für bestimmte DB-Instances können Sie auch mithilfe einer benutzerdefinierten DB-Parametergruppe ändern. Die dynamischen Parameter werden sofort aktualisiert. Änderungen an statischen Parametern werden erst wirksam, nachdem Sie die DB-Instance neu gestartet haben.

Parameter, auf deren Grundlage Aurora berechnet Aurora Serverless v2 maximale Kapazität

Für die folgenden Parameter SQL verwendet Aurora Postgre Standardwerte, die von der Speichergröße basierend auf der ACU Maximaleinstellung abgeleitet werden, genau wie beimax_connections:

  • autovacuum_max_workers

  • autovacuum_vacuum_cost_limit

  • autovacuum_work_mem

  • effective_cache_size

  • maintenance_work_mem

Fehler vermeiden out-of-memory

Wenn einer deiner Aurora Serverless v2 DB-Instances erreichen ständig die Grenze ihrer maximalen Kapazität. Aurora weist auf diesen Zustand hin, indem sie die DB-Instance auf den Status von setztincompatible-parameters. Während die DB-Instance den Status incompatible-parameters aufweist, sind einige Operationen blockiert. Beispielsweise können Sie die Engine-Version nicht aktualisieren.

In der Regel wechselt Ihre DB-Instance in diesen Status, wenn sie aufgrund von out-of-memory Fehlern häufig neu gestartet wird. Aurora zeichnet ein Ereignis auf, wenn diese Art von Neustart stattfindet. Sie können das Ereignis anzeigen, indem Sie die Vorgehensweise unter RDSAmazon-Ereignisse anzeigen befolgen. Eine ungewöhnlich hohe Speicherauslastung kann aufgrund des Mehraufwands beim Aktivieren von Einstellungen wie Performance Insights und IAM Authentifizierung auftreten. Sie kann auch durch eine hohe Workload Ihrer DB-Instance oder durch die Verwaltung der Metadaten entstehen, die mit einer großen Anzahl von Schemaobjekten verknüpft sind.

Wenn die Speicherauslastung sinkt, sodass die DB-Instance ihre maximale Kapazität nicht sehr oft erreicht, ändert Aurora den Status der DB-Instance automatisch wieder in available.

Zur Wiederherstellung nach diesem Zustand können Sie einige oder alle der folgenden Aktionen ausführen:

  • Erhöhen Sie die untere Kapazitätsgrenze für Aurora Serverless v2 DB-Instances, indem Sie den Mindestwert der Aurora-Kapazitätseinheit (ACU) für den Cluster ändern. Dadurch werden Probleme vermieden, bei denen eine inaktive Datenbank auf eine Kapazität mit weniger Speicher herunterskaliert wird, als für die in Ihrem Cluster aktivierten Funktionen benötigt wird. Nachdem ACU Sie die Einstellungen für den Cluster geändert haben, starten Sie den Aurora Serverless v2 DB-Instance. Dadurch wird geprüft, ob Aurora den Status wieder auf available zurücksetzen kann.

  • Erhöhen Sie die Kapazitätsobergrenze für Aurora Serverless v2 DB-Instances, indem Sie den ACU Maximalwert für den Cluster ändern. Auf diese Weise werden Probleme vermieden, bei denen eine ausgelastete Datenbank nicht auf eine Kapazität mit genügend Speicher für die in Ihrem Cluster aktivierten Funktionen und die Datenbank-Workload hochskaliert werden kann. Nachdem ACU Sie die Einstellungen für den Cluster geändert haben, starten Sie den Aurora Serverless v2 DB-Instance. Dadurch wird geprüft, ob Aurora den Status wieder auf available zurücksetzen kann.

  • Deaktivieren Sie Konfigurationseinstellungen, die Speicher-Overhead erfordern. Nehmen wir beispielsweise an, Sie haben Funktionen wie AWS Identity and Access Management (IAM), Performance Insights oder Aurora Meine SQL binäre Protokollreplikation aktiviert, verwenden sie aber nicht. In diesem Fall können Sie sie deaktivieren. Oder Sie können die minimalen und maximalen Kapazitätswerte für den Cluster nach oben korrigieren, um den von diesen Funktionen verwendeten Speicher zu berücksichtigen. Richtlinien zur Auswahl der minimalen und maximalen Kapazitätseinstellungen finden Sie unter Auswahl der Aurora Serverless v2 Kapazitätsbereich für einen Aurora-Cluster.

  • Reduzieren Sie die Workload der DB-Instance. Beispielsweise können Sie dem Cluster Reader-DB-Instances hinzufügen, um die Last von schreibgeschützten Abfragen auf weitere DB-Instances zu verteilen.

  • Optimieren Sie den von Ihrer Anwendung verwendeten SQL Code, um weniger Ressourcen zu verbrauchen. Sie können beispielsweise Ihre Abfragepläne untersuchen, das langsame Abfrageprotokoll überprüfen oder die Indizes in Ihren Tabellen anpassen. Sie können auch andere herkömmliche Arten der SQL Optimierung durchführen.

Wichtige CloudWatch Amazon-Metriken für Aurora Serverless v2

Um mit Amazon zu beginnen CloudWatch für Ihren Aurora Serverless v2 DB-Instance, sieheWird angezeigt Aurora Serverless v2 loggt sich bei Amazon ein CloudWatch. Weitere Informationen zur Überwachung von Aurora-DB-Clustern finden CloudWatch Sie unterÜberwachen von Protokollereignissen in Amazon CloudWatch.

Sie können Ihre ansehen Aurora Serverless v2 DB-Instances in CloudWatch , um die von jeder DB-Instance verbrauchte Kapazität anhand der ServerlessDatabaseCapacity Metrik zu überwachen. Sie können auch alle CloudWatch Aurora-Standardmetriken wie DatabaseConnections und überwachenQueries. Die vollständige Liste der CloudWatch Metriken, die Sie für Aurora überwachen können, finden Sie unter CloudWatch Amazon-Metriken für Amazon Aurora. Die Metriken sind in Metriken auf Clusterebene für Amazon Aurora und Metriken auf Instance-Ebene für Amazon Aurora in Metriken auf Cluster-Ebene und auf Instance-Ebene unterteilt.

Es ist wichtig, die folgenden Metriken CloudWatch auf Instanzebene zu überwachen, damit Sie verstehen, wie Aurora Serverless v2 DB-Instances werden nach oben und unten skaliert. Alle diese Metriken werden jede Sekunde berechnet. Auf diese Weise können Sie den aktuellen Status Ihrer Aurora Serverless v2 DB-Instances. Sie können Alarme so einstellen, dass Sie bei Bedarf benachrichtigt werden Aurora Serverless v2 Die DB-Instance nähert sich einem Schwellenwert für Kapazitätsmetriken. Sie können feststellen, ob die minimalen und maximalen Kapazitätseinstellungen angemessen sind oder ob Sie sie anpassen müssen. Sie können bestimmen, worauf Sie sich konzentrieren müssen, um die Effizienz Ihrer Datenbank zu optimieren.

  • ServerlessDatabaseCapacity. Als Metrik auf Instance-Ebene wird die Anzahl der durch die aktuelle ACUs DB-Instance-Kapazität repräsentierten Werte angegeben. Als Metrik auf Clusterebene stellt sie den Durchschnitt der Werte aller ServerlessDatabaseCapacity Aurora Serverless v2 DB-Instances im Cluster. Diese Metrik ist nur eine Metrik auf Clusterebene in Aurora Serverless v1. In Aurora Serverless v2, es ist auf DB-Instance-Ebene und auf Cluster-Ebene verfügbar.

  • ACUUtilization. Diese Metrik ist neu in Aurora Serverless v2. Dieser Wert wird als Prozentsatz dargestellt. Er wird berechnet als der Wert der ServerlessDatabaseCapacity Metrik geteilt durch den ACU Maximalwert des DB-Clusters. Beachten Sie die folgenden Richtlinien, um diese Metrik zu interpretieren und Maßnahmen zu ergreifen:

    • Wenn sich diese Metrik dem Wert 100.0 nähert, ist die DB-Instance so hoch wie möglich hochskaliert. Erwägen Sie, die ACU Maximaleinstellung für den Cluster zu erhöhen. Auf diese Weise können sowohl Writer- als auch Reader-DB-Instances auf eine höhere Kapazität skaliert werden.

    • Angenommen, eine schreibgeschützte Workload bewirkt, dass sich eine Reader-DB-Instance einem ACUUtilization-Wert von 100.0 nähert, während die Writer-DB-Instance ihrer maximalen Kapazität nicht annähernd erreicht. Erwägen Sie in diesem Fall, dem Cluster zusätzliche Reader-DB-Instances hinzuzufügen. Auf diese Weise können Sie den schreibgeschützten Teil der Workload auf mehrere DB-Instances verteilen und so die Last jeder Reader-DB-Instance reduzieren.

    • Angenommen, Sie führen eine Produktionsanwendung aus, bei der Leistung und Skalierbarkeit die Hauptüberlegungen sind. In diesem Fall können Sie den ACU Höchstwert für den Cluster auf einen hohen Wert festlegen. Ihr Ziel besteht darin, die ACUUtilization-Metrik immer unter 100.0 zu halten. Bei einem hohen ACU Maximalwert können Sie sicher sein, dass genügend Platz für den Fall vorhanden ist, dass es zu unerwarteten Spitzen bei der Datenbankaktivität kommt. Berechnet wird Ihnen nur die tatsächlich verbrauchte Datenbankkapazität.

  • CPUUtilization. Diese Metrik wird unterschiedlich interpretiert in Aurora Serverless v2 als in bereitgestellten DB-Instances. Wählen Sie in der &Snowconsole; Ihren Auftrag aus der Tabelle. Aurora Serverless v2, dieser Wert ist ein Prozentsatz, der berechnet wird als die Menge der CPU aktuell genutzten Ressourcen geteilt durch die CPU Kapazität, die unter dem ACU Höchstwert des DB-Clusters verfügbar ist. Aurora überwacht diesen Wert automatisch und skaliert Ihren Aurora Serverless v2 DB-Instance, wenn die DB-Instance durchweg einen hohen Teil ihrer CPU Kapazität nutzt.

    Wenn sich diese Metrik einem Wert von nähert100.0, hat die DB-Instance ihre maximale CPU Kapazität erreicht. Erwägen Sie, die maximale ACU Einstellung für den Cluster zu erhöhen. Wenn sich diese Metrik dem Wert 100.0 nähert, erwägen Sie bei einer Reader-DB-Instance, dem Cluster weitere Reader-DB-Instances hinzuzufügen. Auf diese Weise können Sie den schreibgeschützten Teil der Workload auf mehrere DB-Instances verteilen und so die Last jeder Reader-DB-Instance reduzieren.

  • FreeableMemory. Dieser Wert steht für die Menge an ungenutztem Speicher, der verfügbar ist, wenn Aurora Serverless v2 Die DB-Instance wird auf ihre maximale Kapazität skaliert. Für jeden FallACU, dass die aktuelle Kapazität unter der maximalen Kapazität liegt, erhöht sich dieser Wert um ungefähr 2 GiB. Daher nähert sich diese Metrik erst null, wenn die DB-Instance so hoch wie möglich hochskaliert ist.

    Wenn sich diese Metrik dem Wert 0 nähert, ist die DB-Instance so weit wie möglich hochskaliert und nähert sich der Grenze ihres verfügbaren Speichers. Erwägen Sie, die maximale ACU Einstellung für den Cluster zu erhöhen. Wenn sich diese Metrik dem Wert 0 nähert, erwägen Sie bei einer Reader-DB-Instance, dem Cluster weitere Reader-DB-Instances hinzuzufügen. Auf diese Weise können Sie den schreibgeschützten Teil der Workload auf mehrere DB-Instances verteilen und so die Speicherauslastung für jede Reader-DB-Instance reduzieren.

  • TempStorageIops. Die Anzahl der IOPS durchgeführten Aktionen auf dem lokalen Speicher, der an die DB-Instance angehängt ist. Sie umfasst sowohl Lese- als auch Schreibvorgänge. IOPS Diese Metrik stellt eine Zählung dar und wird einmal pro Sekunde gemessen. Dies ist eine neue Metrik für Aurora Serverless v2. Einzelheiten finden Sie unterMetriken auf Instance-Ebene für Amazon Aurora.

  • TempStorageThroughput: Die Menge der mit der DB-Instance verknüpften Daten, die zu und aus dem lokalen Speicher übertragen wurden. Diese Metrik wird in Byte angegeben und einmal pro Sekunde gemessen. Dies ist eine neue Metrik für Aurora Serverless v2. Einzelheiten finden Sie unterMetriken auf Instance-Ebene für Amazon Aurora.

In der Regel skalieren die meisten für Aurora Serverless v2 DB-Instances werden durch Speichernutzung und CPU Aktivität verursacht. Die Metriken TempStorageIops und TempStorageThroughput können Ihnen helfen, die seltenen Fälle zu diagnostizieren, in denen die Netzwerkaktivität für Übertragungen zwischen Ihrer DB-Instance und lokalen Speichergeräten für unerwartete Kapazitätssteigerungen verantwortlich ist. Wenn Sie andere Netzwerkaktivitäten überwachen möchten, können Sie diese vorhandenen Metriken verwenden:

  • NetworkReceiveThroughput

  • NetworkThroughput

  • NetworkTransmitThroughput

  • StorageNetworkReceiveThroughput

  • StorageNetworkThroughput

  • StorageNetworkTransmitThroughput

Sie können Aurora einige oder alle Datenbankprotokolle veröffentlichen lassen CloudWatch. Sie wählen die zu veröffentlichenden Protokolle aus, indem Sie die Konfigurationsparameter wie general_log und slow_query_log in der DB-Cluster-Parametergruppe aktivieren, die dem Cluster zugeordnet ist, der Ihre Aurora Serverless v2 DB-Instances. Wenn Sie einen Protokollkonfigurationsparameter deaktivieren, wird die Veröffentlichung dieses Protokolls CloudWatch beendet. Sie können die Logs auch löschen CloudWatch , wenn sie nicht mehr benötigt werden.

Wie Aurora Serverless v2 Die Metriken gelten für Ihre AWS Rechnung

Das Tool Aurora Serverless v2 Die Gebühren auf Ihrer AWS Rechnung werden auf der Grundlage derselben ServerlessDatabaseCapacity Kennzahl berechnet, die Sie überwachen können. Der Abrechnungsmechanismus kann in Fällen, in denen Sie Folgendes verwenden, vom berechneten CloudWatch Durchschnitt für diese Kennzahl abweichen Aurora Serverless v2 Kapazität nur für einen Teil einer Stunde. Es kann auch unterschiedlich sein, ob die CloudWatch Metrik aufgrund von Systemproblemen für kurze Zeit nicht verfügbar ist. Daher wird auf Ihrer Rechnung möglicherweise ein etwas anderer Wert für ACU -Stunden angezeigt, als wenn Sie die Zahl selbst anhand des ServerlessDatabaseCapacity Durchschnittswerts berechnen würden.

Beispiele für CloudWatch Befehle für Aurora Serverless v2 Kennzahlen

Die folgenden AWS CLI Beispiele zeigen, wie Sie die wichtigsten CloudWatch Kennzahlen im Zusammenhang mit folgenden Themen überwachen können Aurora Serverless v2. Ersetzen Sie in jedem Fall die Value= Zeichenfolge für den --dimensions Parameter durch Ihren eigenen Bezeichner Aurora Serverless v2 DB-Instance.

Im folgenden Linux-Beispiel werden die minimalen, maximalen und durchschnittlichen Kapazitätswerte für eine DB-Instance angezeigt, die alle 10 Minuten über einen Zeitraum von einer Stunde gemessen werden. Der Linux-Befehl date gibt die Start- und Endzeiten relativ zum aktuellen Datum und zur aktuellen Uhrzeit an. Die sort_by-Funktion im --query-Parameter sortiert die Ergebnisse chronologisch basierend auf dem Feld Timestamp.

aws cloudwatch get-metric-statistics --metric-name "ServerlessDatabaseCapacity" \ --start-time "$(date -d '1 hour ago')" --end-time "$(date -d 'now')" --period 600 \ --namespace "AWS/RDS" --statistics Minimum Maximum Average \ --dimensions Name=DBInstanceIdentifier,Value=my_instance \ --query 'sort_by(Datapoints[*].{min:Minimum,max:Maximum,avg:Average,ts:Timestamp},&ts)' --output table

Die folgenden Linux-Beispiele veranschaulichen die Überwachung der Kapazität jeder DB-Instance in einem Cluster. Sie messen die minimale, maximale und durchschnittliche Kapazitätsauslastung jeder DB-Instance. Die Messungen werden einmal pro Stunde über einen Zeitraum von drei Stunden durchgeführt. In diesen Beispielen wird die ACUUtilization Metrik verwendet, die einen Prozentsatz der Obergrenze für ServerlessDatabaseCapacity darstelltACUs, anstatt eine feste Zahl vonACUs. Auf diese Weise müssen Sie die tatsächlichen Zahlen für die Mindest- und ACU Höchstwerte im Kapazitätsbereich nicht kennen. Sie können Prozentsätze zwischen 0 und 100 sehen.

aws cloudwatch get-metric-statistics --metric-name "ACUUtilization" \ --start-time "$(date -d '3 hours ago')" --end-time "$(date -d 'now')" --period 3600 \ --namespace "AWS/RDS" --statistics Minimum Maximum Average \ --dimensions Name=DBInstanceIdentifier,Value=my_writer_instance \ --query 'sort_by(Datapoints[*].{min:Minimum,max:Maximum,avg:Average,ts:Timestamp},&ts)' --output table aws cloudwatch get-metric-statistics --metric-name "ACUUtilization" \ --start-time "$(date -d '3 hours ago')" --end-time "$(date -d 'now')" --period 3600 \ --namespace "AWS/RDS" --statistics Minimum Maximum Average \ --dimensions Name=DBInstanceIdentifier,Value=my_reader_instance \ --query 'sort_by(Datapoints[*].{min:Minimum,max:Maximum,avg:Average,ts:Timestamp},&ts)' --output table

Im folgenden Linux-Beispiel werden ähnliche Messungen wie die vorherigen ausgeführt. In diesem Fall gelten die Messungen für die CPUUtilization-Metrik Die Messungen werden alle zehn Minuten über einen Zeitraum von einer Stunde durchgeführt. Die Zahlen stellen den Prozentsatz der CPU verwendeten verfügbaren Ressourcen dar, basierend auf den CPU Ressourcen, die bei der Einstellung für die maximale Kapazität für die DB-Instance verfügbar sind.

aws cloudwatch get-metric-statistics --metric-name "CPUUtilization" \ --start-time "$(date -d '1 hour ago')" --end-time "$(date -d 'now')" --period 600 \ --namespace "AWS/RDS" --statistics Minimum Maximum Average \ --dimensions Name=DBInstanceIdentifier,Value=my_instance \ --query 'sort_by(Datapoints[*].{min:Minimum,max:Maximum,avg:Average,ts:Timestamp},&ts)' --output table

Im folgenden Linux-Beispiel werden ähnliche Messungen wie die vorherigen ausgeführt. In diesem Fall gelten die Messungen für die FreeableMemory-Metrik Die Messungen werden alle zehn Minuten über einen Zeitraum von einer Stunde durchgeführt.

aws cloudwatch get-metric-statistics --metric-name "FreeableMemory" \ --start-time "$(date -d '1 hour ago')" --end-time "$(date -d 'now')" --period 600 \ --namespace "AWS/RDS" --statistics Minimum Maximum Average \ --dimensions Name=DBInstanceIdentifier,Value=my_instance \ --query 'sort_by(Datapoints[*].{min:Minimum,max:Maximum,avg:Average,ts:Timestamp},&ts)' --output table

Überwachen Aurora Serverless v2 Leistung mit Performance Insights

Sie können Performance Insights verwenden, um die Leistung von zu überwachen Aurora Serverless v2 DB-Instances. Informationen zu Performance-Insights-Verfahren finden Sie unter Überwachen der Datenbanklast mit Performance Insights auf Amazon Aurora.

Die folgenden neuen Performance Insights Insights-Zähler gelten für Aurora Serverless v2 DB-Instances:

  • os.general.serverlessDatabaseCapacity— Die aktuelle Kapazität der DB-Instance inACUs. Der Wert entspricht der ServerlessDatabaseCapacity CloudWatch Metrik für die DB-Instance.

  • os.general.acuUtilization – Der Anteil der aktuellen Kapazität an der maximal konfigurierten Kapazität in Prozent. Der Wert entspricht der ACUUtilization CloudWatch Metrik für die DB-Instance.

  • os.general.maxConfiguredAcu— Die maximale Kapazität, die Sie dafür konfiguriert haben Aurora Serverless v2 DB-Instance. Es wird gemessen inACUs.

  • os.general.minConfiguredAcu— Die Mindestkapazität, die Sie dafür konfiguriert haben Aurora Serverless v2 DB-Instance. Es wird gemessen in ACUs

Eine vollständige Liste der Performance-Insights-Zähler finden Sie unter Performance-Insights-Zählermetriken.

Wenn vCPU Werte für ein angezeigt werden Aurora Serverless v2 DB-Instance In Performance Insights stellen diese Werte Schätzungen dar, die auf dem ACU Wert für die DB-Instance basieren. Im Standardintervall von einer Minute werden alle gebrochenen CPU V-Werte auf die nächste ganze Zahl aufgerundet. Bei längeren Intervallen ist der angezeigte CPU V-Wert der Durchschnitt der ganzzahligen CPU V-Werte für jede Minute.

Fehlerbehebung Aurora Serverless v2 Kapazitätsprobleme

In einigen Fällen Aurora Serverless v2 wird nicht auf die Mindestkapazität herunterskaliert, auch wenn die Datenbank nicht belastet wird. Dies kann aus einem der folgenden Gründe geschehen:

  • Bestimmte Funktionen können die Ressourcennutzung erhöhen und verhindern, dass die Datenbank auf die Mindestkapazität herunterskaliert wird. Nachstehend sind einige dieser Features aufgeführt:

    • Globale Aurora-Datenbanken

    • CloudWatch Protokolle werden exportiert

    • Aktivierung pg_audit auf Aurora SQL Postgre-kompatiblen DB-Clustern

    • Verbesserte Überwachung

    • Performance Insights

    Weitere Informationen finden Sie unter Wählen Sie das Minimum Aurora Serverless v2 Kapazitätseinstellung für einen Cluster.

  • Wenn eine Reader-Instance nicht auf das Minimum herunterskaliert wird und dieselbe oder eine höhere Kapazität als die Writer-Instance hat, überprüfen Sie die Prioritätsstufe der Reader-Instance. Aurora Serverless v2 Reader-DB-Instances der Stufe 0 oder 1 haben eine Mindestkapazität, die mindestens so hoch ist wie die der Writer-DB-Instance. Ändern Sie die Prioritätsstufe der Reader-Instance in 2 oder höher, sodass sie unabhängig von der Writer-Instance hoch- und herunterskaliert wird. Weitere Informationen finden Sie unter Auswahl der Promotion-Stufe für ein Aurora Serverless v2 reader.

  • Legen Sie alle Datenbankparameter, die sich auf die Größe des gemeinsam genutzten Speichers auswirken, auf ihre Standardwerte fest. Wenn Sie einen höheren Wert als den Standardwert festlegen, erhöht sich der gemeinsam genutzte Speicherbedarf und verhindert, dass die Datenbank auf die Mindestkapazität herunterskaliert wird. Beispiele sind max_connections und max_locks_per_transaction.

    Anmerkung

    Das Aktualisieren gemeinsam genutzter Speicherparameter erfordert einen Neustart der Datenbank, damit Änderungen wirksam werden.

  • Hohe Datenbank-Workloads können die Ressourcennutzung erhöhen.

  • Große Datenbank-Volumes können die Ressourcennutzung erhöhen.

    Amazon Aurora verwendet Speicher und CPU Ressourcen für die DB-Clusterverwaltung. Aurora benötigt mehr CPU Speicher, um DB-Cluster mit größeren Datenbankvolumen zu verwalten. Wenn die Mindestkapazität Ihres Clusters unter der für die Clusterverwaltung erforderlichen Mindestkapazität liegt, skaliert Ihr Cluster nicht auf die Mindestkapazität herunter.

  • Hintergrundprozesse wie das Bereinigen können ebenfalls den Ressourcenverbrauch erhöhen.

Wenn die Datenbank immer noch nicht auf die konfigurierte Mindestkapazität herunterskaliert wird, beenden Sie die Datenbank und starten Sie sie neu, um alle Speicherfragmente zurückzugewinnen, die sich im Laufe der Zeit angesammelt haben könnten. Das Stoppen und Starten einer Datenbank führt zu Ausfallzeiten, daher empfehlen wir, achtsam vorzugehen.