Ich habe einen Bericht von einem Redis-Benutzer erhalten und bin mir nicht sicher, was ich antworten soll, da ich kein Experte auf dem Gebiet von Linux und dessen Scheduler bin. Wir (als Redis-Projekt) müssen diese Art von Problemen jedoch besonders herausfinden In Zukunft werden wie bei Redis Cluster viele Redis-Instanzen gleichzeitig in einer einzigen Box ausgeführt. Also bitte ich hier um Hilfe.
Problem:
- Kernel: "Linux redis1 2.6.32-305-ec2 # 9-Ubuntu SMP Do 15. April 08:05:38 UTC 2010 x86_64 GNU / Linux"
- Viel freier Arbeitsspeicher, keine anderen Prozesse, die signifikante E / A-Vorgänge ausführen.
- Wichtig , läuft auf einer großen EC2-Instanz, nicht auf einem echten Server. Ich habe so etwas noch nie in einer nicht virtualisierten Umgebung gesehen. Die EC2-Instanz lautete: "17,1 GB Arbeitsspeicher mit hohem Arbeitsspeicher, 6,5 ECU (2 virtuelle Kerne mit jeweils 3,25 EC2-Recheneinheiten), 420 GB lokaler Instanzspeicher, 64-Bit-Plattform" .
Grundsätzlich wird das System nach dem Neustart einer großen Redis-Instanz so langsam, dass Sie nicht mehr auf der Shell tippen können. Wenn Redis eine Instanz lädt, verwendet es 100% der CPU (es lädt Daten so schnell wie möglich) und liest die dump.rdb-Datei nacheinander. Die E / A ist nicht besonders hoch, da das Laden an die CPU gebunden ist, nicht an die E / A.
Warum auf der Erde sollte eine Box mit zwei CPUs und viel RAM, keine vertauschten Dinge auf der Festplatte, grundsätzlich aufhören, mit dieser Arbeitslast zu arbeiten?
Ich habe den Eindruck, dass dies viel mit der Tatsache zu tun hat, dass es sich um eine EC2-Instanz handelt, die mit der verwendeten Virtualisierungstechnologie zusammenhängt, da ich jederzeit problemlos Redis- Datensätze mit 24 GB in meine Box lade (auch mit anderen Instanzen von Redis) Laufen mit hoher Last).
Danke für jeden Hinweis!
Salvatore
Bearbeiten : Hinzufügen von Feedback, das ich von Twitter erhalten habe:
von @ezmobius: @antirez Versuchen Sie es zuerst mit / mnt oder den lokalen kurzlebigen Laufwerken, um festzustellen, ob die EBS-Schwäche vorliegt. 2. Stellen Sie sicher, dass es nicht die "erste Schreibstrafe" ist (googeln), und wenn ja, dann Sie müssen zuerst Nullen über die Festplatte schreiben.
von @dvirsky: @antirez Ich führe viele Redis-Instanzen auf genau solchen ec2-Knoten aus. Ich habe eine gewisse Verlangsamung bei bgsave bemerkt, aber nicht dieses Phänomen.
quelle
Ich hatte das gleiche Problem bei einer EC2-Instanz. Es hat wahrscheinlich nichts mit Redis zu tun - es tritt auf, wenn ein hohes E / A-Problem vorliegt (z. B. wenn Redis eine Dump-Datei lädt).
Schauen Sie sich diesen Thread in den Amazon-Foren an: https://forums.aws.amazon.com/thread.jspa?messageID=215406
Ich habe mit verschiedenen Kerneln / Images experimentiert und jetzt läuft es einwandfrei (auf einem alten 2.6.21-Kernel).
quelle
Sie sollten den CPU-Diebstahl (
xx.x%st
auf der rechten Seite der CPU-Zeile) überprüfen, der angezeigt wird,top
wenn die 100% -Last und die eingefrorene Shell auftreten. Diebstahl gibt an, wie viel Ihrer tatsächlichen CPU-Zyklen von einem Hypervisor von Ihrem Computer gestohlen und an einen anderen Computer weitergegeben wurden. CPU-Diebstahl ist nur in virtualisierten Umgebungen relevant. Ich hatte genau das Problem mit Mikro-Instanzen, was dazu führte, dass meine Instanz bei rechenintensiven Aufgaben ungefähr eine Stunde lang (bis meine Aufgabe erledigt war) unbrauchbar wurde.Weitere Informationen zu diesem Thema finden Sie in diesem Beitrag zu Greg's Ramblings . Wenn Sie Gregs Wort nehmen, sollte dies jedoch nur auf Mikroinstanzen geschehen.
quelle