So wählen Sie die optimale EC2-Instanzgröße für Spitzenleistung aus

Wählen Sie eine EC2-Instanzgröße, indem Sie die CPU-, Speicher-, Speicher-, Netzwerk- und Kostensignale Ihrer Workload mit den AWS-Instanzfamilien abgleichen.

So wählen Sie die optimale EC2-Instanzgröße für Spitzenleistung aus

Die Wahl der richtigen Amazon EC2-Instanzgröße ist ein Balanceakt zwischen Leistungsrisiko und verschwendeten Ausgaben. Wenn Ihre Instanz zu klein ist, wird Ihre App unter Last langsamer. Wenn sie zu groß ist, zahlen Sie für CPU-, Arbeitsspeicher- oder Netzwerkkapazität, die Ihre Workload nie nutzt.

Das Verständnis der Nuancen zwischen verschiedenen Instanzfamilien – von Allzweck- über rechenoptimierte bis hin zu speicheroptimierten – ist der erste Schritt zu einem effizienten Cloud-Ressourcenmanagement auf AWS.


1. EC2-Instanzfamilien verstehen

AWS organisiert EC2-Instanzen basierend auf ihrer primären Ressourcenzuweisung in Familien: CPU, Arbeitsspeicher, Speicher oder Netzwerk. Die Abstimmung des dominanten Ressourcenbedarfs Ihrer Workload auf die richtige Familie ist entscheidend für die Basisleistung.

A. Allzweck-Instanzen (M-, T-Familien)

Diese Instanzen bieten ein ausgewogenes Verhältnis von Rechen-, Arbeitsspeicher- und Netzwerkressourcen und sind ideal für viele Webserver, kleine bis mittlere Datenbanken und Entwicklungsumgebungen.

  • M-Familie (z. B. m6i, m7g): Bietet stabile, skalierbare Leistung für ausgewogene Workloads.
  • T-Familie (z. B. t3, t4g): Dies sind burstable Instanzen. Sie bieten ein Basisniveau an CPU-Leistung, können aber bei Bedarf über dieses Basisniveau hinausgehen und CPU-Guthaben nutzen. Sie eignen sich hervorragend für Workloads mit variablen Verkehrsmustern, wie z. B. Webanwendungen mit geringem Datenverkehr oder Hintergrunddienste, die keine dauerhaft hohe CPU benötigen.

Tipp für T-Instanzen: Überwachen Sie Ihr CPU-Guthaben genau. Wenn Ihrer Instanz ständig das Guthaben ausgeht, wird sie auf ihre Basisleistung gedrosselt. In diesem Fall sollten Sie zu einer Instanz der M-Familie migrieren.

B. Rechenoptimierte Instanzen (C-Familie)

Wenn Ihre Anwendung CPU-intensiv ist – wie z. B. leistungsstarke Webserver, Batchverarbeitung, Videokodierung oder wissenschaftliche Modellierung – bietet die C-Familie (c6i, c7g) das beste Preis-/Leistungsverhältnis für Rechenleistung.

C. Speicheroptimierte Instanzen (R-, X-Familien)

Diese sind für speicherintensive Aufgaben konzipiert, wie z. B. große relationale Datenbanken, In-Memory-Caches (wie Redis oder Memcached) und leistungsstarke Analyse-Engines, die schnellen Zugriff auf große Datensätze erfordern.

  • R-Familie (z. B. r6i, r7a): Hohes Verhältnis von Arbeitsspeicher zu vCPU.

D. Speicheroptimierte Instanzen (I-, D-Familien)

Wird für Workloads verwendet, die einen sehr hohen, sequenziellen Lese-/Schreibzugriff auf sehr große Datensätze auf lokalem Speicher erfordern, wie z. B. NoSQL-Datenbanken (Cassandra, MongoDB) oder Data-Warehousing-Anwendungen.


2. Analysieren Sie Ihre Workload-Anforderungen

Um die richtige Größe innerhalb der gewählten Familie auszuwählen, müssen Sie quantifizieren, was Ihre Anwendung tatsächlich benötigt. Dies beinhaltet in der Regel die Überwachung wichtiger Leistungsindikatoren (KPIs) in Ihrer vorhandenen Umgebung oder während des Auslastungstests.

A. CPU-Auslastungsanalyse

Stellen Sie fest, ob Ihre Anwendung CPU-gebunden ist. Eine hohe anhaltende CPU-Auslastung (durchgehend über 70-80 %) zeigt an, dass Sie mehr Rechenleistung benötigen. Überwachen Sie bei burstable Workloads die durchschnittliche CPU-Auslastung im Verhältnis zur CPU-Guthabennutzung.

Handlungsschritt: Wenn Ihre Zielumgebung eine dauerhafte Anwendung ist (wie ein primäres API-Gateway), vermeiden Sie T-Instanzen und wählen Sie eine stabile Familie wie M oder C.

B. Speicherverbrauch (RAM)

Arbeitsspeicher ist oft der Engpass für Anwendungen wie Java-Anwendungen oder große Caches. Wenn Sie übermäßiges Swapping oder Paging (Verwendung von Festplattenspeicher als virtuellen Arbeitsspeicher) beobachten, hat Ihre Instanz zu wenig Arbeitsspeicher.

Wichtige Metrik: Messen Sie den Prozentsatz des RAM, der von der Anwendung unter Spitzenlast aktiv genutzt wird. Wählen Sie eine Instanz, deren Verhältnis von Arbeitsspeicher zu vCPU mit den Anforderungen Ihrer Datenbank oder Caching-Software übereinstimmt (z. B. R-Familie, wenn Arbeitsspeicher von größter Bedeutung ist).

C. Speicher- und E/A-Anforderungen

Wenn Ihre Anwendung häufig auf die Festplatte liest oder schreibt (z. B. transaktionale Datenbanken), konzentrieren Sie sich auf Eingabe-/Ausgabeoperationen pro Sekunde (IOPS) und Durchsatz, nicht nur auf die lokale Festplattengröße.

  • Instanzspeicher (ephemer): Einige Instanzen (wie die I-Familie) bieten leistungsstarken lokalen NVMe-Speicher. Dies ist hervorragend für temporäre Daten, geht aber beim Stoppen/Beenden verloren.
  • Elastic Block Store (EBS): Für persistenten Speicher stellen Sie sicher, dass der Instanztyp die erforderlichen EBS-Volumen-Leistungsstufen unterstützt (z. B. gp3 vs. io2 Block Express).

D. Netzwerkbandbreite

Für Anwendungen, die erhebliche Datenmengen übertragen (z. B. Medienverarbeitung, groß angelegtes Daten-Streaming), wird der Netzwerkdurchsatz kritisch. Viele moderne Instanzen unterstützen Enhanced Networking (ENA), aber die maximal erreichbare Bandbreite skaliert mit der Instanzgröße.

  • Tipp: Kleinere Instanzen haben oft eine begrenzte Netzwerkbandbreite. Überprüfen Sie bei Anwendungen mit hohem Durchsatz immer die Netzwerkleistungsspezifikation.

3. Größenstrategie: Vom Test zur Produktion

Der Größenbestimmungsprozess sollte iterativ und datengesteuert sein.

Schritt 1: Erstellen Sie eine Basislinie mit einer kleinen Instanz

Fangen Sie klein an, oft mit einer m6g.large oder einer gleichwertigen Instanz in Ihrer gewählten Familie. Stellen Sie Ihre Anwendung bereit und führen Sie standardisierte Auslastungstests durch, die den erwarteten Spitzenverkehr nachahmen.

Schritt 2: Identifizieren Sie Engpässe und skalieren Sie vertikal

Verwenden Sie CloudWatch-Metriken (CPU-Auslastung, Speicherauslastung, Netzwerk ein/aus, Festplatten-Lese-/Schreib-IOPS), um die Einschränkung zu finden.

Gefundener Engpass Empfohlene Aktion Zielfamilie/Größensteigerung
Hohe CPU % Mehr Rechenleistung erforderlich Wechsel zur nächstgrößeren Größe oder einer C-Familien-Instanz.
Hoher Speicher % Mehr RAM erforderlich Wechsel zur nächstgrößeren Größe, möglicherweise einer R-Familien-Instanz.
Hohe EBS-Latenz Speicher ist langsam Erhöhen Sie die EBS-Volumenleistung oder wechseln Sie zu einer I/Familien-Instanz, wenn lokaler Speicher erforderlich ist.

Schritt 3: Beispiele für vertikale Skalierung

Wenn Sie mit einer m6i.xlarge (4 vCPUs, 16 GiB RAM) begonnen haben und feststellen, dass Sie die doppelten Ressourcen benötigen:

  1. Vertikale Skalierung nach oben: Wechseln Sie zu m6i.2xlarge (8 vCPUs, 32 GiB RAM).
  2. Horizontale Skalierung (Best Practice): Wenn Sie einen zustandslosen Dienst ausführen, ist die bevorzugte Methode oft die Einführung von Lastausgleich und die Bereitstellung von zwei m6i.xlarge-Instanzen, was Redundanz und Skalierbarkeit bietet.

Warnung zur vertikalen Skalierung: Obwohl einfach, kann der Wechsel zu einer viel größeren Instanzgröße manchmal unerwarteten Overhead oder ein Ressourcenungleichgewicht verursachen, wenn Ihre Anwendung nicht alle neuen Ressourcen gleichmäßig nutzt. Testen Sie immer nach einem signifikanten vertikalen Sprung.

4. Nutzung von AWS Graviton-Prozessoren

Berücksichtigen Sie bei der Auswahl einer Instanz die Prozessorarchitektur. AWS Graviton-Prozessoren verwenden die Arm-Architektur und erscheinen in Familien mit einem g-Suffix, wie m7g oder c7g. Sie bieten oft ein starkes Preis-Leistungs-Verhältnis, wenn Ihr Betriebssystem, Ihre Laufzeit, Ihre Bibliotheken und Ihre Container-Images Arm unterstützen.

Wenn Ihr Stack kompatibel ist, beziehen Sie Graviton in Ihre Auslastungstests ein, anstatt davon auszugehen, dass x86 der Standard ist.

Halten Sie Right-Sizing kontinuierlich aufrecht

Die Wahl der optimalen EC2-Instanzgröße ist ein kontinuierlicher Optimierungsprozess, der von empirischen Daten gesteuert wird. Beginnen Sie damit, Ihren primären Ressourcenbedarf (CPU, Arbeitsspeicher, Speicher) mit der richtigen EC2-Familie abzustimmen. Verwenden Sie dann Überwachungstools wie CloudWatch während des Auslastungstests, um empirisch die genaue Größe innerhalb dieser Familie zu bestimmen, die erforderlich ist, um Ihre Spitzenleistungsziele zu erreichen. Indem Sie eine Überbereitstellung vermeiden und sowohl vertikale als auch horizontale Skalierungsstrategien sorgfältig testen, stellen Sie sicher, dass Ihre Anwendungen effizient und kosteneffektiv auf AWS laufen.