Leistungsschwellen und Überwachung der AWS RDS db.t2-Instanz


7

Wir haben eine Standard-Webserverkonfiguration für Mainstream-CMS-Software wie Drupal und WordPress eingeführt, mit dem Server und dem Speicher auf EC2 / EBS und der Datenbank für diese Softwarepakete in RDS / MySQL.

Normalerweise gehen wir mit einer t2.micro- CPU und einer db.t2.micro- DB in Produktion , was Kunden mit uns und AWS glücklich macht, da sie oft das erste Jahr auf der kostenlosen Ebene bleiben können. Die Standardüberwachungstools auf EC2 zeigen deutlich, wann wir möglicherweise die teuerste Ressource für den Webhost überschreiten, nämlich die CPU-Auslastung . Wenn sich der Schwellenwert 10% nähert oder 10% überschreitet, wissen wir, dass die Zeit für die Migration auf den Instanztyp t2.small gekommen ist .

Wir sind uns weit weniger sicher, wie wir feststellen können, wann ein Upgrade von db.t2.micro auf db.t2.small und möglicherweise darüber hinaus erforderlich ist . Diese Anforderungen umfassen keine Multi-AZ- oder Lesereplikate, sondern nur Bedingungen, unter denen sich die CMS-Software in Spitzenzeiten, die wir über ein Diagramm oder einen Alarm erkennen müssen, möglicherweise stark auf die Datenbank stützt.

In den Dokumenten für EC2-Instanzen sind die eigenen Grenzwerte klar angegeben, und ich habe mich gefragt, ob solche Grenzwerte für RDS-Instanzen für unseren einfachen Fall empfohlen werden könnten. Die allgemeinen Anforderungen in den Best Practices für Amazon RDS sind hilfreich, obwohl ich nicht alle Links befolgt habe, da ich lediglich versuche, Schwellenwerte festzulegen, die wir festlegen können, um ein DB-Instanz-Upgrade eindeutig auf eine Weise zu erfordern, die meine nicht technische Kunden können verstehen und beobachten.

Ich gebe zu, dass ich kein DBA bin; Aufgrund meiner Arbeit habe ich die Datenbankarchitektur den Designern der CMS-Software überlassen. Ich bin auf jeden Fall bereit, die Grundlagen der Leistungsbewertung zu erlernen, wenn mir jemand sagt, wo ich anfangen soll, wenn es um diese Konfiguration auf der AWS-Plattform geht. Vielleicht habe ich noch nicht die richtigen offiziellen Dokumente oder Tutorials gefunden.

Alternativ: Wir müssen nur wissen, wie man quantitativ misst, ob eine Verzögerung beim Zugriff auf unsere RDS-Instanz darauf zurückzuführen ist, dass die Instanzgröße zu klein ist (oder die MySQL-Ressourcenparameter möglicherweise zu niedrig eingestellt sind), basierend auf dem, was wir in CloudWatch sehen.

Trivial kann ich feststellen, ob die CloudWatch-Metrik Freeable Memory nahe Null wird, dann würden wir ein Instanz-Upgrade benötigen. Und wie bei unserer EC2-Instanz muss es auch hier eine maximale CPU-Auslastung geben, die meiner Meinung nach weit unter 100% liegen würde, obwohl ich dies nicht wie bei EC2 dokumentiert habe. Ich stelle mir vor, dass es für DB Connections ein praktisches Maximum geben würde . Schließlich hoffe ich, dass mir jemand sagt, wie man Write IOPS & Read IOPS interpretiert und ob dies kleinen Konfigurationen wie unserer Leistungseinschränkungen auferlegt oder ob sie einfach zur Berechnung der Kosten verwendet werden.

ps, ich habe versucht, dies in den AWS-Foren zu veröffentlichen: Amazon Relational Database Service, aber der Link " Neuen Thread veröffentlichen " liefert derzeit eine "Umleitungsschleife". (Entschuldigung, ich kann hier keine weiteren URLs einfügen, aber ich bin nicht erlaubt.)

[bearbeiten, Antwort auf Kommentar] danke @Ross, ich wusste nicht, dass CPUCreditBalance auch auf RDS verfügbar ist (ich hatte es auf EC2 gesehen); Ich habe nicht gesehen, dass es einen zweiten Bildschirm mit 7 weiteren Metriken gibt, wobei alle 17 aus einer Liste ausgewählt werden können. Ich frage mich immer noch, welche Einschränkungen anderen überwachbaren Ressourcen als der CPU auferlegt werden könnten, insbesondere der E / A-Aktivität, je nach RDS-Instanztyp.

pps, ich habe die Frage etwas verfeinert und in AWS-Foren veröffentlicht ( Wie kann ich feststellen, ob RDS T2-Instanzen mit CloudWatch-Statistiken die richtige Größe haben? )


Da Sie T2s verwenden, würde ich CPUCreditBalance die größte Aufmerksamkeit schenken. Wenn dies niedrig (oder 0!) Ist, bedeutet dies, dass Sie Ihr Burst-Guthaben aufgebraucht haben und effektiv sagen, dass Sie mit einer maximalen CPU-Auslastung von 100% arbeiten.

Schön geschriebene Frage (und Antwort).
SexxLuthor

Antworten:


7

Ich hatte in den letzten Monaten eine gewisse Perspektive dazu und ich glaube, dass diese Punkte alle oben genannten Probleme lösen werden:

1) Der Kommentar von @Ross zum ursprünglichen Beitrag ist der Schlüssel. T2-Instanzen, unabhängig von der Größe und unabhängig davon, ob es sich um EC2- oder RDS-Instanzen handelt, werden nicht mehr ausgeführt, wenn ihre CPU-Credits aufgebraucht sind, während die Spitzenanforderungen an die CPU weiterhin bestehen.

2) Der Fehlermodus eines CMS-Webservers, den wir am häufigsten gesehen haben, wird genau durch diese Bedingung angezeigt: Das CloudWatch-Diagramm springt gegen Null, wenn der von httpdProzessen benötigte CPU-Prozentsatz den diesem Instanztyp zugewiesenen CPU-Prozentsatz überschreitet (siehe Dokumentlink unten). .

3) Die schnelle Lösung für eine T2-Instanz mit erschöpften CPU-Credits besteht darin, die Instanz herunterzufahren, den Instanztyp zu aktualisieren und erneut zu starten. Dies dauert ca. 3-4 Minuten. Die wichtigste Beschreibung der Kapazitäten verschiedener Instanztypen finden Sie hier: http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/t2-instances.html

4) Jedem Produktionswebserver unter AWS muss aus diesem Grund im Voraus eine elastische IP-Adresse zugewiesen werden: Wenn dies nicht der Fall ist und die Instanz neu skaliert wird, ändert sich die IP-Adresse, sodass auf den Webserver weit über 3 hinaus nicht mehr zugegriffen werden kann. 4 Minuten Ausfallzeit.

5) Die einzige Möglichkeit, mehr CPU-Credits zu erhalten, besteht darin, den Maschinentyp zu aktualisieren. Die Anzahl der Credits, die jede T2-Instanzgröße aufnehmen kann, ist im obigen Dokumentlink beschrieben: Sie entspricht immer der CPU-Arbeit, die der Instanztyp in 24 Stunden erledigen würde.

6) Die Maschine kann während einer geplanten Ausfallzeit (erneut 3-4 Minuten) auf ihre ursprüngliche Größe zurückgesetzt werden, nachdem die Anforderungen an die Spitzenleistung nachgelassen haben.

7) Die E / A-Aktivität hat in Spitzenzeiten bisher keine Leistungseinbußen für unseren Webserver verursacht. Die Menge an IOPS wird streng durch die EBS-Volumengröße bestimmt. Sowohl die genaue Bedeutung von IOPS als auch diese Beziehung werden hier beschrieben: http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-io-characteristics.html

8) Weder die Cloud Watch-Metriken Freeable Memory noch DB Connections waren nützlich, um Leistungsprobleme in einer Webserver-intensiven Umgebung zu antizipieren oder zu beheben.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.