Wie man die optimale EC2-Instanzgröße für Spitzenleistung wählt

Erfahren Sie, wie Sie systematisch die perfekte Amazon EC2-Instanzgröße für höchste Anwendungsleistung und Kosteneffizienz auswählen. Dieser Leitfaden schlüsselt die EC2-Instanzfamilien (M, C, R, T) auf, erklärt die Analyse von CPU-, Arbeitsspeicher- und I/O-Workload-Metriken und liefert umsetzbare Schritte zum Testen und Right-Sizing Ihrer Rechenressourcen auf AWS.

32 Aufrufe

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

Die Auswahl der richtigen Größe für Ihre Amazon Elastic Compute Cloud (EC2) Instance ist möglicherweise die wichtigste Entscheidung bei der Bereitstellung einer skalierbaren, kostengünstigen und leistungsstarken Anwendung auf AWS. Die Wahl einer zu kleinen Instance führt zu Leistungsengpässen, Verlangsamungen der Anwendung und einer schlechten Benutzererfahrung. Umgekehrt führt eine Überdimensionierung zu einer erheblichen Verschwendung von Cloud-Ausgaben. Dieser umfassende Leitfaden führt Sie systematisch durch die Analyse Ihrer Workload-Anforderungen, um diese präzise auf die optimale EC2-Instance-Familie und -Größe abzustimmen. So erreichen Sie Spitzenleistung ohne unnötige Ausgaben.

Das Verständnis der Nuancen zwischen verschiedenen Instance-Familien – von Allzweck-Instances (General Purpose) über Rechenoptimierte (Compute Optimized) bis hin zu Arbeitsspeicheroptimierten (Memory Optimized) – ist der erste Schritt zu einem effizienten Cloud-Ressourcenmanagement auf AWS.


1. EC2-Instance-Familien verstehen

AWS organisiert EC2-Instances in Familien, basierend auf ihrer primären Ressourcenzuweisung: CPU, Arbeitsspeicher (Memory), Speicher (Storage) oder Netzwerk (Networking). Die Abstimmung der dominanten Ressourcenzuweisung Ihres Workloads auf die richtige Familie ist entscheidend für die Basisleistung.

A. Allzweck-Instances (General Purpose Instances) (M-, T-Familien)

Diese Instances 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-Instances. Sie bieten eine Basisleistung der CPU, können diese Basisleistung jedoch bei Bedarf mithilfe von CPU-Credits überschreiten. Sie eignen sich hervorragend für Workloads mit variablen Verkehrsmustern, wie z. B. Webanwendungen mit geringem Datenverkehr oder Hintergrunddienste, die keine konstant hohe CPU-Auslastung erfordern.

Tipp für T-Instances: Überwachen Sie Ihren CPU-Credit-Kontostand genau. Wenn Ihre Instance konstant keine Credits mehr hat, wird ihre Leistung auf das Basisniveau gedrosselt. In diesem Szenario sollten Sie auf eine Instance der M-Familie migrieren.

B. Rechenoptimierte Instances (Compute Optimized Instances) (C-Familie)

Wenn Ihre Anwendung CPU-intensiv ist – wie z. B. Hochleistungs-Webserver, Batch-Verarbeitung, Video-Kodierung oder wissenschaftliche Modellierung – bietet die C-Familie (c6i, c7g) das beste Preis-Leistungs-Verhältnis für Rechenleistung.

C. Arbeitsspeicheroptimierte Instances (Memory Optimized Instances) (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 Hochleistungs-Analyse-Engines, die einen schnellen Zugriff auf große Datensätze erfordern.

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

D. Speicheroptimierte Instances (Storage Optimized Instances) (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. Analyse Ihrer 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 typischerweise die Überwachung wichtiger Leistungsindikatoren (KPIs) in Ihrer bestehenden Umgebung oder während Lasttests.

A. Analyse der CPU-Auslastung

Stellen Sie fest, ob Ihre Anwendung CPU-gebunden ist. Eine anhaltend hohe CPU-Auslastung (konstant über 70–80 %) deutet darauf hin, dass Sie mehr Rechenleistung benötigen. Bei Burstable Workloads überwachen Sie die durchschnittliche CPU-Auslastung im Verhältnis zur Nutzung der CPU-Credits.

Umsetzbarer Schritt: Wenn Ihre Zielumgebung eine durchgängig laufende Anwendung (wie ein primäres API-Gateway) ist, vermeiden Sie T-Instances und wählen Sie eine stabile Familie wie M oder C.

B. Arbeitsspeicherverbrauch (RAM)

Der Arbeitsspeicher ist oft der Engpass für Anwendungen wie Java-Anwendungen oder große Caches. Wenn Sie übermäßiges Swapping oder Paging (Nutzung von Festplattenspeicher als virtueller Speicher) beobachten, ist Ihre Instance speicherarm (memory-starved).

Schlüsselmetrik: Messen Sie den Prozentsatz des aktiv von der Anwendung unter Spitzenauslastung genutzten RAMs. Wählen Sie eine Instance, deren Arbeitsspeicher-zu-vCPU-Verhältnis den Anforderungen Ihrer Datenbank- oder Caching-Software entspricht (z. B. R-Familie, wenn Arbeitsspeicher im Vordergrund steht).

C. Anforderungen an Speicher und I/O

Wenn Ihre Anwendung häufig auf die Festplatte liest oder schreibt (z. B. transaktionale Datenbanken), konzentrieren Sie sich auf die Input/Output Operations Per Second (IOPS) und den Durchsatz, anstatt sich nur auf die lokale Festplattengröße zu konzentrieren.

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

D. Netzwerkbandbreite

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

  • Tipp: Kleinere Instances haben oft eine begrenzte Netzwerkbandbreite. Überprüfen Sie immer die Netzwerkleistungsspezifikation, wenn Sie mit Anwendungen mit hohem Durchsatz arbeiten.

3. Dimensionierungsstrategie: Vom Test zur Produktion

Der Dimensionierungsprozess sollte iterativ und datengesteuert sein.

Schritt 1: Legen Sie eine Basislinie mit einer kleinen Instance fest

Beginnen Sie klein, oft mit einer m6g.large oder einer gleichwertigen Instance in der gewählten Familie. Stellen Sie Ihre Anwendung bereit und führen Sie standardisierte Lasttests durch, die den erwarteten Spitzenverkehr nachahmen.

Schritt 2: Engpässe identifizieren und vertikal skalieren

Verwenden Sie CloudWatch-Metriken (CPU-Auslastung, Speicherauslastung, Netzwerk In/Out, Disk Read/Write IOPS), um die Beschränkung zu finden.

Engpass gefunden Empfohlene Maßnahme Ziel-Familie/Größensteigerung
Hohe CPU-% Mehr Rechenleistung erforderlich Wechseln Sie zur nächstgrößeren Größe oder zu einer Instance der C-Familie.
Hohe Speicher-% Mehr RAM erforderlich Wechseln Sie zur nächstgrößeren Größe, möglicherweise zu einer Instance der R-Familie.
Hohe EBS-Latenz Speicher ist langsam Erhöhen Sie die EBS-Volume-Leistung oder wechseln Sie zu einer Instance der I-Familie, 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. Vertikales Hochskalieren (Vertical Scale Up): Wechseln Sie zu m6i.2xlarge (8 vCPUs, 32 GiB RAM).
  2. Horizontales Skalieren (Horizontal Scale Out) (Best Practice): Wenn Sie einen zustandslosen Dienst betreiben, ist die bevorzugte Methode oft die Einführung von Load Balancing und die Bereitstellung von zwei m6i.xlarge-Instances, was Redundanz und Skalierbarkeit bietet.

Warnung zur vertikalen Skalierung: Obwohl einfach, kann der Wechsel zu einer viel größeren Instance-Größ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 Instance die Prozessorarchitektur. Moderne AWS Graviton-Prozessoren (basierend auf der ARM-Architektur, erkennbar am Suffix 'g', z. B. m7g, c7g) bieten oft ein deutlich besseres Preis-Leistungs-Verhältnis (bis zu 40 % besser) im Vergleich zu gleichwertigen Intel/AMD-Instances, vorausgesetzt, Ihr Software-Stack unterstützt die Architektur.

Wenn Ihr Application Stack (Betriebssystem, Laufzeitumgebung, Abhängigkeiten) kompatibel ist, sollten Graviton-Instances Ihr Standardausgangspunkt für Kostenoptimierung gepaart mit hoher Leistung sein.

Fazit

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