本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
管理 Amazon 如何GameLift啟動遊戲伺服器
您可以設定受管 EC2 叢集的執行階段組態,以便在每個執行個體執行多個遊戲伺服器處理序。這樣可以更有效地使用您的託管資源。
機群如何管理多個程序
Amazon GameLift 使用叢集的執行階段組態來判斷每個執行個體上要執行的程序類型和數目。執行階段組態至少包含一個代表一個遊戲伺服器可執行檔的伺服器處理序組態。您可以定義其他伺服器處理序組態,以執行與您的遊戲相關的其他類型的處理序。每個伺服器程序組態都會包含以下資訊:
-
遊戲建置中可執行檔的檔案名稱和路徑。
-
(選用) 啟動時要傳遞至程序的參數。
-
要同時執行的處理序數目。
當叢集中的執行個體啟動時,會啟動執行階段設定中定義的一組伺服器處理序。通過多個流程,Amazon GameLift 錯開了每個流程的啟動。伺服器處理序的壽命有限。當它們結束時,Amazon 會GameLift啟動新程序,以維護執行時期組態中定義的伺服器處理序數量和類型。
您可以透過新增、變更或移除伺服器程序組態,隨時變更機群的執行時間組態。每個執行個體都會定期檢查叢集執行階段設定的更新,以實作變更。以下是亞馬遜如何GameLift採用運行時配置更改:
-
執行個體會傳送要求給 Amazon,以GameLift取得最新版本的執行階段組態。
-
執行處理會比較其使用中處理作業與最新的執行階段組態,然後執行下列動作:
-
如果更新的執行階段組態移除伺服器處理作業類型,則此類型的作用中伺服器處理作業會繼續執行,直到結束為止。執行個體不會取代這些伺服器處理序。
-
如果更新的程式實際執行組態減少伺服器處理作業類型的並行處理作業數目,則此類型的多餘伺服器處理作業會繼續執行,直到結束為止。執行個體不會取代這些多餘的伺服器處理序。
-
如果更新的執行階段設定新增伺服器處理序類型或增加現有類型的並行處理程序,則執行個體會啟動新的伺服器處理序,最多可達 Amazon 的GameLift最大值。在此情況下,執行個體會在現有處理序結束時啟動新的伺服器處理序。
-
針對多個程序最佳化叢集
若要在叢集上使用多個程序,請執行下列動作:
-
建立包含您要部署到叢集的遊戲伺服器可執行檔的組建,然後將組建上傳到 Amazon GameLift。組建中的所有遊戲伺服器都必須在相同的平台上執行,並使用 Amazon GameLift Server SDK。
-
使用一或多個伺服器程序組態建立執行時間組態和多個並行程序。
-
將遊戲用戶端與 AWS SDK 版本整合。
若要最佳化叢集效能,建議您執行下列動作:
-
處理伺服器處理序關閉案例,讓 Amazon GameLift 能有效率地回收處理程序。例如:
-
在調用伺服器 API 的遊戲伺服器程式碼中新增關閉程序
ProcessEnding()
。 -
在遊戲伺服器程式碼
OnProcessTerminate()
中實作回呼函式,以處理來自 Amazon 的終止請求GameLift。
-
-
確保 Amazon GameLift 關閉並重新啟動狀態不良的伺服器處理序。GameLift透過在遊戲伺服器程式碼中實作
OnHealthCheck()
回呼函數,將健康狀態回報給 Amazon。Amazon GameLift 會自動關閉連續三個報告中報告狀況不良的伺服器處理序。如果您沒有實作OnHealthCheck()
,Amazon 會GameLift假設伺服器處理序正常,除非程序無法回應通訊。
選擇每個執行個體的處理序數
決定要在執行環境上執行的並行處理作業數目時,請記住下列事項:
-
Amazon 將每個執行個體GameLift限制為同時處理序的最大數量。叢集伺服器處理序組態的所有並行處理序總和不得超過此配額。
-
為了維持可接受的效能等級,Amazon EC2 執行個體類型可能會限制可同時執行的程序數量。針對您的遊戲測試不同的設定,找出適合您偏好執行個體類型的正確處理程序數目。
-
Amazon 執行的並行處理程序不GameLift會超過設定的總數。這意味著從先前的運行時配置轉換到新配置可能會逐漸發生。