it-swarm.com.de

Die Amazon RDS MySQL-Instanz wird sehr langsam ausgeführt

Ich habe meine Website auf Amazon EC2 (Region Singapur) veröffentlicht und für die Datenspeicherung die MySQL RDS-Instanz verwendet. Alles funktioniert sehr gut, außer der Leistung.

Mir scheint, dass alle meine Abfragen, besonders die select-Anweisung, sehr langsam ablaufen. Wenn ich dieses Problem auf meinem lokalen PC überprüfe, funktioniert es sehr gut. Wenn ich jedoch versuche, Daten von einer RDS-Instanz abzurufen, ist dies sehr langsam. Einige Select-Anweisungen benötigen 2-3 Sekunden, um Daten abzurufen.

Ich habe alle Tabellenindizes ordnungsgemäß angepasst und je nach Bedarf normalisiert/deaktiviert. Ich habe alle erforderlichen Einstellungen in der benutzerdefinierten RDS-Parametergruppe vorgenommen (z. B. max_connection , buffer etc). Ich weiß nicht, ob mir etwas fehlt, aber es hat nicht funktioniert - die Leistung hat nicht zugenommen.

Kann mir bitte jemand bei diesem Problem helfen?

24
Manish Sapkal

Es ist erwähnenswert, dass aus irgendeinem Grund der Abfrage-Cache von MySQL in RDS standardmäßig deaktiviert ist. Das haben wir in dieser Woche selbst herausgefunden.

Dies hilft nicht bei der Ausführung Ihrer ersten Abfrage, kann aber im Allgemeinen die Dinge beschleunigen.

So aktivieren Sie den Abfrage-Cache erneut:

  1. Melden Sie sich bei der RDS-Konsole an
  2. Klicken Sie auf Ihre RDS-Instanz, um die Details anzuzeigen
  3. Bearbeiten Sie die Datenbankparametergruppe
  4. Stellen Sie sicher, dass Sie sowohl query_cache_size als auch query_cache_type einstellen.

(Haftungsausschluss: Ich bin kein DBA, daher kann es zusätzliche Dinge geben, die mir hier fehlen)

27
DOOManiac

Es ist wichtig, dass sich Ihre RDS- und EC2-Instanzen nicht in derselben Region, sondern in derselben Verfügbarkeitszone befinden, um die Latenzzeit zu minimieren.

Ich hatte eine in Irland gehostete API für EC2 und verlegte die Datenbank zu einem MySQL-Cluster in Virginia (USA), den wir für ein anderes Projekt eingerichtet hatten. Die Roundtrip-Abfrage für jede SQL-Abfrage machte die API unbrauchbar.

8
Roovian

Für mich hatte das nichts mit MySQL zu tun, sondern eher mit dem Instanztyp, den ich auf t2.medium hatte. Das Problem ist, dass mir die CPU-Gutschriften ausgehen, weil die Belastung der Datenbank zu hoch war und der Kontostand immer weiter sank, bis ich schließlich stündlich weit weniger Gutschriften erhielt, als nötig.

Folgendes habe ich in RDS CloudWatch unter CPU Credit Usage gesehen:

 enter image description here

Wenn Sie dasselbe Problem haben, kann es an der Zeit sein, zu einer anderen Instanz zu wechseln. Hier ist die Liste der Instanztypen:

https://aws.Amazon.com/rds/instance-types/

Hoffe das hilft.

2
radtek

Die Leistung von RDS MySQL kann auf folgende Weise erhöht werden, vorausgesetzt, das System hat mehr Leseverhältnis:

  1. Verwenden Sie größere Instanztypen, sie verfügen über eine bessere NW-Bandbreite. Beispiel AWS Quadruple EXL verfügt über eine Bandbreite von 1.000 Mbps.
  2. Mit PIOPS-Speicher können Sie 12.500 IOPS mit 16 KB aus MySQL DB extrahieren
  3. Wenn viel gelesen wird, fügen Sie eine oder mehrere Read Replica hinzu, um die Leseleistung zu erhöhen
  4. Übernehmen Sie Standardpraktiken wie: Stimmen Sie die Abfragen ab, wenden Sie die Indizes an usw
2
Harish Ganesan

Zuerst empfehle ich dringend, diese Abfragen mit zu überprüfen

VOLLSTÄNDIGE PROZESSLISTE ANZEIGEN

Mehr darüber erfahren Sie auf SHOW FULL PROCESSLIST

Dies zeigt Ihnen die Zeit, die jede Abfrage benötigt.

Dann kannst du verwenden 

ERKLÄREN

Sie können mehr darüber lesen auf ERKLÄREN

Dies zeigt Ihnen, wenn Sie eine Verbesserung Ihrer Abfragen benötigen

2
Hiyasat

Sie können überprüfen, wo die Abfrage Zeit benötigt, indem Sie die Profilerstellung verwenden. Verwenden Sie die folgende Abfrage: 

  1. set Profiling = 1 
  2. führen Sie Ihre Auswahlabfrage aus 
  3. zeige Profil

Auf diese Weise erfahren Sie, welchen Status die Abfrage hat und wo die Abfrage ihre Zeit verbringt. Wenn die Summe aller durch das Profiling zurückgegebenen Zeiten geringer ist als die tatsächliche Ausführungszeit der Abfrage, sind möglicherweise andere Faktoren wie die Netzwerkbandbreite die Ursache.

0
user7562197