한국어English日本語简体中文繁體中文DeutschไทยTiếng ViệtРусскийPortuguês (Brasil)EspañolBahasa Indonesia

遊戲 Lag 白皮書 › L13 伺服器架構與維運

自動擴展延遲 Autoscaling lag

原因 ID in-autoscale · 主要負責 基礎設施團隊(伺服器基礎設施) · 協同 遊戲開發團隊(伺服器開發)

在含圖解與實驗的完整版中開啟卡片 →

人潮湧入時會自動增加伺服器,但準備要花幾分鐘,這段期間既有的伺服器處於過載。

為什麼 活動開始,連線急增 → 於是 新伺服器從啟動到準備好需要數分鐘 → 畫面上 活動剛開始的幾分鐘內出現慢動作、連不上

症狀
慢動作, 連不上/無限讀取
因素
停滯
誰會遇到
整個伺服器
何時
人潮湧入時, 剛登入/維護剛結束
負責單位
主要負責 基礎設施團隊(伺服器基礎設施) · 協同 遊戲開發團隊(伺服器開發)
遊戲開發團隊要做的事
分散頻道(已在擁擠頻道裡的人無法移到新伺服器),縮短新伺服器的啟動與資料載入時間。
基礎設施團隊要做的事
活動前預先擴展、準備已暖機的備用伺服器,縮減時等留下的人離開後再關閉。
數值參考
偵測到負載要 1~數分鐘(因為指標是取數分鐘的平均來看),啟動新伺服器、讀取遊戲資料、填滿快取又要數分鐘。
圖表上
剛開服或維護結束後暴增 · 執行個體數、CPU 使用率、連線等待
查看位置
把自動擴展的活動紀錄(決定擴展的時間、新執行個體開始服務的時間)疊在 CPU 使用率、連線數圖表上看。AWS 看 Auto Scaling 群組指標(要先啟用才看得到)GroupDesiredCapacity(目標台數)、GroupPendingInstances(準備中)、GroupInServiceInstances(服務中)
符合的跡象
連線急增後幾分鐘內只有目標台數與準備中的執行個體增加,既有伺服器的 CPU 貼齊上限,直到服務中的執行個體增加的時間點才緩解
不符合的跡象
新執行個體加入後仍然很慢時,是伺服器台數以外的原因(DB 等共用資源、連鎖故障)
確認方式
用基礎設施工具確認(不需要遊戲程式碼)
深入了解
自動擴展主要用在登入、閘道、副本這類只要讓新伺服器接新玩家就好的地方。縮減時也會出問題。清晨人少時縮減伺服器,如果沒等留下的人離開就關機,這些人會斷線。
實際案例
AWS 2021: AWS us-east-1 內部網路壅塞
AWS 2025: AWS us-east-1 DynamoDB DNS 事故與漫長的復原

出處

  1. Target tracking scaling policies for Amazon EC2 Auto Scaling AWS
    EC2 基本指標為 5 分鐘間隔(啟用詳細監控為 1 分鐘),要快速反應建議使用 1 分鐘以下間隔的指標
  2. Amazon CloudWatch metrics for Amazon EC2 Auto Scaling AWS
    群組指標要啟用後才會以 1 分鐘為單位發布,GroupDesiredCapacity(要維持的台數)、GroupPendingInstances(尚未開始服務的執行個體數)、GroupInServiceInstances(服務中的執行個體數)
  3. Scheduled scaling for Amazon EC2 Auto Scaling AWS
    配合可預測的負載變化,在排定的時間預先增減容量
  4. Decrease latency for applications with long boot times using warm pools AWS
    開機很久的應用程式,用預先初始化的執行個體池(warm pool)縮短擴展延遲

相關原因

同一層:L13 伺服器架構與維運

同一症狀(慢動作)在其他層的原因

查看含圖解與實驗的完整版卡片