2012-07-28 9 views
21

Ich habe eine Micro-EC2-Instanz mit Windows 2008 R2. Ich habe in letzter Zeit viele hohe CPU-Alarme bekommen, und wenn ich mich in die AWS-Management-Konsole einlogge, sehe ich, dass meine CPU praktisch zu 100% gekoppelt ist. Wenn ich mich jedoch bei der Instanz anmelde und den Task-Manager hochziehe, sieht meine CPU so aus, als wäre sie praktisch im Leerlauf. Ich habe den Aufgabenmanager für eine Weile offen gelassen und diesen Screenshot gemacht, der die Unterschiede zwischen der Berichterstattung von AWS und der Art, wie meine Instanz aussieht, zeigt. Vorschläge?AWS EC2 Hohe CPU-Alarme gehen aus

CPU Usage Graph (https://s3.amazonaws.com/caskerdbbucket/public/cpu.png)

PS: die Update-Geschwindigkeit auf dem Task-Manager ist auf "Low"

+0

Ich sehe das gleiche auf einer t1.micro Linux-Instanz. – Molomby

+0

Mit der Veröffentlichung von t2-Instanzen ist dies wahrscheinlich ziemlich weit fortgeschritten, da wir mehr Transparenz darüber haben, wann wir möglicherweise gedrosselt werden. –

Antwort

34

Die vom Betriebssystem ausgesetzten Daten sind oft unzureichend oder irreführend in virtualisierten Umgebungen wie Amazon EC2 und Der angegebene Prozentsatz hängt von Ihrem Instance-Typ und der zugrunde liegenden Prozessorkernauslastung ab (die normalerweise nicht mit der virtualisierten Hardware übereinstimmt, die Sie vom Hypervisor erhalten haben). Was Sie sehen, wird höchstwahrscheinlich durch die entsprechende CPU-Diebstahl verursacht Zeit heute in den meisten verwandten Unix/Linux-Monitoring-Tools ausgesetzt (aber nicht auf Windows, siehe meine Frage Is there a Windows equivalent of Unix 'CPU steal time'? für mehr zu diesem Problem) - siehe z. Spalten% stehlen oder st in sar oder top:

st - Steal Zeit
Die Menge der CPU 'gestohlen' von dieser virtuellen Maschine durch den Hypervisor für andere Aufgaben (wie zB einer anderen virtuellen läuft Maschine).

Die Blog-Post EC2 monitoring: the case of stolen CPU bietet eine schöne Erforschung und Darstellung dieses Themas:

Wenn das obere Befehl zeigt 40% CPU beschäftigt, aber Cloudwatch sagt die Server zu 100% ausgereizt ist - die Seite nimmst du? Die Antwort ist einfach (Cloudwatch korrekt ist, oben ist nicht) [...]

CPU stehlen Zeit ist besonders häufig für die EC2-Instanz Typ t1.micro Sie verwenden, die stark gedrosselten bekommen definitionsgemäß (in der Regel ~ 97% stiehlt Zeit!), Micro Instances für eine umfassende Erläuterung und Darstellung des Konzepts sehen - insbesondere Abschnitt When the Instance Uses Its Allotted Resources Staaten:

Wir erwarten, dass die Anwendung nur eine bestimmte Menge an CPU Ressourcen verbrauchen in einer Zeitperiode. Wenn die Anwendung mehr als die zugewiesenen CPU-Ressourcen Ihrer Instanz verbraucht, begrenzen wir vorübergehend die Instanz, so dass sie auf einer niedrigen CPU-Ebene arbeitet. Wenn Ihre Instanz fortsetzt, um alle zugewiesenen Ressourcen zu verwenden, verschlechtert sich die Leistung. Wir erhöhen die Zeit, in der wir den CPU-Level begrenzen, wodurch sich die Zeit erhöht, bevor die Instanz erneut platzen darf.[Hervorhebung von mir]

Dementsprechend könnten Sie die nachhaltige CPU Nutzungsprofil für Mikro Instanzen entwachsen und müssen entweder Ihre Arbeitsbelastung anzupassen oder auf eine andere Instanz Typ zu wechseln.

+0

Ausgezeichnete Antwort. Nebenbei bemerkt scheint meine Instanz jetzt wieder normal zu sein. –

2

Ich hatte das gleiche Problem und es dauerte eine lange Zeit, um eine Lösung zu finden. Im Internet habe ich meinen Fall nicht gefunden, also teile ich.

Ich entdeckte in der Ereignisliste, dass viele betrügerische Login-Versuche aufgezeichnet wurden. Der Taskmanager in dieser Situation meldete 30-40% der CPU-Auslastung (Cloud Watch 100%) und in der Prozessliste war winlogon.exe sichtbar. Nachdem ich den Remote Desktop Port geändert habe (3389 ist der Standard) hatte ich keine Probleme mehr. Die CPU-Auslastung in Cloud Watch beträgt jetzt 34-35%.

Hoffe, das hilft.