在 EC2 實例上以極規律的時間間隔被盜的高 CPU%
我在執行一些網站**的 AWS 上有一個 m1.small EC2 實例。**我注意到我的 CPU 使用率每隔 30 分鐘(0:06、0:36、1:06,…)定期出現峰值。
我檢查了我的 crons(我有很多),沒有人每 30 分鐘執行一次。看著
top
我注意到峰值大約 1 分鐘長,並且幾乎完全由***“被盜 CPU”(%st)***組成。我已經讀過 Amazon VM 管理程序竊取了 CPU 時間,但我不明白為什麼會發生這種情況(發生這種情況時我沒有執行 CPU 密集型的東西)以及為什麼它恰好每 30 分鐘一次。你有什麼線索嗎?我應該購買更大的實例嗎?我希望不會,因為其餘時間 CPU 非常低,平均負載 永遠不會超過 0.5 ……
根據 EC2 實例類型和底層硬體,您可能不會為訪問所有底層 CPU 週期付費。如果您要求 m1.small 與舊的慢速 CPU 相當,亞馬遜不會讓您使用 100% 的現代快速 CPU。
在 EC2 上,竊取不依賴於其他虛擬機鄰居的活動。這只是 EC2 確保您獲得的 CPU 週期不會超過您所支付的費用的問題。
如果您的 m1.small 獲得 50% 的底層更快 CPU,那麼對於您使用的每一位 CPU,您將看到另一個相等的百分比被標記為竊取。
如果 EC2 讓您認為您的真正可用 CPU 是“100%”,而不是用您無法訪問的其他 CPU 來取笑您,然後告訴您當您使用它時無法擁有它,那就太好了嘗試使用 CPU,但鑑於目前的 VM 和主機設置,這就是它的工作方式。
與底層硬體上的 CPU 速度相比,m1.small 實例可能會顯示出很高的竊取率,因為它們可以訪問的 CPU 價格有限。
如果您擔心此特定實例可能在 EC2 方面出現問題,您可以停止/啟動它以將其移動到新硬體(我的文章關於此),看看是否有所作為。當然,如果竊取百分比下降,它可能只是表明您已經轉移到較慢的硬體 CPU。
至於每 30 分鐘的活動,那是您伺服器上的軟體。它可能是系統 cron 作業,也可能由守護程序(後台程序)觸發。