3

Ich habe einen Amazon Aurora-Datenbank-Cluster erstellt, der MySQL mit drei Instanzen ausführt: die Hauptinstanz, die den Cluster unterstützt, und zwei Lese-Replikate zum Balancieren. Der Cluster scheint die Lesevorgänge jedoch nicht auszugleichen. Ich habe eine Replik, die 700+ Selects/sec verwaltet, um die CPU bei 99,75% oder höher zu maximieren, während die andere Replik praktisch nichts mit einer CPU-Auslastung von 4% bei 1 Auswahl pro Sekunde tut. Die Hauptclusterinstanz selbst hat eine CPU-Auslastung von 33%, während sie gleichzeitig beschrieben wird, während die Replikate gelesen werden sollen. Die Verzögerungszeit zwischen den Replikaten liegt unter 20 Millisekunden. Meine Anwendung fragt den schreibgeschützten Endpunkt des Clusters ab, es tritt jedoch kein Abgleich auf. Hat jemand einen Einblick, warum dies passiert oder warum das Replikat bei einer so hohen CPU-Auslastung ist? Die Abfragen, die dagegen ausgeführt werden, sind auf keinen Fall komplex.Amazon Aurora DB-Cluster nicht automatisch balancieren

+0

Dies ist wahrscheinlich keine Frage für Stack Overflow, da es sich nicht um ein spezifisches Codeproblem handelt. Fragen zu AWS-Infrastruktur sollten Sie versuchen https://serverfault.com oder https://dba.stackexchange.com –

+1

Das sagte, antwortete ich eine Frage über Aurora hier: https://stackoverflow.com/questions/46383763/optimize- write-performance-for-aws-aurora-instance/46384196 # 46384196 und das OP sagte, dass meine Lösung, sekundäre Indizes zu löschen, die CPU-Nutzung von Aurora um die Hälfte reduzierte. –

+0

Ich habe keine sekundären Indizes, die Datenbank ist nicht sehr kompliziert, deshalb bin ich so verwirrt, warum die Lese-Replik so viel CPU-Leistung beansprucht und warum der Cluster sie nicht automatisch ausbalanciert. –

Antwort

0

Meine Vermutung ist, dass Sie keine Verbindung zum Cluster-Endpunkt herstellen.

Load Balancing - Durch die Verbindung mit dem Clusterendpunkt kann Aurora Verbindungen über die Replikate im DB-Cluster verteilen. Dies trägt zur Verbreitung der Lese-Workload bei und kann zu einer besseren Leistung und einer gerechteren Nutzung der Ressourcen führen, die für jede Replik verfügbar sind. Wenn bei einem Failover das Replikat, mit dem Sie verbunden sind, an die primäre Instanz weitergeleitet wird, wird die Verbindung gelöscht. Sie können sich dann erneut mit dem Leserendpunkt verbinden, um Ihre Leseabfragen an die anderen Replikate im Cluster zu senden.

New Reader Endpoint for Amazon Aurora – Load Balancing & Higher Availability

[EDIT]

Um Gleichgewicht innerhalb einer einzigen Anwendung zu laden, müssen Sie den Endpunkt verbinden. Wenn Sie für alle Abfragen dieselbe Verbindung verwenden, reagiert nur ein Replikat. Das Öffnen von Verbindungen ist jedoch teuer, daher bietet dies möglicherweise nur dann einen großen Vorteil, wenn Ihre Abfragen einige Zeit benötigen.

+0

Ich bin mit dem schreibgeschützten Endpunkt des Clusters verbunden. Es sollte die Db-Verbindungen über die zwei Replikate ausgeglichen werden, aber es ist nicht wie ein Replikat 12 Verbindungen hat, während der andere Null hat. Ich denke, dass etwas im Code falsch ist, vielleicht keine Verbindungen nach der Abfrage schließen oder etwas in dieser Richtung. Ich werde das jetzt ansehen. –

Verwandte Themen