Knowledge Center Monthly Newsletter - March 2025
Stay up to date with the latest from the Knowledge Center. See all new and updated Knowledge Center articles published in the last month and re:Post’s top contributors.
Wie behebe ich die erhöhte CPU-Auslastung in meinem selbst entworfenen ElastiCache für Redis Cluster?
Lesedauer: 5 Minute
0
Ich möchte die erhöhte CPU-Auslastung in meinem selbst entworfenen Amazon ElastiCache für Redis Cluster beheben.
Kurzbeschreibung
Im Folgenden finden Sie Amazon-CloudWatch-CPU-Metriken für ElastiCache für Redis:
- EngineCPUUtilization: Meldet die CPU-Auslastung für den Redis-Engine-Thread. Redis ist Singlethread-fähig. Es hat sich bewährt, die EngineCPUUtilization-Metrik für Knoten mit vier oder mehr vCPUs zu überwachen.
- CPUUtilization: Gibt den Prozentsatz der CPU-Auslastung für den Host an. Verwenden Sie für kleinere Knoten mit zwei oder weniger vCPUs die CPUUtilization-Metrik, um die Cluster Workload zu überwachen.
Behebung
Problembehandlung bei hoher EngineCPUUtilization
Um hohe EngineCPUUtilization zu beheben, überprüfen Sie Folgendes:
- Befehle mit langer Laufzeit, die viel CPU-Zeit verbrauchen: Befehle mit hoher Zeitkomplexität wie keys, hkeys und hgetall verbrauchen viel CPU-Zeit. Um die Zeitkomplexität eines Befehls und Leistungsvorschläge zu überprüfen, siehe Befehle auf der Redis-Website. Wenn Sie Lua-Skripte verwenden, werden alle Serveraktivitäten während der Laufzeit blockiert und jegliche EngineCPUUtilization steigt. Lua-Skripte werden von den Befehlen EVAL und EVALSHA Redis verwendet. Weitere Informationen finden Sie unter Scripting with Lua, EVAL und EVALSHA auf der Redis-Website. Verwenden Sie Redis SLOWLOG, um nach lang laufenden Befehlen oder Lua-Skripten zu suchen.
- Eine hohe Anzahl von Anfragen: Überprüfen Sie die Befehlsstatistiken, um Befehlsspitzen oder erhöhte Latenz zu identifizieren. Verwenden Sie CloudWatch-Metriken wie GetTypeCmds oder HashBasedCmds, um Befehlsstatistiken zu überprüfen. Oder verwenden Sie den Befehl Redis INFO. Weitere Informationen finden Sie unter INFO auf der Redis-Website. Wenn Sie eine hohe Anzahl von Anfragen haben und die Workload Ihrer Anwendung erwartungsgemäß ist, skalieren Sie den Cluster.
- Sicherung und Replikation: Wenn eine Sicherung oder Replikation stattgefunden hat, überprüfen Sie die SaveInProgress-Metrik. Diese binäre Metrik zeigt 1 an, wenn eine Speicherung im Hintergrund (gegabelt oder nicht gegabelt) läuft, und 0, wenn keine Speicherung im Hintergrund läuft. Stellen Sie sicher, dass genügend Speicher vorhanden ist, um einen Redis Snapshot zu erstellen.
- Hohe Anzahl neuer Verbindungen: Eine hohe Anzahl neuer Client-Verbindungsanfragen in einem kurzen Zeitraum kann zu einer Erhöhung der EngineCPUUtilization führen. Bewährte Methoden für den Umgang mit einer großen Anzahl von Verbindungen finden Sie unter Best practices: Redis clients and Amazon ElastiCache for Redis. Für Redis 6.2 und neuer wurden Leistungsverbesserungen implementiert. Weitere Informationen finden Sie unter ElastiCache für Redis 6.2 (erweitert).
- Hohe Anzahl von Schlüssel-Bereinigungen: Redis bereinigt Schlüssel basierend auf dem Parameter maxmemory-policy. Bereinigungen erfolgen, wenn der Cache nicht über genügend Speicher für neue Daten verfügt. Wenn das Bereinigungsvolumen hoch ist, verwendet Redis mehr CPU-Ressourcen, um die Schlüssel zu bereinigen, und die EngineCPUUtilization steigt. Verwenden Sie die CloudWatch-Metrik Bereinigungen, um das Bereinigungsvolumen zu überwachen. Wenn das Bereinigungsvolumen hoch ist, verwenden Sie einen größeren Knotentyp oder fügen Sie weitere Knoten hinzu, um den Cluster zu skalieren.
- Hohe Anzahl von Rückgewinnungen: Um Speicherplatz freizugeben, testet Redis alle Schlüssel und löscht die, deren Timeout-Ablauf erreicht ist. Dieser Vorgang wird Rückgewinnung genannt. Bei einer hohen Anzahl von Ablaufereignissen können CPUUtilization und EngineCPUUtilization zunehmen. Um die Anzahl der Schlüsselablaufereignisse zu überwachen, verwenden Sie die CloudWatch-Metrik **Reclaimed.**Es hat sich bewährt, sicherzustellen, dass nicht zu viele Schlüssel gleichzeitig ablaufen. Um sicherzustellen, dass Ihre Schlüssel in verschiedenen Zeitfenstern ablaufen, verwenden Sie den Befehl EXPIREAT oder legen Sie andere TTL-Werte für Ihre Schlüssel fest. Weitere Informationen finden Sie unter EXPIREAT auf der Redis-Website.
Problembehandlung bei hoher CPUUtilization
Um Probleme mit hoher CPUUtilization zu beheben, überprüfen Sie Folgendes:
- Hoher Netzwerkverkehr oder hohe Anzahl von Verbindungen: Ein hoher Netzwerkverkehr oder eine hohe Anzahl von Netzwerkverbindungen können zu einer erhöhten CPUUtilization auf Amazon ElastiCache Redis führen. Um nach hohem Netzwerkverkehr oder einer hohen Anzahl von Verbindungen zu suchen, überprüfen Sie die CloudWatch-Metriken NewConnections, NetworkBytesIn, NetworkBytesOut, NetworkPacketsIn und NetworkPacketsOut.
- Asynchrone I/O, die von anderen Threads verarbeitet wird: Für unterstützte Knotentypen ist Enhanced I/O so konzipiert, dass Netzwerk-I/O auf dedizierten Threads verarbeitet wird. Außerdem wird für Redis Version 6.2 und neuer TLS-Offloading unterstützt, sodass ElastiCache für Redis TLS-Operationen an den I/O-Threads ausführen kann. TLS-Operationen verwenden den zusätzlichen CPU-Kern, der in Knoten verfügbar ist, und diese zusätzliche CPU-Auslastung kann zu einer erhöhten **CPUUtilization führen.**Weitere Informationen finden Sie unter Amazon ElastiCache performance boost with Amazon EC2 M5 and R5 instances.
- Kontinuierliche verwaltete Wartung und Serviceupdates: Wartung und Serviceupdates erfordern Rechenkapazität und können zu einer erhöhten CPUUtilization führen. Vergewissern Sie sich, dass Sie beim Wartungsfenster nachsehen, ob die Erhöhung der CPUUtilization gleichzeitig auftritt. Es hat sich bewährt, das Wartungsfenster auf einen Zeitraum mit geringer Nutzung einzustellen. Weitere Informationen finden Sie auf der Hilfeseite für verwaltete Wartung und Serviceupdates von Amazon ElastiCache.
- Hohe Auslagerung und Betriebszeiten: Ungenügender Speicher auf dem Knoten kann dazu führen, dass der Kernel den Speicher auslagert, um ihn auszutauschen. Diese Aktion kann zu Leistungseinbußen führen. Wenn die Auslagerung übermäßig ist, kann die CPUUtilization zunehmen. Wenn die Belastung des Knotens bei Vorgängen wie Backup oder Skalierung hoch ist, kann sich die CPUUtilization ebenfalls erhöhen. Weitere Informationen finden Sie unter Monitoring best practices with Amazon ElastiCache for Redis using Amazon CloudWatch.

AWS OFFICIALAktualisiert vor 10 Monaten
Relevanter Inhalt
- AWS OFFICIALAktualisiert vor 9 Monaten
- AWS OFFICIALAktualisiert vor 10 Monaten
- AWS OFFICIALAktualisiert vor 10 Monaten