Amazon RDS: Was sind E / A-Anfragen?

9

Ich habe eine RDS-Instanz, die mich viel Geld kostet. Aus meiner Kontoaktivität bei Amazon geht hervor, dass die Instanz in den letzten 7 Tagen etwa 800.000.000 E / A-Anfragen hatte.

Um Ihnen eine kleine Perspektive zu geben, meine App erhält nur ungefähr 6.000 eindeutige Besuche pro Tag und stellt nicht so viele Datenbankverbindungen her.

Was genau ist eine E / A-Anfrage und warum sollte diese Zahl so unheimlich hoch sein? Ich bin bereit, alles in meiner App zu tun, um diese Kosten bei Bedarf zu senken, bin mir aber nicht sicher, was wirklich los ist.

Ich würde mich über Ihre Gedanken freuen.

Abe
quelle
Haben Sie in Ihrem Fall eine Lösung gefunden?
Klicken Sie auf Upvote

Antworten:

6

Ah, Amazon Web Services. Einer der größten verfügbaren Geldsenker. Sehr gut, aber nicht immer billig. Eigentlich fast nie billig und immer schwer abzuschätzen.

Eine E / A-Anforderung ist eine Plattenoperation. Sei es ein Lesen oder ein Schreiben, Sie werden im Grunde genommen damit belastet, wie viele Daten Sie von ihrem System erhalten. Es ist verrückt.

Sie können die von Ihnen gestellten E / A-Anforderungen anhand von iostat abschätzen.

800.000.000 IO-Anfragen in 7 Tagen. Das sind ~ = 1300 IOPS. Wow. Das ist eine böse Leistung.

Beispielsweise kann eine mittelgroße Website-Datenbank 100 GB groß sein und im Laufe eines Monats durchschnittlich 100 E / A pro Sekunde erwarten. Dies würde 10 USD pro Monat an Speicherkosten (100 GB x 0,10 USD / Monat) und ungefähr 26 USD pro Monat an Anforderungskosten (~ 2,6 Millionen Sekunden / Monat x 100 E / A pro Sekunde * 0,10 USD pro Million E / A) bedeuten.

Von http://aws.amazon.com/ebs/ etwa 90% des Weges nach unten

Wenn Sie wirklich reduzieren möchten, was Sie dies kostet, ist es möglicherweise an der Zeit zu prüfen, ob RDS wirklich am besten zu Ihrer Anwendung und Ihrem Projektbudget passt.

Wenn Sie nur 6.000 Treffer pro Tag haben, können Sie Kosten und Leistung mit einem dedizierten Server verbessern (vorzugsweise 2 von ihnen, einer für DB, einer für Webdienste). Es ist tatsächlich etwas schwieriger, diesen Anruf zu tätigen, da Sie nicht zu viel mehr über Ihre Anwendung gesagt haben.

Tom O'Connor
quelle
3
Als ich zum ersten Mal mit dem SimpleDB-Service von AWS experimentierte, der so etwas wie MongoDB ist, habe ich an einem Nachmittag eine Rechnung über 50 US-Dollar ausgestellt. Es ist praktisch, aber fast nie billig.
Tom O'Connor
Ich denke, EBS kann nicht mehr den Grund angeben, warum ich diese Kosten in meiner Rechnung sehe: "E / A ist im Preis der Volumes enthalten, Sie zahlen also nur für jedes GB Speicher, das Sie bereitstellen." (von der Preisseite )?
Hayd
Seufz, es stellt sich heraus, dass es noch in der vorherigen Generation verfügbar ist !
Hayd
6

Ich habe eine RDS-Instanz, die mich viel Geld kostet.

"Cloud-Dienste" bedeuten nicht, dass Dinge Sie ein paar Cent kosten werden. Grundsätzlich ist eine E / A-Anforderung alles (dh eine Datenbank oder eine Indexseite), das von der Festplatte abgerufen werden musste. Wenn Sie über eine große Datenbank und Abfragen mit vollständigen Tabellenscans verfügen, ist dies keineswegs überraschend. Sie können nach Abfragen suchen, bei denen nicht indizierte Spalten zum Filtern verwendet werden, indem Sie die Option aktivieren , die "nicht indizierten" Abfragen im langsamen MySQL-Protokoll zu protokollieren und Indizes für die entsprechenden Spalten hinzuzufügen. Da Sie die Konfigurationsdatei nicht direkt bearbeiten können, verwenden Sie die RDS-Parametergruppenkonfiguration , um log-queries-not-using-indexesdie mysql.slow_logTabelle festzulegen und nach Protokolleinträgen abzufragen .

Erwägen Sie außerdem, das MySQL-Tuning-Primer-Skript von Ihrer AWS-Instanz für die Datenbankinstanz für eine allgemeine Leistungsanalyse auszuführen, um festzustellen, ob eine größere Instanz aufgrund einer größeren Menge an Speicher, die für das Caching verfügbar ist, hilfreich ist, um die Belastung der Festplatte zu verringern. Das Skript wertet eine Reihe von Konfigurationsparametern und Leistungsindikatoren aus, um Informationen zu möglichen Engpässen und allgemeine Empfehlungen zu erhalten.

the-wabbit
quelle
5
Es ist erstaunlich, wie leicht wir Menschen versehentlich Computer dazu bringen können, absurd viel Arbeit zu leisten. Sie müssen immer zurückgehen und messen, um sicherzustellen, dass Sie die Maschine nicht versehentlich dazu gezwungen haben, etwas erstaunlich Dummes zu tun. (Ich habe einmal die Leistung eines bereitgestellten realen Systems in weniger als zehn Minuten um 40% verbessert (ohne die Zeit zum Einrichten eines profilierten Builds zu zählen), indem ich einen &zu seinem Code hinzugefügt habe . Es ist klar, dass niemand jemals ein Profil erstellt hat.)
David Schwartz