Meine Website wird derzeit auf EC2 mit EBS-Volumen gehostet. Aber sehr oft starte ich ein Java-Programm auf derselben Instanz (die auf EBS ausgegeben wird), um Dateien für die Website zu generieren / zu aktualisieren. CPU und Arbeitsspeicher erreichen zur Laufzeit einen Spitzenwert von 100%, was dazu führt, dass meine Website entweder sehr langsam oder überhaupt nicht geöffnet wird, bis der Prozess endet. Außerdem bezahle ich für eine große Instanz den ganzen Monat, nur um dieses Java-Programm einige Male im Monat auszuführen.
Warum wird das Java-Programm nicht in lokalen & Update-Ausgabedateien auf EBS ausgeführt? Internetgeschwindigkeiten in meiner Gegend sind lächerlich.
Warum nicht in S3 ausgeben? Meine Dateien sind klein und groß im Volumen. Inakzeptable Übertragungsgeschwindigkeit zwischen EC2 und S3. Ich habe sogar versucht, s4cmd, aber die Übertragungsgeschwindigkeit ist inakzeptabel.
Warum wird dasselbe EBS-Volume nicht an zwei EC2-Instanzen angehängt? Ich denke, es ist ein Hack.
Ich möchte also zu EFS wechseln und zwei EC2-Instanzen verbinden. Eine speziell für den Betrieb der Website. Und eine weitere On-Demand-Instanz, um den Java-Prozess nur bei Bedarf auszuführen.
Meine Fragen zu EFS: 1) Kann mein Java-Programm große Dateien mit der gleichen Geschwindigkeit wie mit EBS an EFS ausgeben? 2) Amazon berechnet keine zusätzlichen Gebühren für die ausgehende EFS-Bandbreite. Ist es begrenzt?
Antworten:
Wichtiger Hinweis: Ab dem 12. Juli 2018 können Sie mit EFS einen bereitgestellten Durchsatz erwerben . Die Antwort unten gibt das Verhalten des Dienstes wieder, bevor diese Funktion verfügbar war. Zuvor waren kleine EFS-Dateisysteme leicht mit dem Datenverkehr überlastet, da die Leistung linear mit der Größe der gespeicherten Daten anstieg. Mit nur wenigen GB war die effektive Grenze für einige Anwendungsfälle, die dies nicht in Kauf nahmen, zu gering berücksichtigen.
Sie können nicht dasselbe EBS-Volume an mehrere Instanzen mounten. Sie können jedoch einen NFS-Export vom Computer mit dem EBS-Volume erstellen und diesen über das Netzwerk bereitstellen. NFS ist etablierte Technologie, kein Hack. Tatsächlich wäre dies aus Ihrer Sicht fast identisch mit der Verwendung von EFS, da EFS tatsächlich dasselbe Protokoll verwendet - NFS.
"Outbound bandwith" ist bei EFS kein genau gültiges Konzept, da der Datenverkehr ausschließlich zwischen EFS und der Instanz stattfindet , die darauf zugreift. Wenn Sie es ordnungsgemäß über den Verfügbarkeitszonen-spezifischen Endpunkt bereitstellen, verlässt der Datenverkehr zwischen EFS und den EC2-Instanzen niemals die Verfügbarkeitszone.
Wenn ein Webbrowser eine Datei herunterlädt, die sich in Ihrem EFS-Dateisystem befindet, muss sie unbedingt über eine Ihrer Instanzen heruntergeladen werden . Die ausgehende Bandbreite ist also tatsächlich EC2-ausgehend, nicht EFS-ausgehend.
Der verfügbare Durchsatz ("Bandbreite") zwischen EFS und EC2 skaliert mit der Gesamtgröße der in einem EFS-Dateisystem gespeicherten Dateien.
Es gibt jedoch eine Burst-Fähigkeit von 100 MB / s, wie klein das Dateisystem auch sein mag. Für ein 10-GB-Dateisystem können Sie 7,2 Minuten pro Tag auf 100 MB / s oder 28,8 Minuten pro Tag auf 25 MB / s stapeln.
Die Sache, die Sie mit Ihrer Schlussfolgerung übersehen, dass dies nicht ausreicht, ist der Betriebssystem-Cache. Auf Ihrem Webserver verbleiben die von EFS gelesenen Dateien möglicherweise im Cache des Betriebssystems auf diesem Computer. Dies bedeutet, dass der Webserver nach der Übermittlung einer Datei an einen Browser die Datei möglicherweise beim nächsten Download nicht mehr von EFS lesen muss, sondern kann stattdessen nur überprüfen, ob es sich nicht geändert hat und es dann aus dem Speicher an den Browser liefern. Dieses Verhalten sollte automatisch sein, sofern Sie es nicht deaktivieren.
Nicht wirklich seltsam, da die Größe der gespeicherten Daten die einzige Dimension ist, die sich auf die Preisgestaltung auswirkt. EBS-Volumes sind im Allgemeinen ähnlich - je größer das Volume, desto mehr Durchsatz in MiB / s und / oder IOPS ist von diesem Volume verfügbar.
Verwechseln Sie auch hier nicht den ausgehenden Datenverkehr Ihrer Anwendung mit dem Durchsatz des Hintergrundspeichers. Die beiden Werte sind nicht eng miteinander korreliert.
Bei kleineren Instanzen sind die Merkmale der Instanz eher der begrenzende Faktor. Beispielsweise verfügt eine t2.small-Instanz nur über eine Bandbreite von 31,25 MiB / s (250 MBit / s, 0,25 Gigabit / s), sodass die obere Leistungsgrenze nicht das Dateisystem ist.
Testen Sie Ihre Anwendung mit EFS und beobachten Sie die CloudWatch-Metriken für das Dateisystem. Jede Arbeitslast ist anders und das ist wirklich der einzige Weg, um zu wissen, ob es wie erwartet funktioniert.
quelle