GCE 微實例組自動縮放異常
我在 Google Cloud Platform 的一個項目中有一個託管實例組。我的實例組使用 GCP 提供的最小的預定機器 f1-micro(更多資訊:https ://cloud.google.com/compute/docs/machine-types#sharedcore )
我使用以下設置在我的實例組上啟用了自動縮放:
gcloud compute instance-groups managed set-autoscaling [my-ig] \ --region us-central1 \ --min-num-replicas=3 \ --max-num-replicas=15 \ --cool-down-period=250 \ --scale-based-on-cpu \ --target-cpu-utilization=0.9
我有一些奇怪的行為,在 cpu 使用量出現一些小/短峰值後,自動縮放器決定大規模自動縮放我的實例,然後在幾分鐘後回到原始數字。
這是我的實例組的 cpu 圖的樣子,在這個螢幕截圖中,實例組沒有自動縮放,它有 3 個實例執行我的應用程序:
對我來說,這些實例看起來不需要自動縮放,它們看起來很穩定,而且在實踐中,網站的表現非常好。
這就是Google關於這種類型的 vm 實例的說法:
f1-micro 機器類型提供突發功能,允許實例在短時間內使用額外的物理 CPU。當您的實例需要比最初分配的更多物理 CPU 時,會自動發生突增。在這些峰值期間,您的實例將機會性地利用可用的物理 CPU 突發
我的問題是:
- 鑑於每個 vm 實例都有 0.2 個共享 CPU,該圖中的這些峰值是否正常?或者即使機器很小,那些尖刺也不應該存在?
- 啟用自動縮放後,自動縮放器會在 cpu 活動的每個上升沿開始瘋狂添加實例,而實際上,如果您平均 cpu,cpu 使用率並沒有真正的峰值,只是快速穩定的小突發。
我的選擇(我認為)是:
- 使用更少的實例但更大的尺寸
使用一些堆棧驅動程序圖,將 cpu 平均為 10 分鐘(太貴了)- 禁用自動縮放並手動執行
- 修復我的程式碼中的 cpu 峰值(如果可能,以防它不是微型 VM 的正常行為)
您可能會遇到 f1-micro 實例類的突發功能(可以發送超過 100% 的實例 CPU 使用率)和Autoscaler 如何處理高 CPU 負載的組合。
在 CPU 使用率很高的期間,如果使用率接近 100%,自動縮放器估計該組可能已經嚴重過載。在這些情況下,自動縮放程序將虛擬機的數量至少增加 50% 或至少 4 個實例,以較高者為準。通常,託管實例組中的 CPU 使用率不會超過 100%。
我認為你已經很好地概述了你的選擇。我建議您檢查一下您是否可以在沒有自動縮放的情況下進行管理。
如果您的應用程序負載分佈與晝夜節律相關(夜間無流量,白天高負載),您可以半自動調整實例組大小(考慮從 cron 呼叫 GCE API/gcloud)。