Was bedeutet IOPS (Amazon EBS) in der Praxis bedeuten?
Habe ich einige Bilder für eine app. Es gibt viele Bilder (mit 50.000+), aber die Allgemeine Größe ist klein (40 Mb). Zunächst, ich dachte, ich würde verwenden Sie einfach den S3, aber es ist quälend langsam zum hochladen. Als temporäre Lösung, ich wollte anfügen, EBS, die die Bilder enthält-und das wäre in Ordnung. Allerdings, ein wenig Lesen über EBS General Purpose (gp2), bemerkte ich die folgende Beschreibung:
GP2 ist die Standard-EBS-volume-Typ für Amazon EC2-instances. Diese
volumes werden unterstützt von solid-state-Laufwerke (SSDs) und sind geeignet für eine
breites Spektrum an Transaktions-workloads, einschließlich dev/test
Umgebungen mit niedriger Latenz interaktive Anwendungen und boot-volumes.
GP2 ist so konzipiert, bieten einstelligen Millisekunden-Latenzzeiten, liefern
konsistent baseline-Leistung von 3 IOPS/GB zu einem Höchstbetrag von 10.000
IOPS und bis zu 160 MB/s Durchsatz pro Lautstärke.
Ist es, dass 3 IOPS/GB Menge, die ist beunruhigend mich. Was bedeutet das in der Praxis? Angenommen, Sie müssen eine e-commerce-Website für eine kleine Anzahl von Benutzern (z.B. < 10.000 Anfragen pro minute) und diese Bilder abgerufen werden müssen. Amazon beschreibt wie IOPS gemessen:
Beim kleinen I/O-Vorgänge sind physisch zusammenhängend, Amazon EBS
versuche, verschmelzen Sie in einem einzigen I/O bis zu der maximalen Größe. Für
Beispiel für die SSD-volumes, eine single von 1.024 KiB-I/O-operation zählen würde
4 Operationen, während 256 I/O-Operationen bei 4 KiB jeder würde zählen
256 Operationen.
Bedeutet das eigentlich, dass wenn ich empfangen will 50 Bilder von 10kB jeder in unter einer Sekunde, ich würde verlangen, dass 50 IOPS und leicht über dem Ausgangswert von 3 IOPS?
UPDATE:
Vielen Dank an Mark B ' s Vorschlag, ich war in der Lage zu verwenden, S3 hochladen meiner Dateien. Aber ich bin immer noch erstaunt über die Menge an IOPS benötigt, um Allgemeine Aufgaben auszuführen wie das laufen einer Datenbank oder mit anderen Dateien, die für eine web-Anwendung. Ich wäre froh zu hören, einige Referenzwerte bezüglich der minimalen Werte des IOPS basierend auf Ihren Erfahrungen.
- Ich fand diese AWS-talk youtube.com/watch?v=OuyUbvtgfDk sehr nützlich für das Verständnis, wie EBS Leistung arbeiten
- Toll. Ich werde einen Blick. Danke.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Fehlt der "/GB" Teil dieser Aussage zu. Die Grundlinie ist 3 IOPS pro GB. Wenn Ihr EBS-volume 100 GB, dann hätten Sie eine Basislinie von 300 IOPS. Für eine GP2-EBS-Datenträger, den Sie haben, um mehrere, die Größe von 3, um die IOPS.
Beachten Sie, dass alle GP2-Volumen unter 1 TB ist auch in der Lage zu Bersten bis zu 3.000 IOPS, also keine begrenzte Erhöhungen der IO soll immer noch eine sehr gute Leistung.
Außerdem will ich hinzufügen, dass S3 klingt wie eine bessere Passform für Ihren Anwendungsfall. Wenn Sie sehen, langsamen upload-Geschwindigkeit auf S3, das ist ein problem, das gelöst werden kann. Sie können CloudFront zu bieten nächstgelegenen edge-Standort, die Sie hochladen können.
Meiner Erfahrung uploads für S3 sind nie langsamer als uploads, um eine EC2-Instanz, die Ihre EBS-Volumen wäre angebracht.
Update:
Zur Beantwortung Ihrer weiteren Frage, die minimale IOPS benötigt werden, hängen von vielen Variablen wie die Größe des verfügbaren Arbeitsspeichers, die Art der Anwendung, die Sie ausführen, wie gut die Anwendung caches Werte im Speicher, die Durchschnittliche Größe der IO-Operationen, etc. Es ist wirklich schwer zu pin-down, eine genaue Zahl und Staat, die Sie benötigen, genau X IOPS für eine Anwendung.
Müssen Sie auch Bedenken, dass jeder Lautstärke unter 1 TB in der Größe können noch burst bis zu 3000 IOPS für mehrere Sekunden. Also selbst, wenn Ihre Anwendung hohe IOPS, wenn es verwendet wird, wenn es nicht viel zu sehen, die Nutzung der IOPS-burst-Funktion könnte alles sein, was es einmal braucht.
In der Regel ich in der Regel beginnen Sie mit etwas wie eine 100-GB-volume mit 300 IOPS und testen Sie die Leistung von meine app gegen die. Ein web-server läuft komplett in RAM kann nie brauchen mehr als das. Für so etwas wie eine Datenbank, die Sie würde wahrscheinlich beginnen mit der Menge an Speicherplatz Sie denken, Sie brauchen, und dann beginnen, performance-Tests. CloudWatch wird der Betrag von IOPS, die Ihre Anwendung verwendet, und wenn Sie sehen, dass es maximal an die Grenzen Ihrer Lautstärke dann würden Sie wissen, Sie brauchen, um erhöhen die verfügbare IOPS. Spülen und wiederholen, bis Sie nicht mehr max aus den verfügbaren IOPS während Ihrer performance-tests.
@Mark B ' s Antwort ist vermutlich richtig, dass es Punkte aus Ihrem IOPs basierend auf der Größe Ihrer EBS-Datenträger. Für das, was Sie wollen, S3 ist die beste option.
Aber je nach Anwendungsfall und Anforderungen, EBS erforderlich sein kann. Dies gilt insbesondere, wenn Sie ausführen möchten, in einer Datenbank. In diesem Fall haben Sie ein paar Optionen.
Erhalten Sie Bereitgestellte IOPS - wenn Sie wissen, Sie brauchen 5000 IOPS, sondern müssen nur sagen, 100 GB Speicherplatz (was mit gp2-normalerweise versorgen Sie mit rund 300 IOPS), die Sie verwenden können, io1 Bände. Es gibt eine zusätzliche Kosten für diese, und werden Sie wollen, stellen Sie sicher, dass es an einer EBS-optimierte instance, Sie können aber bis zu 20k IOPS, wenn nötig.
Wenn Sie tun eine Menge sequenzielle Lesevorgänge (das Lesen in einem großen data-set?) dann gibt es eine neue Art der EBS, st1. Das ist gut für die 500MB/s, und ist weniger als 1/2 die Kosten der gp2.
Schließlich gibt es ein anderes Szenario, das Sie in Betracht ziehen könnte (sagen, du bist ein bisschen ein verrückter, und versuchen wollen, tun seltsame Dinge). Wenn Sie können, schnappen Sie sich ein Archiv von irgendwo, und alles, was Sie interessiert, ist, welche ihn bis aus einer eigentlich (fast file system, können Sie legen Sie auf eine Instanz, die instance-Speicher. Dies ist eine lokal angeschlossene SSD, so ist es sehr schnell. Der einzige Nachteil ist, dass, wenn die Instanz beendet, Sie Daten verschwunden sind.
Um Ihre Adresse zu aktualisieren, "wie viele IOPS benötigen Sie für eine Datenbank", die Antwort ist "es hängt". Jede Datenbank-engine hat andere Anforderungen, und jeder Nutzung der Datenbank hat unterschiedliche Nutzungsmuster. Werfen Sie einen Blick auf diese wenn Sie mehr Informationen möchten. Aber im Grunde, test & monitor. Wenn Sie besorgt sind, über die Bereitstellung zu starten und zu skalieren nach Bedarf. Oder nehmen Sie eine Vermutung, und erhöhen, wenn Sie laufen in Probleme - ist es wichtiger, die Kosten zu minimieren, oder eine gute Leistung für die Endbenutzer?