View a markdown version of this page

GAMEOPS03-BP03 提早且經常載入測試 - 遊戲產業鏡頭

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

GAMEOPS03-BP03 提早且經常載入測試

負載測試是在系統上模擬真實流量的程序,以評估其可靠性和效能。

未建立此最佳實務時的曝險等級:

實作指引

負載測試是為您的資源開發效能基準和了解系統容量的關鍵因素,可以引導財務預測、架構設計、資源配置、自動化擴展組態和啟動後預先擴展活動。其他優點包括:

  • 最佳化基礎設施:資源可能過度佈建或佈建不足。了解所需的資源將可降低成本,並減少要管理的基礎設施。

  • 可擴展性準備: 某些機制和功能可讓使用者快速進入遊戲。知道何時和如何擴展可能是適當滿足增加的需求和失去玩家之間的差異。使用負載測試結果來準備具有不同擴展層級之系統閾值、警示點和關鍵警示點的 Runbook。

  • 更高品質的程式碼:例如服務之間的過度串擾、資料庫呼叫未停滯、效率低的演算法、記憶體流失和服務降級等問題,有時更容易大規模識別。

  • 行為驗證:將不同類型的失敗注入您的測試可以驗證系統的預期行為,或發現需要更正的錯誤處理問題。

理想情況下,開發人員應該在整個開發過程中的多個時間點執行負載測試,因為每個節點都可能產生不同的優勢:早些時候,他們會引導架構決策和重構工作,同時更便宜且直接地進行變更。在每次衝刺或反覆運算結束時,它們會使用最新的功能來驗證應用程式的效能。

在部署到生產環境之前,大規模負載測試模擬預期的實際使用模式,可確認系統處理生產工作負載的能力。部署之後,定期負載測試會監控系統效能,並識別一段時間內可能發生的變更或瓶頸。

若要模擬玩家流量,您需要輕量型用戶端或模擬遊戲用戶端流程並與遊戲後端交易的機器人,以模擬真實世界的玩家行為。此資料通常透過遊戲日誌和人類驅動的 QA 測試產生的資料,以及透過真實世界的有限擴展 Alpha 或 Beta 測試來擷取,其中邀請真實玩家玩遊戲的早期存取組建。

請務必在操作 Runbook 中記錄系統的行為,以協助疑難排解未來的可能故障,並保留未來負載測試可以與之比較的效能指標。也建議人類 QA 人員在載入遊戲時進行測試,因為他們可能會發現機器人無法識別且指標無法反映的問題。

AWS Fault Injection Service 是一項全受管服務,可執行故障注入實驗,以直接改善應用程式的效能、可觀測性和彈性。故障注入實驗用於混沌工程,這是透過建立破壞性事件在測試或生產環境中對應用程式施加壓力的做法,例如 CPU 或記憶體消耗突然增加、觀察系統回應的方式,以及實作改進。故障注入實驗可協助團隊建立所需的實際條件,以發現分散式系統中難以發現的隱藏錯誤、監控盲點和效能瓶頸。

實作步驟

  • 使用 Kubernetes-Bases 遊戲負載測試指南來設定分散式負載測試環境。

  • 使用提供的部署檔案,在 EKS 叢集內自訂和部署 Locust 控制和工作者 Pod,實現可擴展且可管理的負載產生。

  • 在操作 Runbook 中記錄負載測試期間的系統行為和指標,以協助未來故障診斷並建立效能基準。

  • 使用錯誤注入實驗來模擬真實世界的中斷,並發現系統效能、可觀測性和彈性方面的隱藏問題。